[ ANNOUNCEMENT ] jOOQ 3.18.32, 3.19.25, and 3.20.6 patch releases with minor improvements and bug fixes

18 views
Skip to first unread message

Lukas Eder

unread,
Aug 12, 2025, 10:45:13 AMAug 12
to jOOQ User Group

Version 3.18.32 - August 12, 2025

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


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



Features and Improvements

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

#18627 - BlobBinding and ClobBinding should fall back to byte[] and String binding if unavailable

#18735 - Add DataType::isQualifiedRecord and DataType::isUDTRecord

#18848 - Add a warning to the Query::bind Javadoc about the method not being very useful in general



Bug Fixes

---------

#18590 - Upgrade pgjdbc dependency to 42.7.7 to mitigate CVE-2025-49146

#18597 - Ad-hoc compilation of code generator shouldn't require adding jooq-codegen dependency to project, explicitly

#18602 - Wrong list of supported dialects on various IF [ NOT ] EXISTS methods

#18612 - NClobBinding doesn't correctly bind NULL values

#18615 - Inlining of large SQLDataType.NCLOB values doesn't use TO_NCLOB() in Oracle, like for large CLOB values

#18621 - NClobBinding should revert to ordinary String usage when JDBC driver doesn't support NClob

#18624 - MetaImpl doesn't return Db2 GLOBAL TEMPORARY tables

#18637 - JDBC backed MetaImpl reports Oracle GLOBAL TEMPORARY tables as ordinary tables

#18646 - Slash in name results in invalid identifier being generated using KotlinGenerator

#18649 - KotlinGenerator produces bad code when table / column identifier disambiguation clashes with special character escaping

#18652 - Bad file names generated on Windows in KotlinGenerator and ScalaGenerator when using special characters

#18657 - Compilation error in Kotlin generated code when table name contains special characters and paths are generated

#18675 - Parser cannot parse Oracle style IN, OUT modifier in procedure declarations

#18691 - PostgreSQL UDT not deserialized correctly when embedded in multiset

#18696 - Function parameter references aren't rendered with @ prefix in SQL Server, in function body

#18699 - Generated CREATE FUNCTION statement renders extra BEGIN .. END block in SQL Server

#18705 - MetaImpl should support DataType::generatedAlwaysAs property if JDBC DatabaseMetaData::getColumns can report it

#18712 - DataType.generationOption(null) shouldn't store null value, but DEFAULT value

#18721 - Bad formatting in PostgreSQL IF [ NOT ] EXISTS emulation when nested in more blocks

#18725 - Cannot place Oracle UDT in MULTISET with JSON emulation

#18731 - Settings.renderQuotedNames shouldn't affect xsi:nil attribute rending in MULTISET XML emulation

#18741 - Code generator does not apply DataType.GEOMETRY to PostgreSQL materialized view

#18752 - Formatting problem in generated Kotlin UDTs

#18756 - Insert::$updateSet doesn't replace the SET clause, but appends to it

#18765 - Parser fails to parse T-SQL query with TOP and quoted identifiers, when Settings.parseDialect is set to DEFAULT

#18790 - XMLDatabase has O(N^2) complexity in column / attribute / parameter lookups

#18811 - Procedural IF a = b is emulated incorrectly in H2

#18835 - Avoid unnecessary StringReader and StringWriter allocations and data transfer in MULTISET deserialisation

#18839 - <dateAsTimestamp/> deprecation notice should mention DateAsTimestampBinding alternative explicitly

#18844 - JSONParser::parseStringLiteral should omit StringBuilder copy if no escape sequence is found



Version 3.19.25 - August 12, 2025

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


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



Features and Improvements

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

#18734 - Add DataType::isQualifiedRecord and DataType::isUDTRecord

#18847 - Add a warning to the Query::bind Javadoc about the method not being very useful in general



Bug Fixes

---------

#18589 - Upgrade pgjdbc dependency to 42.7.7 to mitigate CVE-2025-49146

#18596 - Ad-hoc compilation of code generator shouldn't require adding jooq-codegen dependency to project, explicitly

#18601 - Wrong list of supported dialects on various IF [ NOT ] EXISTS methods

#18611 - NClobBinding doesn't correctly bind NULL values

#18614 - Inlining of large SQLDataType.NCLOB values doesn't use TO_NCLOB() in Oracle, like for large CLOB values

#18620 - NClobBinding should revert to ordinary String usage when JDBC driver doesn't support NClob

#18623 - MetaImpl doesn't return Db2 GLOBAL TEMPORARY tables

#18636 - JDBC backed MetaImpl reports Oracle GLOBAL TEMPORARY tables as ordinary tables

#18645 - Slash in name results in invalid identifier being generated using KotlinGenerator

#18648 - KotlinGenerator produces bad code when table / column identifier disambiguation clashes with special character escaping

#18651 - Bad file names generated on Windows in KotlinGenerator and ScalaGenerator when using special characters

#18656 - Compilation error in Kotlin generated code when table name contains special characters and paths are generated

#18659 - org.jooq.codegen.gradle.MetaExtensions classes should adhere to JavaBeans convention to avoid deprecation warning in Gradle 8.x

#18665 - Bad types generated in Informix UDT classes for informix.boolean, informix.blob, and informix.lvarchar types

#18668 - Informix generated code contains extra "_0" attribute in generated UDTs

#18672 - Work around Informix JDBC driver java.lang.IllegalMonitorStateException bug when reading UDT out parameters

#18674 - Parser cannot parse Oracle style IN, OUT modifier in procedure declarations

#18690 - PostgreSQL UDT not deserialized correctly when embedded in multiset

#18695 - Function parameter references aren't rendered with @ prefix in SQL Server, in function body

#18698 - Generated CREATE FUNCTION statement renders extra BEGIN .. END block in SQL Server

#18704 - MetaImpl should support DataType::generatedAlwaysAs property if JDBC DatabaseMetaData::getColumns can report it

#18711 - DataType.generationOption(null) shouldn't store null value, but DEFAULT value

#18720 - Bad formatting in PostgreSQL IF [ NOT ] EXISTS emulation when nested in more blocks

#18724 - Cannot place Oracle UDT in MULTISET with JSON emulation

#18730 - Settings.renderQuotedNames shouldn't affect xsi:nil attribute rending in MULTISET XML emulation

#18740 - Code generator does not apply DataType.GEOMETRY to PostgreSQL materialized view

#18751 - Formatting problem in generated Kotlin UDTs

#18755 - Insert::$updateSet doesn't replace the SET clause, but appends to it

#18764 - Parser fails to parse T-SQL query with TOP and quoted identifiers, when Settings.parseDialect is set to DEFAULT

#18775 - Bad rendering of UDTPathField in PL/SQL contexts

#18789 - XMLDatabase has O(N^2) complexity in column / attribute / parameter lookups

#18810 - Procedural IF a = b is emulated incorrectly in H2

#18834 - Avoid unnecessary StringReader and StringWriter allocations and data transfer in MULTISET deserialisation

#18838 - <dateAsTimestamp/> deprecation notice should mention DateAsTimestampBinding alternative explicitly

#18843 - JSONParser::parseStringLiteral should omit StringBuilder copy if no escape sequence is found



Version 3.20.6 - August 12, 2025

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


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



Features and Improvements

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

#18733 - Add DataType::isQualifiedRecord and DataType::isUDTRecord

#18826 - Add Meta and DDL catalog support for Databricks

#18846 - Add a warning to the Query::bind Javadoc about the method not being very useful in general



Bug Fixes

---------

#18588 - Upgrade pgjdbc dependency to 42.7.7 to mitigate CVE-2025-49146

#18594 - Meta.getSchemas() produces schema multiple times across catalogs in DuckDB

#18595 - Ad-hoc compilation of code generator shouldn't require adding jooq-codegen dependency to project, explicitly

#18600 - Wrong list of supported dialects on various IF [ NOT ] EXISTS methods

#18610 - NClobBinding doesn't correctly bind NULL values

#18613 - Inlining of large SQLDataType.NCLOB values doesn't use TO_NCLOB() in Oracle, like for large CLOB values

#18619 - NClobBinding should revert to ordinary String usage when JDBC driver doesn't support NClob

#18622 - MetaImpl doesn't return Db2 GLOBAL TEMPORARY tables

#18635 - JDBC backed MetaImpl reports Oracle GLOBAL TEMPORARY tables as ordinary tables

#18644 - Slash in name results in invalid identifier being generated using KotlinGenerator

#18647 - KotlinGenerator produces bad code when table / column identifier disambiguation clashes with special character escaping

#18650 - Bad file names generated on Windows in KotlinGenerator and ScalaGenerator when using special characters

#18655 - Compilation error in Kotlin generated code when table name contains special characters and paths are generated

#18658 - org.jooq.codegen.gradle.MetaExtensions classes should adhere to JavaBeans convention to avoid deprecation warning in Gradle 8.x

#18664 - Bad types generated in Informix UDT classes for informix.boolean, informix.blob, and informix.lvarchar types

#18667 - Informix generated code contains extra "_0" attribute in generated UDTs

#18671 - Work around Informix JDBC driver java.lang.IllegalMonitorStateException bug when reading UDT out parameters

#18673 - Parser cannot parse Oracle style IN, OUT modifier in procedure declarations

#18688 - PostgresDatabase and subtypes may still produce wrong table comments in presence of stored functions

#18689 - PostgreSQL UDT not deserialized correctly when embedded in multiset

#18694 - Function parameter references aren't rendered with @ prefix in SQL Server, in function body

#18697 - Generated CREATE FUNCTION statement renders extra BEGIN .. END block in SQL Server

#18703 - MetaImpl should support DataType::generatedAlwaysAs property if JDBC DatabaseMetaData::getColumns can report it

#18708 - MetaDataFieldProvider debug logs warnings about Nullable(xyz) types not being supported for ClickHouse

#18710 - DataType.generationOption(null) shouldn't store null value, but DEFAULT value

#18719 - Bad formatting in PostgreSQL IF [ NOT ] EXISTS emulation when nested in more blocks

#18723 - Cannot place Oracle UDT in MULTISET with JSON emulation

#18729 - Settings.renderQuotedNames shouldn't affect xsi:nil attribute rending in MULTISET XML emulation

#18737 - Typo in DataType::hidden Javadoc

#18739 - Code generator does not apply DataType.GEOMETRY to PostgreSQL materialized view

#18750 - Formatting problem in generated Kotlin UDTs

#18754 - Insert::$updateSet doesn't replace the SET clause, but appends to it

#18763 - Parser fails to parse T-SQL query with TOP and quoted identifiers, when Settings.parseDialect is set to DEFAULT

#18774 - Bad rendering of UDTPathField in PL/SQL contexts

#18788 - XMLDatabase has O(N^2) complexity in column / attribute / parameter lookups

#18809 - Procedural IF a = b is emulated incorrectly in H2

#18828 - Missing VARCHAR lengths in Databricks generated code

#18830 - MetaImpl reports wrong array component length for Databricks

#18833 - Avoid unnecessary StringReader and StringWriter allocations and data transfer in MULTISET deserialisation

#18837 - <dateAsTimestamp/> deprecation notice should mention DateAsTimestampBinding alternative explicitly

#18842 - JSONParser::parseStringLiteral should omit StringBuilder copy if no escape sequence is found

Reply all
Reply to author
Forward
0 new messages