[ ANNOUNCEMENT ] jOOQ 3.18.33, 3.19.26, and 3.20.7 patch releases with minor improvements and bug fixes

10 views
Skip to first unread message

Lukas Eder

unread,
Sep 11, 2025, 7:31:09 AM (8 days ago) Sep 11
to jOOQ User Group

Version 3.18.33 - September 11, 2025

================================================================================


This is a 3.18 patch release with minor improvements and bug fixes



Features and Improvements

-------------------------

#18900 - Add information about the lack of thread safety in Meta implementations to Meta Javadoc

#18954 - Add Javadoc to various SPIs about an expectation for them to be side-effect free and thus cacheable

#18981 - Improve DSLContext.meta(Catalog...) and similar Javadoc to explain that these are intended to be used with generated code



Bug Fixes

---------

#18861 - Meta.getSequences() only lists sequences of current catalog in SQL Server

#18885 - HTML encoding issue in DataType Javadoc

#18890 - Bad routine code generated when using array types in H2 stored functions

#18904 - NullPointerException in various locations when another thread cancels a blocking, JDBC backed Subscription

#18908 - Base64 error when using multiset, binary column, and custom converter in MySQL

#18913 - Parser cannot handle Long.MIN_VALUE signed integer literal in rare contexts

#18916 - KotlinGenerator produces bad code when sequences reference Long.MIN_VALUE with their flags

#18921 - Cannot use Parser::parseSignedIntegerLiteral to parse BigInteger sequence flag values

#18924 - KotlinGenerator generates invalid code for sequences with BigInteger MINVALUE or MAXVALUE flags

#18930 - Avoid allocating StringBuilder in PostgresUtils::toPGObjectOrArray if not necessary

#18934 - Avoid DefaultDSLContext allocation in AbstractQueryPart::equals

#18938 - Revert to using classes instead of records for Cache.Key2 and Cache.Key3 objects

#18944 - Override FieldAlias::equals and hashCode to improve reflection cache performance

#18958 - Bad result in MariaDB when MULTISET contents contain binary data

#18964 - Wrong data type generated in DDL for VARBINARY converted as UUID type

#18968 - Bad DDL generated when attempting to CREATE TABLE with UUID column in Oracle and other dialects

#18973 - ORA-01790 when projecting NULL bind value of type BLOB in UNION ALL query

#18977 - Bad rendering of unsupported OffsetTime type in Oracle

#18986 - Avoid calling Stream::collect in Result::collect and Cursor::collect

#18997 - QOM generated equals() methods shouldn't use StringUtils::equals, but Objects::equals

#19007 - Make DefaultExecuteContext available to internals via ThreadLocal

#19012 - Change AbstractParseContext to be an AbstractLazyScope

#19021 - Regression: Wrong DDL exported by MetaImpl for MySQL DEFAULT CURRENT_TIMESTAMP columns

#19024 - Adding a DDL comment to aliased columns produces wrong SQL, or does not maintain comment after execution

#19029 - DDLDatabase and H2Database shouldn't generate VARCHAR(1000000000) for VARCHAR types without explicit length

#19038 - ALTER TABLE .. ADD FOREIGN KEY .. REFERENCES references unqualified table name when column is also added

#19042 - Correctly handle NULLS FIRST | NULLS LAST in SEEK method



Version 3.19.26 - September 11, 2025

================================================================================


This is a 3.19 patch release with minor improvements and bug fixes



Features and Improvements

-------------------------

#18899 - Add information about the lack of thread safety in Meta implementations to Meta Javadoc

#18953 - Add Javadoc to various SPIs about an expectation for them to be side-effect free and thus cacheable

#18980 - Improve DSLContext.meta(Catalog...) and similar Javadoc to explain that these are intended to be used with generated code



Bug Fixes

---------

#18860 - Meta.getSequences() only lists sequences of current catalog in SQL Server

#18864 - DuckDB code generation can't generate sequences for multiple catalogs

#18867 - DuckDB DSL.currentTime() returns NULL

#18873 - DuckDB doesn't support TIME precision

#18884 - HTML encoding issue in DataType Javadoc

#18889 - Bad routine code generated when using array types in H2 stored functions

#18903 - NullPointerException in various locations when another thread cancels a blocking, JDBC backed Subscription

#18907 - Base64 error when using multiset, binary column, and custom converter in MySQL

#18912 - Parser cannot handle Long.MIN_VALUE signed integer literal in rare contexts

#18915 - KotlinGenerator produces bad code when sequences reference Long.MIN_VALUE with their flags

#18920 - Cannot use Parser::parseSignedIntegerLiteral to parse BigInteger sequence flag values

#18923 - KotlinGenerator generates invalid code for sequences with BigInteger MINVALUE or MAXVALUE flags

#18929 - Avoid allocating StringBuilder in PostgresUtils::toPGObjectOrArray if not necessary

#18933 - Avoid DefaultDSLContext allocation in AbstractQueryPart::equals

#18937 - Revert to using classes instead of records for Cache.Key2 and Cache.Key3 objects

#18943 - Override FieldAlias::equals and hashCode to improve reflection cache performance

#18957 - Bad result in MariaDB when MULTISET contents contain binary data

#18963 - Wrong data type generated in DDL for VARBINARY converted as UUID type

#18967 - Bad DDL generated when attempting to CREATE TABLE with UUID column in Oracle and other dialects

#18972 - ORA-01790 when projecting NULL bind value of type BLOB in UNION ALL query

#18976 - Bad rendering of unsupported OffsetTime type in Oracle

#18985 - Avoid calling Stream::collect in Result::collect and Cursor::collect

#18993 - Race condition in JooqLogger leads to too many identical messages being logged, where only one is requested

#18996 - QOM generated equals() methods shouldn't use StringUtils::equals, but Objects::equals

#19006 - Make DefaultExecuteContext available to internals via ThreadLocal

#19011 - Change AbstractParseContext to be an AbstractLazyScope

#19020 - Regression: Wrong DDL exported by MetaImpl for MySQL DEFAULT CURRENT_TIMESTAMP columns

#19023 - Adding a DDL comment to aliased columns produces wrong SQL, or does not maintain comment after execution

#19028 - DDLDatabase and H2Database shouldn't generate VARCHAR(1000000000) for VARCHAR types without explicit length

#19037 - ALTER TABLE .. ADD FOREIGN KEY .. REFERENCES references unqualified table name when column is also added

#19041 - Correctly handle NULLS FIRST | NULLS LAST in SEEK method



Version 3.20.7 - September 11, 2025

================================================================================


This is a 3.20 patch release with minor improvements and bug fixes



Features and Improvements

-------------------------

#18898 - Add information about the lack of thread safety in Meta implementations to Meta Javadoc

#18947 - Add catalog support for Databricks in MetaImpl

#18952 - Add Javadoc to various SPIs about an expectation for them to be side-effect free and thus cacheable

#18979 - Improve DSLContext.meta(Catalog...) and similar Javadoc to explain that these are intended to be used with generated code

#19034 - Support ClickHouse ALTER TABLE .. ADD INDEX / DROP INDEX syntax



Bug Fixes

---------

#18859 - Meta.getSequences() only lists sequences of current catalog in SQL Server

#18863 - DuckDB code generation can't generate sequences for multiple catalogs

#18866 - DuckDB DSL.currentTime() returns NULL

#18869 - Fix throwing IntegrityConstraintViolationException in DuckDB

#18872 - DuckDB doesn't support TIME precision

#18875 - DuckDB doesn't support TIMESTAMPTZ precision

#18883 - HTML encoding issue in DataType Javadoc

#18888 - Bad routine code generated when using array types in H2 stored functions

#18896 - Invalid Require-Capability OSGi MANIFEST header in JDK 21 built artifacts

#18902 - NullPointerException in various locations when another thread cancels a blocking, JDBC backed Subscription

#18906 - Base64 error when using multiset, binary column, and custom converter in MySQL

#18911 - Parser cannot handle Long.MIN_VALUE signed integer literal in rare contexts

#18914 - KotlinGenerator produces bad code when sequences reference Long.MIN_VALUE with their flags

#18919 - Cannot use Parser::parseSignedIntegerLiteral to parse BigInteger sequence flag values

#18922 - KotlinGenerator generates invalid code for sequences with BigInteger MINVALUE or MAXVALUE flags

#18925 - PostgreSQL UDT array not deserialized correctly when embedded in multiset

#18928 - Avoid allocating StringBuilder in PostgresUtils::toPGObjectOrArray if not necessary

#18932 - Avoid DefaultDSLContext allocation in AbstractQueryPart::equals

#18936 - Revert to using classes instead of records for Cache.Key2 and Cache.Key3 objects

#18942 - Override FieldAlias::equals and hashCode to improve reflection cache performance

#18950 - Cached RecordMapper instances should cache also ConverterProvider results

#18951 - Cannot convert from user type to UnknownType error when converting nested, mapped type to itself

#18956 - Bad result in MariaDB when MULTISET contents contain binary data

#18962 - Wrong data type generated in DDL for VARBINARY converted as UUID type

#18966 - Bad DDL generated when attempting to CREATE TABLE with UUID column in Oracle and other dialects

#18969 - Wrong encoding of JSONB document contained in MULTISET using XML emulation in Db2

#18971 - ORA-01790 when projecting NULL bind value of type BLOB in UNION ALL query

#18975 - Bad rendering of unsupported OffsetTime type in Oracle

#18984 - Avoid calling Stream::collect in Result::collect and Cursor::collect

#18990 - Cache Method::getParameterTypes and Method::getGenericParameterTypes in reflection cache

#18992 - Race condition in JooqLogger leads to too many identical messages being logged, where only one is requested

#18994 - Avoid unnecessary ConverterContext allocations in jOOQ internals

#18995 - QOM generated equals() methods shouldn't use StringUtils::equals, but Objects::equals

#19005 - Make DefaultExecuteContext available to internals via ThreadLocal

#19010 - Change AbstractParseContext to be an AbstractLazyScope

#19014 - Change some AbstractLazyScope implementations to inherit their Scope::creationTime from the parent scope

#19019 - Regression: Wrong DDL exported by MetaImpl for MySQL DEFAULT CURRENT_TIMESTAMP columns

#19022 - Adding a DDL comment to aliased columns produces wrong SQL, or does not maintain comment after execution

#19027 - DDLDatabase and H2Database shouldn't generate VARCHAR(1000000000) for VARCHAR types without explicit length

#19031 - Various code generator queries fail with more recent ClickHouse server or client versions

#19036 - ALTER TABLE .. ADD FOREIGN KEY .. REFERENCES references unqualified table name when column is also added

#19040 - Correctly handle NULLS FIRST | NULLS LAST in SEEK method

Reply all
Reply to author
Forward
0 new messages