Version 3.19.39 - September 24, 2026
================================================================================
This is a 3.19 patch release with minor improvements and bug fixes
Bug Fixes
---------
#20180 - Many-to-many path isn't being generated on inverse one-to-one relationship
#20185 - OracleDatabase does not generate indexes containing DESC columns
#20189 - Code generator should generate SortOrder.DESC on additional dialects with DESC index column support
#20198 - Improve ambiguous key name log message in case of self-referencing foreign keys
#20202 - TransactionPublisher should document streaming of intermediary results being undefined
#20205 - Cancellation of an in-flight R2DBC query orphans the row subscription and permanently poisons the connection
#20209 - R2DBC transactionPublisher hangs when Error is being thrown as opposed to Exception during publisher initialisation
#20218 - R2DBC transaction rollback cause is invisible in stack trace, in case rollback fails
#20223 - Wrong no-op logic in $limitWithTies() and $offset() mutators of SelectQueryImpl
#20236 - Kotlin generated code produces wrong aliasing constructors for tables
#20240 - Code generator doesn't escape UDT name or schema name
#20244 - Parser swallows characters in Oracle style quoted literals if delimiter character is encountered in string
#20248 - Some inconsequential missing breaks in switches of the parser
#20252 - Parser incorrectly parses empty nested block comments
#20258 - QueryPart::$replace replaces absent optional argument by explicit NULL argument
Version 3.20.20 - September 24, 2026
================================================================================
This is a 3.20 patch release with minor improvements and bug fixes
Bug Fixes
---------
#20179 - Many-to-many path isn't being generated on inverse one-to-one relationship
#20184 - OracleDatabase does not generate indexes containing DESC columns
#20188 - Code generator should generate SortOrder.DESC on additional dialects with DESC index column support
#20197 - Improve ambiguous key name log message in case of self-referencing foreign keys
#20201 - TransactionPublisher should document streaming of intermediary results being undefined
#20204 - Cancellation of an in-flight R2DBC query orphans the row subscription and permanently poisons the connection
#20208 - R2DBC transactionPublisher hangs when Error is being thrown as opposed to Exception during publisher initialisation
#20212 - R2DBC Batch execution silently skips SubscriberProvider context propagation
#20217 - R2DBC transaction rollback cause is invisible in stack trace, in case rollback fails
#20222 - Wrong no-op logic in $limitWithTies() and $offset() mutators of SelectQueryImpl
#20226 - Oracle generated UDT record type interfaces do not call correct generator strategy method getJavaGetterOverride
#20229 - JavaGenerator::generateEmbeddableRecordSetter uses wrong kotlin check to decide what generator strategy method should be used for setter/member overrides
#20232 - Compilation error in generated code for UDT or table arrays when interfaces are being generated
#20235 - Kotlin generated code produces wrong aliasing constructors for tables
#20239 - Code generator doesn't escape UDT name or schema name
#20243 - Parser swallows characters in Oracle style quoted literals if delimiter character is encountered in string
#20247 - Some inconsequential missing breaks in switches of the parser
#20251 - Parser incorrectly parses empty nested block comments
#20257 - QueryPart::$replace replaces absent optional argument by explicit NULL argument
Version 3.21.9 - September 24, 2026
================================================================================
This is a 3.21 patch release with minor improvements and bug fixes
Bug Fixes
---------
#20178 - Many-to-many path isn't being generated on inverse one-to-one relationship
#20183 - OracleDatabase does not generate indexes containing DESC columns
#20187 - Code generator should generate SortOrder.DESC on additional dialects with DESC index column support
#20191 - Syntax error in BigQuery CREATE FUNCTION statement: Missing AS keyword
#20196 - Improve ambiguous key name log message in case of self-referencing foreign keys
#20200 - TransactionPublisher should document streaming of intermediary results being undefined
#20203 - Cancellation of an in-flight R2DBC query orphans the row subscription and permanently poisons the connection
#20207 - R2DBC transactionPublisher hangs when Error is being thrown as opposed to Exception during publisher initialisation
#20211 - R2DBC Batch execution silently skips SubscriberProvider context propagation
#20216 - R2DBC transaction rollback cause is invisible in stack trace, in case rollback fails
#20221 - Wrong no-op logic in $limitWithTies() and $offset() mutators of SelectQueryImpl
#20225 - Oracle generated UDT record type interfaces do not call correct generator strategy method getJavaGetterOverride
#20228 - JavaGenerator::generateEmbeddableRecordSetter uses wrong kotlin check to decide what generator strategy method should be used for setter/member overrides
#20231 - Compilation error in generated code for UDT or table arrays when interfaces are being generated
#20234 - Kotlin generated code produces wrong aliasing constructors for tables
#20238 - Code generator doesn't escape UDT name or schema name
#20242 - Parser swallows characters in Oracle style quoted literals if delimiter character is encountered in string
#20246 - Some inconsequential missing breaks in switches of the parser
#20250 - Parser incorrectly parses empty nested block comments
#20254 - SQLite cannot maintain JSON true value when nested in MULTISET
#20256 - QueryPart::$replace replaces absent optional argument by explicit NULL argument