Version 3.16.0 - January 5, 2022
================================================================================

This release tackles two long standing and complex feature requests that 
users
have asked us to offer for a long time: a public API for manipulating jOOQ's
query object model (QOM), and spatial support.


New Query Object Model (QOM)
----------------------------

Every jOOQ query is modeled as an expression tree constructed via our 
intuitive
DSL. For some use-cases there exist historic model API versions (e.g.
SelectQuery), but those models aren't readable or transformable. We're now
starting to offer most of our expression tree model as a public API for 
users to
consume and manipulate. Every expression tree element has a corresponding 
type
in org.jooq.impl.QOM. Every type provides access to its components using "$"
prefixed method names, e.g.:


// Create an expression using the DSL API:
Field<String> field = substring(BOOK.TITLE, 2, 4);
// Access the expression's internals using the model API
if (field instanceof QOM.Substring substring) {
    Field<String> string = substring.$string();
    Field<? extends Number> startingPosition = 
substring.$startingPosition();
    Field<? extends Number> length = substring.$length();
}


*The new API is experimental and might change in the next minor release.*

Licensed power users will get auxiliary APIs to traverse and transform the
expression tree, e.g. traversal:


// Contains 7 query parts
long count2 = BOOK.ID.eq(1).or(BOOK.ID.eq(2))
    .$traverse(Traversers.collecting(Collectors.counting());


Or replacement:


// Contains redundant operators
Condition c = not(not(BOOK.ID.eq(1)));
System.out.println(c.$replace(q ->
    q instanceof QOM.Not n1 && n1.$arg1() instanceof QOM.Not n2
        ? n2.$arg1()
        : q
));


The above prints the following, having removed the redundant NOT operators:


"BOOK"."ID" = 1


This new API is very powerful for even more sophisticated dynamic SQL 
use-cases,
such as:

- Optimising SQL expressions as the above NOT NOT example
- Row level security
- Soft deletion
- Shared schema multi tenancy
- Audit column support
- And much more (stay tuned for future blogs and out-of-the-box 
transformations)

For more info, see:

- 
https://www.jooq.org/doc/dev/manual/sql-building/model-api/model-api-design/
- 
https://www.jooq.org/doc/dev/manual/sql-building/model-api/model-api-traversal/
- 
https://www.jooq.org/doc/dev/manual/sql-building/model-api/model-api-replacement/


Spatial support
---------------

A long awaited feature that starts shipping to our commercially licensed
customers is spatial support. Many dialects support the ISO/IEC 
13249-3:2016 SQL
standard extension, and finally, so do we.

jOOQ introduces new auxiliary data types for GEOMETRY and GEOGRAPHY data to 
use
as standardised bind variables, containing WKB or WKT data, as well as a
variety of out of the box functions and predicates.

Future versions will add more support for other functions and dialects.


New dialect and versions
------------------------

Another new officially supported SQL dialect has been added to all jOOQ 
editions
including the jOOQ Open Source Edition: YugabyteDB. This was a sponsored
integration, thank you very much Yugabyte!

Other dialects have upgraded versions, meaning:

- We support this version in all editions now
- The jOOQ Open Source Edition now requires this version if applicable

The versions are:

- Firebird 4.0
- H2 2.0.202
- MariaDB 10.6
- PostgreSQL 14
- Oracle 21c


Computed and readonly columns including ROWID
---------------------------------------------

A lot of dialects support computed columns ("generated" columns), and we now
support those as well in jOOQ. For most use-cases, this does not affect jOOQ
usage, but especially when writing CRUD code, the new readonly column 
feature
can be very helpful to avoid having to exclude computed columns manually 
from
the CRUD operation.

This also includes a new, improved ROWID support, where users can choose to 
work
with a synthetic ROWID column instead of the primary key, when performing 
CRUD
operations.

All of these features are available in the commercial jOOQ editions.


Jakarta EE
----------

We've moved on from Java EE to Jakarta EE dependencies. This change is
currently backwards incompatible because:

- It greatly facilitates maintaining the related code
- It prevents tons of user problems resulting from having both dependencies
- We're not actually integrating tightly with Java EE / Jakarta EE

The following Jakarta EE modules are affected:

- JAXB, which we're using to load our configuration objects.
- Validation, whose annotations can be generated by the code generator.
- JPA, which is used by the DefaultRecordMapper and the JPADatabase

If this breaking change causes issues, please get in touch at
https://github.com/jOOQ/jOOQ/issues/9641


Various improvements
--------------------

As with every minor release, a lot of smaller improvements have been
implemented. Some highlights include:

- PostgreSQL procedures are now supported in code generation and at runtime.
- SQLite JSON support has been added, which includes the MULTISET emulation!
- A lot of MULTISET / ROW improvements have been implemented
- R2DBC 0.9 has been released, and we've upgraded our dependency
- The Java 17 distribution now requires Java 17 instead of Java 16
- Pre jOOQ 3.6 deprecations have been removed




API Diff:
---------

See what's changed in terms of an API diff here:
https://www.jooq.org/api-diff/3.15-3.16


Features and Improvements
-------------------------        
#982 - Add support for spatial extensions
#4764 - Reduce log level of most DefaultRelations messages from INFO to 
DEBUG
#4845 - Add support for additional Firebird 3.0 features
#5306 - Add support for the standard SQL <data change delta table>
#6492 - Add support for computed columns
#7425 - Integration test jOOQ also on the module path
#7965 - Review manual for places to explain that in jOOQ, views = tables
#8388 - Add code generation option to generate a synthetic, readonly ROWID 
column
#8431 - Add support for PostgreSQL 11 procedures
#8543 - Support FILTER for GROUP_CONCAT
#9310 - Add support for MariaDB 10.3 PERCENTILE_DISC, PERCENTILE_CONT, 
MEDIAN functions
#9367 - Create a SQL dialect version support manual page
#9542 - Remove deprecated reference to org.sonatype.oss:oss-parent
#9609 - Add SQLDialect.H2_2_0_202
#9864 - Add support for readonly columns
#9931 - Add a new DSL.systemName type
#10022 - Remove Alias.SUPPORT_DERIVED_COLUMN_NAMES_SPECIAL3 on 
SQLDialect.H2_2_0_202
#10039 - Add support for the Oracle 21c WINDOW clause
#10051 - UpdatableRecord.merge() should support fetching generated keys, 
where possible
#10149 - Modularise jOOQ-meta, jOOQ-codegen and others
#10710 - Make org.jooq.impl.CombinedCondition a binary expression
#10881 - Enum literals should be defined by generator strategies
#10935 - Add documentation for formatChart()
#11109 - Add SQLDialect.ORACLE21C
#11120 - Add DSLContext.fetchMap(ResultQuery<? extends Record2<K, V>>) and 
fetchGroups(ResultQuery<? extends Record2<K, V>>)
#11415 - Support parsing the JDBC escape syntax { call ... }
#11465 - Add JSON support for SQLite via the JSON1 extension
#11627 - Add ParseListener.parseStart() and parseEnd() events
#11670 - Add support for GROUP BY DISTINCT
#11834 - Let Table<?> extend GroupField
#11864 - Add more startup tips to be logged with the jOOQ logo
#12005 - Emulate DML in WITH using data change delta tables
#12021 - Address known limitations of MULTISET support
#12102 - Add support for MariaDB 10.6
#12116 - Support nesting ROW in MULTISET
#12120 - Spring Boot example should use `@SpringBootApplication(exclude = { 
R2dbcAutoConfiguration.class })`
#12128 - Document lack of correlated MULTISET support in Db2, H2, MariaDB, 
MySQL 5.7
#12146 - Split MCVE template into 3 modules for Java, Scala, and Kotlin
#12151 - Add a cache for Tools.fieldName() and fieldNameString()
#12163 - Add support for TO_CHAR in Db2
#12177 - Remove "These are currently generated" from single page manual and 
PDF manual
#12193 - Upgrade R2DBC dependency to 0.9.0.RELEASE
#12195 - Improve formatting of XMLELEMENT()
#12206 - Add an R2DBC example project to our examples
#12222 - Avoid reflection with ParserImpl.IGNORE
#12231 - Add support for enums in PostgreSQL R2DBC
#12235 - Avoid maven per-execution configuration in manual, if unnecessary
#12236 - Add missing DSL.dateSub() overloads
#12249 - Support parsing Oracle 21c's JSON construction convenience syntax
#12255 - Let RowIdImpl implement toString(), equals(), hashCode()
#12304 - Add Configuration::formattingProvider to offer various formatting 
related SPIs
#12305 - Add missing @NotNull annotations to TXTFormat, CSVFormat, 
JSONFormat, XMLFormat, ChartFormat
#12322 - Add support for SQLDialect.POSTGRES_14
#12344 - Add DMLQuery<R> as a common super type for Insert<R>, Update<R>, 
Delete<R>, Merge<R>
#12348 - Add parser support for DML in CTEs
#12367 - Add another jOOQ testcontainers example that includes using Flyway
#12371 - Add ParseContext.characters() to access and replace the SQL char[]
#12385 - Upgrade ojdbc dependency to 21.3.0.0 and require its module name 
com.oracle.database.jdbc
#12394 - Parser should accept 1 and 0 as boolean literals in MySQL
#12405 - CLI programs should set java.util.loggin.SimpleFormatter.format if 
not already set
#12407 - Add a SQLDialect.YUGABYTEDB dialect
#12408 - Make the OSGi imports for jackson and gson modules optional
#12415 - Add native support for BIT_AND_AGG() and BIT_OR_AGG() in PostgreSQL
#12423 - Offer alternative EnumConverter constructor accepting Function<U, 
T> as a Converter::to implementation
#12425 - Add public query object model API draft
#12427 - Extract bitwise operations into their own classes
#12431 - Extract arithmetic operations into their own classes
#12432 - Extract CompareCondition and CombinedCondition into their own 
classes
#12457 - Generate some Javadoc on implicit join path navigation methods
#12470 - Add better Javadoc documentation about what Class<T> literals can 
be passed to DSL.val(Object, Class), etc.
#12476 - Change source, target, and release level to 17 for Java 17 
distribution
#12484 - Manual should point to JDK 17 Javadoc
#12488 - Log warning in code generator when wrong runtime version is used
#12501 - Offer more Settings flag in ParserCLI and TranslationService
#12506 - SQLDialect.supportedBy() and supportedUntil() should specify that 
they're inclusive in their Javadoc
#12507 - Improve some internal Nullable / NotNull annotation usage
#12509 - DefaultConverterProvider should be able to convert from JSON(B) to 
the usual JSON types and back
#12513 - Add new Functions.nullOnAllNull(FunctionN) and 
nullOnAnyNull(FunctionN)
#12528 - Add ExecuteScope, a Scope that knows about an ExecuteContext
#12529 - Add nullability annotations to BindingXYZContext types
#12530 - Let Function1 <: Function and Function2 <: BiFunction
#12538 - Add Settings.parseRetainCommentsBetweenQueries
#12539 - Better seek clause examples
#12566 - JDBCUtils::safeClose methods should debug log stack traces
#12574 - Add ExecuteContext::resultLevel and ::recordLevel to indicate the 
Result and Record nesting level
#12582 - ControlFlowSignal should use Throwable(String, Throwable, boolean, 
boolean) super constructor
#12583 - Add DAO.findOptionalById()
#12585 - Use INFO level instead of WARNING level for routines with more 
than 254 parameters
#12592 - JPADatabase should log a WARNING message if it cannot find any 
entities on the classpath
#12601 - Produce compilation error if code generator version doesn't match 
runtime version
#12604 - Add SQLDialect.FIREBIRD_4_0
#12620 - Document that the asterisk may lead to column order mismatches
#12625 - Manual examples shouldn't re-create Gson or ObjectMapper instances 
all the time
#12630 - The JavaGenerator.printDeprecationIfUnknownType should hint at a 
UDT being in a different schema
#12644 - Upgrade Spring Boot example to Spring Boot 2.6
#12658 - Add HANA support for ON DUPLICATE KEY UPDATE et al
#12662 - Add H2 support for ON CONFLICT ON CONSTRAINT
#12663 - Add EnumType.<E extends EnumType>lookupLiteral(Class<E>, String) 
and generate E.lookupLiteral(String) methods
#12664 - Support distinguishing between STORED and VIRTUAL computed columns
#12667 - Add Source.of(InputStream, int) and Source.of(Reader, int) to 
create length limited sources
#12681 - Add JooqLogger.getLogger(Class<?>, int) to create a logger whose 
number of messages are limited to some number
#12691 - Support parsing single element IN predicate without parentheses
#12692 - Development version of the manual should include a disclaimer in 
the header
#12720 - Split manual section about CREATE TABLE into multiple subsections
#12725 - Manual section "daos" should link to "codegen-daos"
#12728 - Add support for Informix stored procedures
#12737 - Add DataType.isSpatial()
#12758 - Bump log4j-core from 2.16.0 to 2.17.0
#12759 - Additional SQL statements after JDBC connection
#12766 - Mention fetchSingle() in the manual section about fetching


Breaking changes
----------------
#9641 - Migrate Java EE dependencies to Jakarta EE
#9676 - Add support for H2's data change delta tables
#12109 - Remove pre 3.6 deprecated API and pre 3.6 documentation
#12127 - R2DBC execution should wrap R2dbcException in DataAccessException
#12212 - Unnecessary generic type parameter in localDateAdd and other date 
time arithmetic functions
#12586 - Remove DB2DataType.ROWID
#12633 - Move XSDs from jOOQ and jOOQ-meta to subpackages to avoid split 
xsd packages
#12757 - Experiment with sealed classes


Deprecations
----------------
#12238 - Deprecate Internal.fieldsRow(TableField)
#12420 - Deprecate PostgresDSL.oid() and replace its usage by actual OID 
columns
#12465 - Deprecate IGNITE dialect again


Bug Fixes
---------
#3035 - INSERT .. RETURNING does not return any value in H2, when no 
AUTO_INCREMENT column is involved
#3398 - Avoid generating new SQL statements for every bind variable length 
in Firebird 3
#4311 - Usage of jOOQ API inside of ConnectionProvider.acquire() causes 
issues with Oracle cross-schema OBJECT type bindings
#8205 - Use JDK 9 Matcher.replaceAll(Function) instead of 
Matcher.replaceAll(String) where possible
#9129 - Support parsing ALTER TABLE ... ADD ... AUTO_INCREMENT
#9136 - Wrong SQL generated in DB2's NTH_VALUE() IGNORE NULLS window 
function
#9162 - Parser missing type information for Enum fields
#9917 - Codegeneration fails with case sensitive data types in postgres 9.0 
or less
#10423 - Bad translation of identity to CockroachDB
#10866 - Generator produces an invalid enum with an underscore "_" as the 
name
#11386 - Avoid streaming SQL Server FOR JSON or FOR XML in chunked results
#11401 - Improve JSON_VALUE formatting
#11659 - Upgrade Liquibase dependency of jooq-meta-extensions-liquibase to 
4.x
#11703 - Parser can't parse functions receiving operator based string 
expressions
#12025 - Parsed DATE_ADD and DATE_SUB don't translate correctly when 
lacking column meta data
#12104 - R2DBC nested subscription loops forever when nesting or sequencing 
INSERT .. RETURNING run on r2dbc-pool
#12108 - Operator called default onErrorDropped: 
PostgresConnectionClosedException when chaining queries
#12117 - ORA-06550 when calling a PL/SQL procedure with a %ROWTYPE 
parameter that has DATE fields when dateAsTimestamp=true and 
javaTimeTypes=true
#12118 - Regression in SQLite code generation for unnamed composite pkeys 
on JDK 9+ with the jOOQ Open Source Edition
#12123 - Regression in ResultQuery.fetchMap(Field, Field) with null values
#12125 - Wrong Support annotation: HSQLDB doesn't support MULTISET or 
MULTISET_AGG
#12130 - Wrong deserialisation of temporal data types in MULTISET XML 
emulation
#12131 - DefaultConverterProvider should be able to convert both ISO 
timestamp formats to Timestamp and LocalDateTime
#12135 - MULTISET emulation doesn't correctly deserialise single column 
record containing only a NULL value in SQL Server
#12136 - IndexOutOfBoundsException when deserialising MULTISET as XML 
emulation with NULLs
#12139 - MULTISET as JSON emulation using JSON_ARRAY must use NULL ON NULL 
clause
#12141 - Data conversion error converting "TIMESTAMP to JSON" in H2
#12144 - Regression when binding JSONB value containing a JSONB string in 
PostgreSQL
#12148 - Setter return type must be Unit & '@set:' annotations could be 
applied only to mutable properties
#12149 - DSL.using(String, String, String) based R2DBC Connection does not 
use provided username and password
#12150 - [jOOQ/jOOQ#12149] Use username and password properties for r2dbc 
connection
#12155 - Nested multiset record mapping fails at the 3rd level of nesting
#12158 - MULTISET/JSON emulation can't read TIME type in Db2
#12160 - Error when embedding a timestamp in Db2 XMLELEMENT
#12168 - Deeply nested MULTISET produce quoted JSON in MariaDB
#12174 - Unnecessary finalizer registration in DefaultConnectionProvider
#12181 - SQL Server doesn't correctly serialize TIME bind values in FOR XML 
and FOR JSON usage
#12183 - An R2dbcException wrapping DataAccessException should properly 
produce sqlState() and other properties
#12187 - The XML MULTISET_AGG emulation doesn't work with unnamed bind 
values in Db2
#12189 - Db2 cannot handle scalar subqueries in JSON_OBJECT in the presence 
of a MULTISET ad-hoc converter
#12192 - INSERT .. RETURNING doesn't work in H2 when a composite key does 
not have the identity as its first column
#12194 - MySQL DELETE .. USING with JOIN produces duplicate table 
declarations in USING clause
#12197 - The DataKey.DATA_PREPEND_SQL and DATA_APPEND_SQL feature must work 
on Query only, not other QueryParts
#12200 - SelectOnStep::onKey returns wrong type, preventing combinations of 
join predicates
#12201 - Error when embedding a timestamp in Db2 XMLATTRIBUTES
#12208 - Deeply nested MULTISET mappings with ad-hoc conversion doesn't 
work when using reflection
#12210 - Aliasing implicit join paths produces invalid queries
#12216 - Remove references to javax.annotation.Generated from jooq-codegen 
Javadoc
#12225 - DefaultConverterProvider truncates timestamps to milliseconds 
precision when converting from Timestamp to LocalDateTime
#12237 - Embeddables cannot be placed in MULTISET
#12240 - NullPointerException in MetaImpl.MetaTable.getReferences() when 
there are catalog conflicts in SQL Server
#12244 - Inconsistent formatting of table list when using generated or 
non-generated aliased tables
#12247 - Replace remaining reflective call to OracleConnection.createARRAY 
from DefaultBinding
#12253 - Long lists are no longer wrapped when rendering formatted SQL
#12260 - NullPointerException when reading empty results for MULTISET_AGG / 
JSON emulation
#12262 - Delay initialisation of Jackson, Gson, JAXB classes in Convert
#12265 - Custom data type binding example in manual works only on JDBC, not 
R2DBC
#12267 - jOOQ 3.15.0 XSD is not published?
#12277 - Wrong method name used in manual section schema-diff
#12278 - Empty subsection in manual section codegen-config-generator
#12281 - IllegalArgumentException: Minimum abbreviation width is 4 when 
TXTFormat::minColWidth is less than 4
#12286 - java.lang.NoClassDefFoundError: 
javax/xml/bind/annotation/XmlSchema when running examples from manual 
tutorial
#12289 - In manual section jooq-in-7-steps-step3, fix multi line shell 
syntax
#12291 - Reference to database and/or server name in 'master.sys.schemas' 
is not supported in this version of SQL Server.
#12306 - Wrong table list to ANSI join transformation when tables are 
qualified and aliased
#12307 - Wrong result for Table or Field.getQualifiedName() on aliased 
table(Name) or field(Name)
#12308 - MockDataProvider cannot handle MULTISET fields
#12315 - Wrong procedure declaration generated in MySQL when using IN 
parameters with VARCHAR(length) types
#12316 - ParseListener example doesn't compile, should use 
onParseCondition(), not onParseField()
#12324 - Wrong (+) to LEFT JOIN transformation in join tree A⟕B, A⟕C, A⋈D
#12327 - ImmutablePOJOMapper cannot map more than one nested POJO on the 
same level
#12328 - Empty select() should not project asterisk if unknown table is 
used with leftSemiJoin() or leftAntiJoin()
#12332 - Result.formatChart() produces bad default formatting for 
Display.HUNDRED_PERCENT_STACKED
#12333 - IndexOutOfBoundsException when calling Result.formatChart() on an 
empty result
#12340 - Improve <dialects/> to display correct number of dialects for 
operators
#12345 - Inline floating point formatting shouldn't depend on default Locale
#12357 - Wrong SQL example in manual section multiset-value-constructor
#12363 - Nested Block generates top-level anonymous block behaviour when 
top level Statement is not a Block
#12364 - Spelling mistake in manual section "jooq-with-flyway"
#12373 - ClassCastException when using returning() with R2DBC
#12375 - NullPointerException in OracleDatabase.getArrays0()
#12379 - Wrong type documented in INSERT .. RETURNING section of the manual
#12381 - DSLContext.explain(Query) doesn't work with bind values in Oracle
#12386 - Positional window functions without ORDER BY should generate ORDER 
BY 1 in Oracle
#12399 - FOR JSON emulation must use RETURNING CLOB in Oracle
#12413 - DataTypeException in multiset with a mapped nested row
#12417 - BIT_AND_AGG(), BIT_OR_AGG() emulations shouldn't use bind values
#12434 - CVE-2021-26291 via maven-core-3.6.3 dependency
#12437 - Avoid generating overloaded table valued functions with 
compilation errors, until they are supported
#12440 - Compilation error in KotlinGenerator generated code when 
@set:JvmName is applied to overriding property
#12441 - Fix generating multi-key DAOs with Java records
#12442 - Compilation errors in generated code when using <daos/> with 
<pojosAsJavaRecordClasses/>
#12446 - Unnecessary cast in Db2 when comparing value with concatenation
#12459 - KotlinGenerator setter return type must be Unit also for records
#12463 - H2 enum values which contain brackets are not generated as Java 
literals
#12468 - MockFileDatabase example doesn't compile
#12469 - InlineDerivedTable shouldn't inline when used in outer joins
#12480 - DSL.arrayGet() does not generate required parentheses
#12491 - api-diff generates wrong nested class Javadoc links
#12492 - Clarify whether .offset(..) starts from 0 or 1
#12495 - Ignored COMMENT ON CONSTRAINT syntax should support qualified 
object identifiers
#12498 - Meta does not produce correct DataType::nullable information when 
data type isn't supported
#12499 - Wrong documentation in section "codegen-database-regex-flags"
#12500 - Unable to fetch Instant field within a multiset
#12502 - NPE in Query.equals() when Query isn't attached
#12508 - Cannot map JSON(B) in MULTISET when mapping with Jackson from 
DefaultConverterProvider
#12516 - Field with Converter<String, Boolean> inside multiset causes JSON 
parsing error on Oracle  
#12520 - Parser should support PERCENTILE_CONT / PERCENTILE_DISC with 
expressions as percentiles
#12527 - DefaultExecuteContext.LOCAL_SCOPE is reset to null when nesting 
lazy executions
#12537 - ParserCLI interactive mode ignores setting booleans to false
#12543 - ParserCLI interactive mode can't handle leading /* comment block
#12544 - Field<Instant>.div(int) regression for Instant fields that have a 
converter
#12545 - Lenient support for H2's time zone format when using the Instant 
type
#12549 - Wrong JSON_MERGE_PRESERVE function generated when embedding JSON 
in MULTISET in MariaDB and MySQL
#12557 - Add support for unwrapping Optional types in 
DefaultConverterProvider
#12561 - ROWNUM transformation doesn't work when projecting an expression 
containing ROWNUM
#12564 - Exception in LoggerListener when projecting top level 
row(...).mapping()
#12568 - Connection leak when ExecuteListener::fetchEnd throws an exception
#12589 - CockroachDB IDENTITY column recognition is broken
#12596 - ParamType.INLINED produces wrong behaviour for 
Settings.cacheParsingConnection
#12599 - Incorrect MERGE statement syntax generated in FIREBIRD when 
aliasing USING derived table
#12602 - Parser cannot parse INSERT .. SELECT without column list
#12611 - SQLDataType.null generated when using XMLDatabase with lower case 
array type
#12612 - Generated column in table valued function of type TIMESTAMP 
without precision is generated using precision zero
#12638 - OracleDatabase::sequences produces query that doesn't work on 
older ojdbc driver versions
#12639 - typo in jOOQ-academy setup script
#12640 - OracleDatabase doesn't produce correct CYCLE sequence flag 
information in code generation
#12645 - Parser should support PostgreSQL date part syntaxes with explicit 
type casts
#12649 - Parser parses and ignores NOT keyword after column expression
#12655 - Fix Firebird Support annotations on INSERT .. ON DUPLICATE KEY 
UPDATE as well as UpdatableRecord.merge
#12659 - Wrong SQL generated for PostgreSQL functions returning single UDT 
OUT parameters
#12666 - Restore streaming bind value method behaviour on ParsingStatement
#12669 - Blob.length() and Clob.length() calls shouldn't be silently 
downcast to int
#12674 - HanaTableDefinition reports all computed columns as identities
#12675 - MariaDBDatabase no longer generates check constraints
#12678 - Potential resource leak in SettingsTools static initialiser
#12683 - Regression in code generation catalog mapping
#12697 - Mapped JSON in multiset causes multiple ad-hoc conversions
#12700 - Single element IN predicate without parentheses uses wrong 
operator precedence
#12704 - DefaultRecordUnmapper.IterableUnmapper uses name based field 
access instead of index based ones, leading to ambiguities
#12706 - Cannot nest MULTISET in top level ROW in PostgreSQL
#12712 - Parser mis-interprets KEY columns as MySQL KEY (INDEX) 
specification if unquoted and of type VARCHAR(n)
#12713 - Debug log output causes exceptions when data type converter is 
re-applied incompatibly
#12718 - Some manual "previous" and "next" links use wrong URL
#12731 - DB2Database should order routine overloads by signature, not 
specificname
#12733 - Update log4j to 2.15.0 because of CVE-2021-44228
#12741 - Loader.onDuplicateKeyIgnore doesn't work on tables that don't have 
a PRIMARY KEY
#12742 - ListAgg not working with filter clause.
#12751 - Bump h2 from 1.4.199 to 2.0.202 in 
/jOOQ-examples/jOOQ-javafx-example
#12752 - DDLDatabase defaultNameCase property shouldn't affect built in 
functions in view definitions
#12753 - SQLDialect.JAVA produces wrong output for quotedName()
#12755 - DSL.unquotedName() has wrong Javadoc
#12776 - Compilation errors in generated code when enabling 
<pojosAsJavaRecordClasses> and <embeddables>
#12780 - Support generating the PostGIS GEOMETRY type as 
SQLDataType.GEOMETRY

-- 
You received this message because you are subscribed to the Google Groups "jOOQ 
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jooq-user/9636fa9b-8315-47e1-a07c-6b0b437278d1n%40googlegroups.com.

Reply via email to