Skip to content
Exposed docs1.11

Database Adapter Matrix

Latest stable Based on Exposed release 1.11.0

Choose an adapter from the execution and ownership boundary, not from SQL syntax alone. Release 1.11 contains the eight adapters below. Druid is not part of this release.

Release 1.11 database adapter map

AdapterBoundaryQuery and DDL evidenceTransaction boundaryTest pathMain limit
PostgreSQLJDBC extension typespgvector, PostGIS, tstzrange; schema via JDBC/migrationsOrdinary JDBC commit/rollbackPostgreSQL TestcontainersOptional drivers/extensions are caller-owned
MySQL 8JDBC GIS extensionJTS geometry and spatial functionsOrdinary JDBC commit/rollbackMySQL TestcontainersGIS layer, not a general connection adapter
CockroachDBPostgreSQL JDBC adapterbasic schema plus compatibility ledgerSerializable whole-block retry on 40001CockroachDB TestcontainersPostgreSQL compatibility is partial
DuckDBEmbedded JDBClocal create/insert/select; PostgreSQL-derived dialectConnection-scoped DuckDB transactionsEmbedded, no containerIn-memory DB is per connection; Flow materializes
ClickHouseJDBC OLAP adapterengine DDL, custom types/functions, batch insertAutocommit; rollback is a no-opClickHouse Testcontainers + exampleRelational constraints/upsert/returning unsupported
TrinoCoordinator JDBC adapterSELECT-first and connector-dependent DDL/DMLAutocommit; statements are not atomic togetherTrino Testcontainers memory connectorProduction connector behavior must be retested
BigQuerySQL generator + REST Query JobSELECT, basic DML/DDL, dry run, page tokensEach REST job is independentEmulator/Testcontainers + dry-run exampleNo JDBC transaction or cross-job rollback
StarRocksNarrow Connector/J smoke adapterlocal AIO DDL/insert/selectAutocommit-only wrapperStarRocks all-in-one containerNot full MySQL/production parity

PostgreSQL and MySQL extension modules keep database drivers compile-only; the application supplies the driver and optional extension libraries. CockroachDB, DuckDB, ClickHouse, Trino, BigQuery, and StarRocks expose their execution clients or drivers through the module dependency. A test container proves a release path, not that production provisioning, credentials, TLS, migrations, or topology are owned by the library.

For transactional JDBC adapters, use the JDBC module’s batch and paging patterns. DuckDB, ClickHouse, and Trino queryFlow APIs materialize the complete Iterable inside the transaction; they improve coroutine composition but are not server cursors. BigQuery toFlow is different: it follows REST page tokens and emits page by page. StarRocks 1.11 proves a single-row smoke path, so batch and paging require additional evidence.

Keep production schema changes in migrations. ClickHouse, Trino, BigQuery, and StarRocks include deliberately narrow DDL adapters; they do not promise relational feature parity. CockroachDB maintains a compatibility ledger. PostgreSQL and MySQL extension modules add types and expressions but do not install server extensions or indexes.

  1. If the request changes transactional state, begin with PostgreSQL, MySQL, or CockroachDB.
  2. If the workload is local analytical SQL, begin with DuckDB.
  3. If the target is an OLAP engine, choose its explicit adapter and accept its write/DDL boundary.
  4. If queries span catalogs, evaluate Trino and verify the production connector.
  5. If BigQuery cost validation matters, use the direct REST adapter and dry run.

Continue with OLTP vs OLAP before mixing a transactional source and analytical sink.