Skip to content

feat(ext): add DuckDB support #451

Description

@timveil

Companion to #445 (new database support). Top modern pick from the mid-2026 research.

Why

DuckDB is the fastest-rising analytical database (DB-Engines #81#51 in a year; #4 in the Stack Overflow survey), MIT-licensed, with an official JDBC driver (org.duckdb:duckdb_jdbc, 1.5.3.0 as of May 2026). It supports real PK/FK constraints, so Bloviate's FK dependency-graph fill works as-is.

Big test-harness win: DuckDB is embedded/in-process (jdbc:duckdb: file or :memory:), so its integration tests need no Docker/TestContainers — faster CI, and it doubles as a fixture for the testing-framework work (#448).

Scope — new dialect (own support class)

  • DuckDBSupport extends AbstractDatabaseSupport with a configure() override; do the empirical DATA_TYPE/TYPE_NAME discovery first (per the feat(ext): full PostgreSQL and MySQL vendor-type support #444 method) against duckdb_jdbc.
  • Types to cover: BOOLEAN, TINYINT/SMALLINT/INTEGER/BIGINT/HUGEINT and unsigned UTINYINTUBIGINT, FLOAT/DOUBLE, DECIMAL, VARCHAR, BLOB, DATE/TIME/TIMESTAMP/TIMESTAMPTZ/INTERVAL, UUID, JSON, and the composite types LIST/ARRAY, STRUCT, MAP, ENUM, BIT. Reuse existing generators (UUIDGenerator, JsonbGenerator, array generators, BitStringGenerator); decide whether to support the composite types (STRUCT/MAP) initially or throw UnsupportedOperationException for them.
  • forProduct: add a duckdb branch + selection test.
  • Test base without TestContainers (plain JDBC URL); create_tables.duckdb.sql + fillTestTables.
  • Driver: org.duckdb:duckdb_jdbc (test scope).

Acceptance criteria

  • DuckDBSupport registered and selectable
  • Embedded (no-Docker) integration test fills a comprehensive type schema cleanly
  • Composite/unsupported types either generated or cleanly rejected
  • README "Database Support" table updated

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestjavaPull requests that update java code

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions