Version 3.16.23 - December 20, 2023
================================================================================
This is a 3.16 patch release with minor improvements and bug fixes
This is the final 3.16 patch release as 3.16 enters EOL.
Features and Improvements
-------------------------
#15795 - Offer a public Maven repository for commercial distributions (maven-install.sh and maven-deploy.sh hints)
#15859 - Deprecation log warning about <dateAsTimestamp/> should link to relevant manual section
Breaking changes
----------------
Deprecations
----------------
Bug Fixes
---------
#15717 - Possible compilation errors in generated code when column names contain double quotes
#15727 - BindingSetStatementContext should reference actual ExecuteContext, if available
#15730 - DefaultStringBinding should bind java.sql.Clob for CLOB types in Oracle MERGE statements
#15738 - Ill-formed Javadoc causes JDK 21 javadoc tool to crash
#15749 - Syntax error when from current_timestamp when precision bind value is specified for Postgres
#15765 - Compile errors of generated classes using scala 3
#15770 - JSONB inline values should be rendered using JSONB.data() not JSONB.toString()
#15773 - MiniJAXB::marshal(XMLAppendable, OutputStream) does not flush decorating writer
#15786 - Add Javadoc to the Query::bind methods indicating that they bind values in the rendered order, not the input order
#15802 - LazyVal::generatesCast should return true
#15805 - MetaImpl reports system indexes for Derby 10.16
#15853 - Compilation error in KotlinGenerator generated code for tables containing a FROM column, when <interfaces> is activated
#15856 - Accidental override when enabling <interfaces> for tables with columns X and IS_X in Kotlin
#15879 - Internal RecordDataType.getDataType() should be non-nullable for records consisting of all non-null fields
#15882 - IllegalArgumentException when calling UpdatableRecord methods on tables with embedded domains that replace their underlying fields
#15886 - Compilation error in generated code when using <embeddableDomains/> and the domain is part of a composite key
#15895 - NullPointerException when using plain SQL identity and additional column in INSERT .. RETURNING
#15904 - Incorrect ExecuteListener Javadoc regarding ExecuteListener lifecycle
#15921 - AbstractDatabase::markUsed doesn't work in some edge cases
#15930 - SnowflakeDataType is missing references to Snowflake's JDBC-internal spellings of TIMESTAMPNTZ, TIMESTAMPLTZ, TIMESTAMPTZ
#15951 - Compilation error in KotlinGenerator generated code with KeepNamesGeneratorStrategy and generated implicit join paths
#15957 - SQLite requires parenthesised DEFAULT expressions in DDL
#15962 - YugabyteDB doesn't support ALTER TABLE .. DROP CONSTRAINT IF EXISTS
Version 3.17.17 - December 20, 2023
================================================================================
This is a 3.17 patch release with minor improvements and bug fixes
Features and Improvements
-------------------------
#15794 - Offer a public Maven repository for commercial distributions (maven-install.sh and maven-deploy.sh hints)
#15858 - Deprecation log warning about <dateAsTimestamp/> should link to relevant manual section
Bug Fixes
---------
#15705 - Reactive transaction hangs when exception thrown in lambda constructing reactive flow
#15716 - Possible compilation errors in generated code when column names contain double quotes
#15726 - BindingSetStatementContext should reference actual ExecuteContext, if available
#15729 - DefaultStringBinding should bind java.sql.Clob for CLOB types in Oracle MERGE statements
#15737 - Ill-formed Javadoc causes JDK 21 javadoc tool to crash
#15740 - BatchCRUD does not update optimistic locking version and timestamp values in UpdatableRecord
#15748 - Syntax error when from current_timestamp when precision bind value is specified for Postgres
#15758 - Implicit JOIN implementation for DML is incorrect if paths navigate self joins
#15764 - Compile errors of generated classes using scala 3
#15769 - JSONB inline values should be rendered using JSONB.data() not JSONB.toString()
#15772 - MiniJAXB::marshal(XMLAppendable, OutputStream) does not flush decorating writer
#15785 - Add Javadoc to the Query::bind methods indicating that they bind values in the rendered order, not the input order
#15801 - LazyVal::generatesCast should return true
#15806 - MetaImpl reports system indexes for Derby 10.16
#15841 - Support overlapping embeddables when enabling <embeddablePrimaryKeys/>
#15852 - Compilation error in KotlinGenerator generated code for tables containing a FROM column, when <interfaces> is activated
#15855 - Accidental override when enabling <interfaces> for tables with columns X and IS_X in Kotlin
#15878 - Internal RecordDataType.getDataType() should be non-nullable for records consisting of all non-null fields
#15881 - IllegalArgumentException when calling UpdatableRecord methods on tables with embedded domains that replace their underlying fields
#15885 - Compilation error in generated code when using <embeddableDomains/> and the domain is part of a composite key
#15896 - NullPointerException when using plain SQL identity and additional column in INSERT .. RETURNING
#15903 - Incorrect ExecuteListener Javadoc regarding ExecuteListener lifecycle
#15920 - AbstractDatabase::markUsed doesn't work in some edge cases
#15929 - SnowflakeDataType is missing references to Snowflake's JDBC-internal spellings of TIMESTAMPNTZ, TIMESTAMPLTZ, TIMESTAMPTZ
#15950 - Compilation error in KotlinGenerator generated code with KeepNamesGeneratorStrategy and generated implicit join paths
#15956 - SQLite requires parenthesised DEFAULT expressions in DDL
#15961 - YugabyteDB doesn't support ALTER TABLE .. DROP CONSTRAINT IF EXISTS
Version 3.18.8 - December 20, 2023
================================================================================
This is a 3.18 patch release with minor improvements and bug fixes
Features and Improvements
-------------------------
#15784 - Add Javadoc to the Query::bind methods indicating that they bind values in the rendered order, not the input order
#15793 - Offer a public Maven repository for commercial distributions (maven-install.sh and maven-deploy.sh hints)
#15857 - Deprecation log warning about <dateAsTimestamp/> should link to relevant manual section
Bug Fixes
---------
#15704 - Reactive transaction hangs when exception thrown in lambda constructing reactive flow
#15715 - Possible compilation errors in generated code when column names contain double quotes
#15725 - BindingSetStatementContext should reference actual ExecuteContext, if available
#15728 - DefaultStringBinding should bind java.sql.Clob for CLOB types in Oracle MERGE statements
#15736 - Ill-formed Javadoc causes JDK 21 javadoc tool to crash
#15739 - BatchCRUD does not update optimistic locking version and timestamp values in UpdatableRecord
#15747 - Syntax error when from current_timestamp when precision bind value is specified for Postgres
#15757 - Implicit JOIN implementation for DML is incorrect if paths navigate self joins
#15763 - Compile errors of generated classes using scala 3
#15768 - JSONB inline values should be rendered using JSONB.data() not JSONB.toString()
#15771 - MiniJAXB::marshal(XMLAppendable, OutputStream) does not flush decorating writer
#15800 - LazyVal::generatesCast should return true
#15804 - MetaImpl reports system indexes for Derby 10.16
#15840 - Support overlapping embeddables when enabling <embeddablePrimaryKeys/>
#15851 - Compilation error in KotlinGenerator generated code for tables containing a FROM column, when <interfaces> is activated
#15854 - Accidental override when enabling <interfaces> for tables with columns X and IS_X in Kotlin
#15877 - Internal RecordDataType.getDataType() should be non-nullable for records consisting of all non-null fields
#15880 - IllegalArgumentException when calling UpdatableRecord methods on tables with embedded domains that replace their underlying fields
#15884 - Compilation error in generated code when using <embeddableDomains/> and the domain is part of a composite key
#15894 - NullPointerException when using plain SQL identity and additional column in INSERT .. RETURNING
#15902 - Incorrect ExecuteListener Javadoc regarding ExecuteListener lifecycle
#15919 - AbstractDatabase::markUsed doesn't work in some edge cases
#15928 - SnowflakeDataType is missing references to Snowflake's JDBC-internal spellings of TIMESTAMPNTZ, TIMESTAMPLTZ, TIMESTAMPTZ
#15949 - Compilation error in KotlinGenerator generated code with KeepNamesGeneratorStrategy and generated implicit join paths
#15955 - SQLite requires parenthesised DEFAULT expressions in DDL
#15960 - YugabyteDB doesn't support ALTER TABLE .. DROP CONSTRAINT IF EXISTS
Version 3.19.1 - December 20, 2023
================================================================================
This is a 3.19 patch release with minor improvements and bug fixes
Bug Fixes
---------
#15945 - jOOQ-codegen-gradle should resolve relative directories with respect to the gradle project, not the running process
#15947 - KeepNamesGeneratorStrategy generates ambiguous path names if implicitJoinPathTableSubtypes is activated
#15948 - Compilation error in KotlinGenerator generated code with KeepNamesGeneratorStrategy and generated implicit join paths
#15954 - SQLite requires parenthesised DEFAULT expressions in DDL
#15959 - YugabyteDB doesn't support ALTER TABLE .. DROP CONSTRAINT IF EXISTS
#15971 - Implicit path correlation shouldn't generate correlation predicate if correlation isn't in scope
#15973 - Regression in LiquibaseDatabase when omitting the database.liquibaseSchemaName value