Version 3.20.11 - January 29, 2026
================================================================================
This is a 3.20 patch release with minor improvements and bug fixes
Bug Fixes
---------
#19484 - Work around DuckDB limitation where RETURNING clauses don't support bind values
#19487 - DuckDB doesn't support the ON CONFLICT .. WHERE clause, only the DO UPDATE .. WHERE clause
#19495 - Error with DuckDB DECIMAL bind value cast for large decimals
#19499 - Work around DuckDB limitation of not being able to qualify UDT arrays
#19500 - Cannot bind UDT arrays in DuckDB
#19502 - JSON parser should be able to handle non-standard JSON NaN and Infinity values
#19506 - Confusing warning about dialect version support
#19510 - DuckDB doesn't support binding lobs in ClobBinding
#19513 - DuckDBDatabase produces both identity flags and DEFAULT expression
#19517 - Multiset JSON emulation should use explicit JSON_ARRAYAGG .. ORDER BY clause where derived table ordering is unstable
#19520 - Bad DuckDB interval bind values formatting
#19522 - Bad decoding of spatial data from DuckDB database
#19525 - Bad cast type for DuckDB INTERVAL DAY TO SECOND type
#19528 - Bad date time arithmetic rendered for DuckDB DATE + INTERVAL expressions
#19535 - Optimistic locking may produce unsupported FOR UPDATE clause in DuckDB
#19538 - DuckDB NestedCollectionEmulation.JSON emulation can't nest MULTISET expressions in ROW expressions
#19541 - Add support for DuckDB TIMESTAMP_NS, TIMESTAMP_MS, TIMESTAMP_S types
#19546 - DuckDBDatabase shouldn't use INFORMATION_SCHEMA.KEY_COLUMN_USAGE.POSITION_IN_UNIQUE_CONSTRAINT
#19552 - Upgrade log4j-core dependency to mitigate CVE-2025-68161
#19559 - Error when using IS [NOT] DISTINCT FROM with LOB columns in Oracle
#19564 - Meta.getTables(Name) should allow for partially qualified lookups
#19573 - HSQLDBDatabase doesn't correctly implement includeSystemCheckConstraints when identifiers are quoted
#19580 - Bad formatting of CAST() function content
#19585 - QOM.Array should implement SimpleCheckQueryPart, and return true if there are only few elements
#19592 - SortFieldImpl should implement ComplexCheckQueryPart to delegate formatting decisions to contents
#19595 - Improve formatting of PARTITION BY and ORDER BY clauses in window functions
#19598 - SQLExceptionLoggerListener logs incorrect message about precision when truncated numeric value cannot be inserted for some other reason
#19603 - Support emulating EXCLUDED in MySQL, when used in expressions
#19607 - MULTISET returns invalid JSONB for JSON string scalar values
#19611 - Inlined JSON should be rendered as JSON literal in DuckDB
#19616 - Unable to disable generation of implicit many-to-many path methods
#19622 - jOOQ-bom pom.xml should be published using packaging=pom
Version 3.19.30 - January 29, 2026
================================================================================
This is a 3.19 patch release with minor improvements and bug fixes
Bug Fixes
---------
#19485 - Work around DuckDB limitation where RETURNING clauses don't support bind values
#19488 - DuckDB doesn't support the ON CONFLICT .. WHERE clause, only the DO UPDATE .. WHERE clause
#19496 - Error with DuckDB DECIMAL bind value cast for large decimals
#19503 - JSON parser should be able to handle non-standard JSON NaN and Infinity values
#19507 - Confusing warning about dialect version support
#19511 - DuckDB doesn't support binding lobs in ClobBinding
#19514 - DuckDBDatabase produces both identity flags and DEFAULT expression
#19518 - Multiset JSON emulation should use explicit JSON_ARRAYAGG .. ORDER BY clause where derived table ordering is unstable
#19521 - Bad DuckDB interval bind values formatting
#19523 - Bad decoding of spatial data from DuckDB database
#19526 - Bad cast type for DuckDB INTERVAL DAY TO SECOND type
#19536 - Optimistic locking may produce unsupported FOR UPDATE clause in DuckDB
#19539 - DuckDB NestedCollectionEmulation.JSON emulation can't nest MULTISET expressions in ROW expressions
#19542 - Add support for DuckDB TIMESTAMP_NS, TIMESTAMP_MS, TIMESTAMP_S types
#19553 - Upgrade log4j-core dependency to mitigate CVE-2025-68161
#19560 - Error when using IS [NOT] DISTINCT FROM with LOB columns in Oracle
#19565 - Meta.getTables(Name) should allow for partially qualified lookups
#19574 - HSQLDBDatabase doesn't correctly implement includeSystemCheckConstraints when identifiers are quoted
#19581 - Bad formatting of CAST() function content
#19586 - QOM.Array should implement SimpleCheckQueryPart, and return true if there are only few elements
#19596 - Improve formatting of PARTITION BY and ORDER BY clauses in window functions
#19599 - SQLExceptionLoggerListener logs incorrect message about precision when truncated numeric value cannot be inserted for some other reason
#19604 - Support emulating EXCLUDED in MySQL, when used in expressions
#19608 - MULTISET returns invalid JSONB for JSON string scalar values
#19612 - Inlined JSON should be rendered as JSON literal in DuckDB
#19623 - jOOQ-bom pom.xml should be published using packaging=pom
Version 3.18.37 - January 29, 2026
================================================================================
This is a 3.18 patch release with minor improvements and bug fixes
Bug Fixes
---------
#19504 - JSON parser should be able to handle non-standard JSON NaN and Infinity values
#19508 - Confusing warning about dialect version support
#19554 - Upgrade log4j-core dependency to mitigate CVE-2025-68161
#19561 - Error when using IS [NOT] DISTINCT FROM with LOB columns in Oracle
#19566 - Meta.getTables(Name) should allow for partially qualified lookups
#19575 - HSQLDBDatabase doesn't correctly implement includeSystemCheckConstraints when identifiers are quoted
#19582 - Bad formatting of CAST() function content
#19587 - QOM.Array should implement SimpleCheckQueryPart, and return true if there are only few elements
#19597 - Improve formatting of PARTITION BY and ORDER BY clauses in window functions
#19600 - SQLExceptionLoggerListener logs incorrect message about precision when truncated numeric value cannot be inserted for some other reason
#19605 - Support emulating EXCLUDED in MySQL, when used in expressions
#19609 - MULTISET returns invalid JSONB for JSON string scalar values
#19624 - jOOQ-bom pom.xml should be published using packaging=pom