Version 3.18.0 - March 8, 2023
================================================================================


DiagnosticsListener improvements
--------------------------------

A lot of additional diagnostics have been added, including the automated
detection of pattern replacements, helping you lint your SQL queries
irrespective of whether you're using jOOQ to write your SQL, or if you're 
using
it as a JDBC / R2DBC proxy for an existing application.

A lot of these diagnostics are available as ordinary pattern 
transformations,
which we've started adding in jOOQ 3.17. Some new patterns include:

- <code>CASE WHEN a = b THEN 1 END</code> to <code>CASE a WHEN b THEN 1 
END</code>
- <code>CASE WHEN x IS NULL THEN y ELSE x END</code> to <code>NVL(x, 
y)</code>
- <code>CASE WHEN x = y THEN NULL ELSE x END</code> to <code>NULLIF(x, 
y)</code>
- <code>(SELECT COUNT(*) FROM t) > 0</code> to <code>EXISTS(SELECT 1 FROM 
t)</code>
- And much more

See these sections for more details:

- https://www.jooq.org/doc/3.18/manual/sql-execution/diagnostics/
- 
https://www.jooq.org/doc/3.18/manual/sql-building/dsl-context/custom-settings/settings-diagnostics-connection/
- 
https://www.jooq.org/doc/3.18/manual/sql-building/dsl-context/custom-settings/settings-diagnostics-logging/
- 
https://www.jooq.org/doc/3.18/manual/sql-building/queryparts/sql-transformation/transform-patterns/


More SQL/JSON support
---------------------

SQL/JSON is one of the most promising recent additions to the SQL language, 
and
we're always keen on improving jOOQ's support for these features. In this
release, we've added support for a variety of useful, vendor specific 
SQL/JSON
extensions, including:

- JSON_KEYS (from MySQL)
- JSON_SET (from MySQL)
- JSON_INSERT (from MySQL)
- JSON_REPLACE (from MySQL)
- JSON_REMOVE (from MySQL)
- Accessors -> and ->> (from PostgreSQL)

More information on new JSON function support can be found here:

- 
https://www.jooq.org/doc/3.18/manual/sql-building/column-expressions/json-functions/


More QOM implementation
-----------------------

The Query Object Model (QOM) API, which was introduced in jOOQ 3.16, has 
been
enhanced with more statement, function, expression support, allowing for 
more
complete SQL transformation and traversal. This is specifically interesting 
for
pattern replacements, diagnostics, and custom SQL transformations.

The QOM API is still in an experimental state. While we don't expect any
fundamental changes anymore, there can still be source incompatibilities 
between
minor releases.

For details about the model API, please refer to:

- https://www.jooq.org/doc/3.18/manual/sql-building/model-api/


Oracle associative array support
--------------------------------

When using stored procedures in Oracle, users are likely going to make 
heavy use
of Oracle PL/SQL package types. We've supported PL/SQL RECORD types and 
PL/SQL
TABLE types for a while, both of which had limited ojdbc support in the 
past.
Associative array support can still be a challenge with ojdbc, but with 
jOOQ and
its code generator, most associative arrays can be bound and fetched very
easily.


PostgreSQL Multi dimensional array types
----------------------------------------

An often requested feature from our PostgreSQL integration is multi 
dimensional
array support. This version of jOOQ will support those types in code 
generation
(where possible) and at runtime via multi dimensional Java arrays.


Kotlin specific improvements
----------------------------

jOOQ is also the best way to write SQL in kotlin. We're always looking out 
for
new convenience via the jOOQ-kotlin extension module, for example:

- ResultQuery Collectors
- JSON access
- More nullability support in generated code

For more details, see:

- https://www.jooq.org/doc/3.18/manual/sql-building/kotlin-sql-building/


R2DBC 1.0 support
-----------------

This jOOQ version upgrades its R2DBC dependency to 1.0.0.RELEASE.


For a complete list other, minor improvements, see the below change notes.


Features and Improvements
-------------------------        
#252 - Add support for multi-dimensional ARRAY types
#3173 - Add SQL transformation to inline CTE
#5254 - Add some additional description to each jOOQ-example
#5620 - Add support for PL/SQL TABLE and associative array types in Oracle 
18c
#5679 - Document MySQL and T-SQL style hints in the manual
#5799 - Add support for the SQL Standard WITH ORDINALITY clause
#6237 - Merge all manual versions into one
#6311 - Add <oracleUseDBAViews/> flag to code generator to use DBA_XYZ 
views instead of ALL_XYZ views
#7106 - Add support for START TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT 
statements
#7398 - Add Settings for each individual diagnostic
#7503 - Add support for PostgreSQL functions returning anonymous RECORD 
types
#7512 - Emulate LATERAL on SQL Server for table lists
#7527 - Add more diagnostics to DiagnosticsListener SPI
#8630 - Support MySQL GROUPING() function
#8893 - Add Settings.renderTable
#8952 - Support parsing JSON_VALID(x) and ISJSON(x) as x IS JSON
#9720 - Support logical XOR operator
#9743 - Support qualified asterisk on unaliased JoinTables
#9760 - Translator's "identifier case" option is confusing
#9818 - Get view source code from org.jooq.Meta views
#9844 - Generator strategies should support <schemaExtends/>, 
<tableExtends/>, <recordExtends/>, <daoExtends/>, <routineExtends/>
#9880 - Translate SQL Server WITH (ROWLOCK) clauses to corresponding FOR 
UPDATE
#10018 - Add support for PostgreSQL's JSON/JSONB -> and ->> operators
#10026 - Emulate LATERAL on SQL Server for simple JOIN with trivial ON
#10212 - Add options to generate non-null attributes on Records, Pojos, and 
interfaces in KotlinGenerator
#10340 - Add SQLDialect.category()
#10619 - Create manual subsections for each function
#10730 - Add support for JSON_ARRAYAGG(DISTINCT)
#11355 - Log warning when unsupported dialect version is being used
#11681 - Get SQLDialect.VERTICA up to date
#11830 - Add Settings.renderRowConditionForSeekClause to allow for avoiding 
row predicate usage
#11966 - Various parser bugs / missing features
#11981 - Add support for more array functions
#11986 - Get HANA dialect support up to date
#12022 - Add code generator support for MySQL's invisible columns
#12033 - Add MULTISET_AGG(DISTINCT ...) aggregate and window function 
support 
#12037 - Implicit JOIN improvements
#12045 - Support correlating MULTISET operators in dialects that can't 
correlated subqueries from derived tables
#12531 - Auto-inline bind values in ON CONFLICT .. WHERE clause
#12621 - Split manual section about the SELECT clause into its subsections
#12907 - Add a QOM.UConvertibleOperator utility with methods like 
$converse()
#13182 - Improve formatting XMLATTRIBUTES
#13249 - Emulate JSON_OBJECT's ABSENT ON NULL clause in MySQL
#13262 - Manual should distinguish more clearly between Maven XML and 
standalone XML content
#13358 - Add SQLDialect.POSTGRES_15
#13375 - Add support for unnesting collections of expressions with 
DSL::unnest
#13408 - Get TERADATA dialect up to date
#13418 - Add a Settings.emulateComputedColumns
#13423 - Add more "Don't Do This" content to the manual
#13592 - Add more startup tips to be logged with the jOOQ logo
#13593 - Replace more common patterns in query object model
#13596 - Add QOM.Aliasable, a query object model type implemented by all 
aliasable objects
#13640 - Continue work on public query object model API
#13656 - Add a SQLDialect.SQLSERVER2022
#13698 - Support parsing H2's CREATE MEMORY TABLE and CREATE CACHED TABLE
#13701 - Add a section to the manual about runtime vs code generation 
version compatibility
#13706 - OnError.FAIL should log a message about the user's option how to 
handle the problem
#13718 - Log warning should show jOOQ-meta type to help disambiguate 
objects that share the same name
#13728 - Add SQLDialect.SQLITE_3_39
#13737 - Getting started section should clarify that jooq is the main 
dependency, and jooq-meta, jooq-codegen are typically unneeded
#13747 - Add a "main types overview" to the manual
#13748 - Support parsing the PostgreSQL DATE_PART function
#13763 - Support DB2 selectivity-Keyword in Query-Parser
#13764 - Refactor internal schema mapping logic to use the new 
QualifiedImpl type
#13769 - Emulate GROUP BY <column index> using substitution in dialects 
where this isn't natively supported
#13781 - Add SQLDialect.COCKROACHDB_22
#13791 - Apply an auto-converter to <forcedType> in the absence of an 
explicit converter, if possible
#13850 - Get MEMSQL dialect up to date
#13881 - Parse and ignore SQLite DDL conflict-clause
#13882 - Parse length on unknown data types
#13891 - H2 dialect should always generate standard OFFSET .. FETCH
#13893 - Add SQLDialect.H2_2_1_214
#13894 - Add SQLDialect.precedesStrictly(SQLDialect)
#13902 - Support H2's strict mode
#13925 - Show deprecation warning for javax.persistence annotations also 
for method and field annotations
#13928 - Emulate UPDATE .. RETURNING in MariaDB 10.5+ using INSERT .. 
SELECT .. ON DUPLICATE KEY UPDATE .. RETURNING
#13935 - Support H2's qualified domains
#13936 - Code generator should properly qualify H2 domain enums
#13944 - Add Traversers.consuming(Consumer<? super QueryPart>): 
Traverser<?, Void>
#13951 - Add support for MySQL's JSON modification functions
#13957 - Add support for Oracle associative array of object types as IN 
parameter
#13964 - Add a SQL building in kotlin section
#13970 - PostgreSQL code generation fails when user defined type starts 
with _
#13971 - Add DataType.array() as a DSL style shortcut for getArrayDataType()
#13973 - Add DataType.getArrayBaseDataType() and getArrayBaseType()
#13986 - Add support for Db2 11.1 LISTAGG(DISTINCT)
#13995 - Improve documentation on Fields lookup methods
#14002 - KotlinGenerator shouldn't generate public default constructor if 
non-nullable attributes are generated on records
#14004 - Add documentation for KotlinGenerator and ScalaGenerator
#14006 - Add ResultQuery<Record2<T1, T2>>.fetchMap() and fetchGroups() 
extension methods to jOOQ-kotlin
#14009 - Add DataType.isBoolean()
#14014 - Slow query against SYS.ALL_INDEXES in OracleDatabase
#14046 - Add support for MySQL's JSON_KEYS()
#14064 - Add SQL Server 2016 support for JSON_VALUE
#14065 - Add internal utilities to help avoid repeating expressions
#14066 - Split SimpleQueryPart into two, allowing for marking types that 
are always simple
#14071 - Add parser support for undocumented AS keyword in SQL Server 
procedure parameter list
#14074 - Add support for passing a list of bind values to 
DSL.unnest(Collection)
#14077 - Add support for SQL Server's ALTER VIEW .. AS syntax
#14081 - Translator should use 100% screen width
#14082 - Add parser support for MySQL's CREATE INDEX .. VISIBLE keyword
#14084 - Parser should parse Oracle WITH FUNCTION syntax (and throw an 
unsupported exception)
#14089 - Add parser support for CREATE SCHEMA .. DEFAULT CHARSET
#14098 - Document the fact that some DDL emulations may require the 
commercial editions
#14099 - Upgrade pgjdbc to 42.5.0
#14103 - Add parser support for MySQL USE / FORCE / IGNORE INDEX hints
#14110 - License header should use HTTPS rather than HTTP
#14118 - Support defaulted PL/SQL RECORD and TABLE parameters to stored 
procedures
#14131 - Improve Val.getName() for array values
#14136 - Let DiagnosticsContext extends Scope
#14146 - Add a LoggingDiagnosticsListener, a default DiagnosticsListener 
implementation that logs events
#14155 - Add ExecuteListener::transformStart and ::transformEnd events
#14157 - Upgrade to kotlin 1.7.20
#14158 - Add ExecuteContext::batchMode to indicate what type of batch is 
being executed
#14159 - Add parser support for <grouping column reference list>
#14160 - Parse and ignore the T-SQL SPARSE column definition flag
#14166 - Render correct SQL when COALESCE or CASE have empty contents
#14179 - Add a QOM.UReturnsNullOnNullInput marker interface
#14180 - MANIFEST.MF contains unnecessary javax.persistence dependency
#14181 - All QOM function types should implement UOperator[N]
#14186 - All UOperator[N] types should extend UOperator, offering an 
$args():List<?>
#14201 - Improve formatting of non ordinary grouping sets
#14202 - QOM API mutator methods should be annotated with @CheckReturnValue
#14214 - Add Traverser.recurseChildren(): Predicate<QueryPart>
#14230 - Add native support for Snowflake * EXCLUDE (columns) syntax
#14242 - Add support for DB2 ROWNUMBER and DENSERANK window function in 
parser
#14248 - Add parser support for CockroachDB STRING type
#14249 - Add support for RIGHT JOIN and FULL JOIN in REDSHIFT
#14251 - Add an internal Tools.allMatch() utility
#14262 - Field::contains should implement PostgreSQL @> also for JSONB types
#14263 - Add jsonbObject() convenience overloads for single element objects
#14268 - Add support for SQL Server 2022 GENERATE_SERIES
#14269 - Add support for SQL Server 2022 GREATEST and LEAST
#14270 - Add support for SQL Server 2022 WINDOW
#14271 - Emulate SPLIT_PART using STRING_SPLIT in SQL Server 2022
#14272 - Add support for SQL Server 2022 IGNORE NULLS and RESPECT NULLS
#14301 - Add SQLDialect.MYSQL_8_0_31
#14302 - Add support for INTERSECT ALL and EXCEPT ALL in MySQL
#14303 - Add support for INTERSECT ALL and EXCEPT ALL in MariaDB 10.5
#14308 - Support qualified asterisk on aliased JoinTables
#14309 - Add Field::nullsFirst and Field::nullsLast convenience methods
#14310 - Add support for aliased JoinTables
#14311 - Improve formatting of nested JoinTable
#14320 - Add native Informix DECODE support
#14331 - Add Settings.renderRedundantConditionForSeekClause to improve SEEK 
predicate performance in some RDBMS
#14336 - Parse and ignore Teradata (TITLE '...') syntax
#14337 - Parse the Teradata (NAMED ...) syntax
#14342 - Generate referenced sections list in manual
#14360 - Add parser support for prefixed PARTITION BY .. OUTER JOIN syntax
#14361 - Add API support for fullJoin(..).partitionBy(..)
#14363 - Support BITNOT in HANA dialect
#14365 - Emulate expressions in LIMIT .. OFFSET where not natively 
supported in more dialects
#14366 - Add HANA support for UPDATE .. FROM
#14379 - Add DSL.raw(String) and Settings.renderPlainSQLTemplatesAsRaw to 
allow plain SQL without templating
#14388 - Add support for ARRAY concatenation
#14406 - The AutoAlias feature isn't applied from within the JOIN tree, 
only from the TableList
#14416 - Support UNNEST(ARRAY[...]) in dialects that do not otherwise 
support arrays
#14426 - OUTER APPLY emulation should use TrueCondition, not hard coded 1 = 
1
#14440 - Add Teradata support for STRTOK via SplitPart
#14441 - Support parsing && and ! logical operators in MySQL
#14442 - Add ParserContext::parseCategory
#14447 - Get BigQuery dialect up to date
#14450 - Add native support for WINDOW in BigQuery
#14457 - Add support for MySQL style ELT() function (equivalent to CHOOSE())
#14458 - Add native DECODE() support in MemSQL and DECODE_ORACLE() support 
in MariaDB
#14464 - Improve confusing parser error message "SELECT or SEL" expected
#14465 - Add parser support for SQL Server OPENJSON with WITH clause
#14473 - Refactor Db2 v9 and Teradata LISTAGG emulation to use native 
support for XMLSERIALIZE instead of plain SQL templates
#14481 - Add parser support for bitemporal table queries with system_time 
and business_time
#14488 - Parser should disambiguate SQL Server + operand based on operand 
lookup
#14496 - Implement BatchMultiple::toString and BatchSingle::toString
#14499 - Add an R2DBC LoggingConnection
#14506 - Add a manual section for LoggingConnection
#14510 - Add Field<T>.comment(Comment): Field<T>
#14511 - GROUP_CONCAT manual page is missing a reference to 
`Settings.renderGroupConcatMaxLenSessionVariable`
#14512 - CREATE TABLE statements should generate COMMENT clauses for Field 
comments
#14513 - ALTER TABLE statements should generate COMMENT clauses for Field 
comments
#14534 - Add <generatedAnnotationJooqVersion/> option to the code generator
#14537 - Add org.jooq.True, org.jooq.False, and org.jooq.Null to QOM API
#14538 - Add DataType.isFloat()
#14539 - Add ALTER TABLE .. ADD .. [ FIRST | AFTER .. ] support for MariaDB
#14548 - UOperator[N] QOM types should generate both named accessors and 
mutators
#14555 - Improved emulation of row value expression predicates of degree 3+
#14560 - Refactor QuantifiedSelectImpl into separate subtypes
#14572 - Document kotlin coroutine usage in manual
#14573 - Add Settings.returnDefaultOnUpdatableRecord and 
Settings.returnComputedOnUpdatableRecord
#14578 - Add native support for DISTINCT predicate in 
SQLDialect.SQLSERVER2022
#14579 - Add native support for LEFT_SHIFT(), RIGHT_SHIFT() in 
SQLDialect.SQLSERVER2022
#14580 - Add native support for BIT_COUNT() in SQLDialect.SQLSERVER2022
#14581 - Add support for BIT_SET or BIT_GET functions
#14584 - Add bitwise operation support for EXASOL
#14586 - Update third party dependencies
#14592 - Add parser support for T-SQL table hints without WITH keyword
#14594 - Support parsing whitespace between : and named parameter identifier
#14595 - Support parsing WITH READ ONLY and WITH CHECK OPTION clauses
#14611 - Support WITH CHECK OPTION and WITH READ ONLY in other dialects
#14631 - Add parser support for SQLite's STRICT tables
#14641 - Settings.emulateMultiset should use 
NestedCollectionEmulation.JSONB as default again, in PostgreSQL
#14642 - Add a SQLExceptionLoggerListener that logs additional information 
to help debug constraint violations
#14648 - Get SNOWFLAKE dialect up to date
#14653 - Add SQL/JSON support for the SNOWFLAKE dialect
#14655 - Add Snowflake support for the TABLE() constructor to call table 
valued functions
#14658 - Get MariaDB dialect up to date
#14660 - Work around Snowflake's INSERT .. VALUES limitation of not being 
able to reference expressions
#14665 - Non-boolean field emulation should be NOT NULL aware
#14690 - Add parser support for SQLite's WITHOUT ROWID tables
#14701 - Let DataAccessException::sqlStateClass be based on SQL Server 
error codes for SQLStateClass 22 or 23
#14708 - Add Queries.batch(): Batch
#14711 - Add missing set(String, Param) and setLocal(String, Param) 
overloads
#14713 - Add support for interval types in DefaultConverterProvider
#14717 - Transform MySQL IN (SELECT .. LIMIT) to derived table also for 
MemSQL
#14718 - Add dialect versions for MEMSQL
#14722 - Add bitwise aggregate function support for Vertica
#14726 - Document Converter behaviour for UNION and other set operation 
subqueries
#14738 - Add parser support for Snowflake's EQUAL_NULL function
#14742 - Remove MariaDB's self-reference-in-DML-subquery restriction 
workaround
#14755 - Link to execute with jOOQ blog post from jOOQ / JPA manual sections
#14763 - Update maven-plugin-api and maven-core depedency

Breaking changes
----------------
#2500 - Add support for the MySQL YEAR data type, mapping to java.time.Year
#5405 - Generated SETOF table_type functions should reuse the TableRecord 
type of the referenced table
#7841 - DSL.asterisk() does not work well with plain SQL
#13047 - Make JAXB API dependency optional
#13565 - Update R2DBC dependency to 1.0.0.RELEASE
#13961 - Add ContextConverter, a Converter subtype that receives a 
ConverterContext in from() and to() methods
#14007 - Exclude SQLITE_SEQUENCE, SQLITE_MASTER, SQLITE_STAT% when 
<includeSystemTables/> is false
#14058 - WindowSpecification::$partitionBy should return UnmodifiableList<? 
extends GroupField>
#14095 - DSL.createView() returns raw type CreateViewAsStep
#14138 - DiagnosticsConnection should store duplicate SQL strings in 
Configuration, not static variable
#14153 - Make NullStatement a UTransient QueryPart
#14267 - Upgrade liquibase-core dependency to 4.17 in 
jooq-meta-extensions-liquibase
#14409 - Refactor Values to implement AutoAlias
#14445 - Delay ExecuteContext::connection in BatchMultiple and BatchSingle
#14476 - Move experimental migrations API to DSLContext::migrations to 
avoid conflicts with transaction statements
#14546 - QOM mutators on generic types such as UOperator should return 
covariant type
#14561 - Rename various QOM accessors / mutators from $select() to $query()
#14675 - Add a DataException for SQLState 22 and a 
IntegrityConstraintViolationException for SQLState 23
#14727 - Generated TRecord.from(IT) method behaves differently from 
Record.from() with respect to NOT NULL DEFAULT columns

Deprecations
----------------
#14634 - Deprecate transformInConditionSubqueryWithLimitToDerivedTable 
configuration and offer transformation in the jOOQ Open Source Edition

Bug Fixes
---------
#6359 - PostgreSQL inlined numeric arrays shouldn't generate string literals
#6516 - ORA-01704 when generating large CLOB inline values in Oracle
#7076 - ForcedType enum with no matching value being converted to last enum 
value
#7552 - INSERT .. ON DUPLICATE KEY { IGNORE | UPDATE } emulation should 
consider all UNIQUE keys on PostgreSQL
#8277 - Manual example for running the code generator with ant is missing 
the JDBC driver dependency
#8609 - MemSQL does not support "nested scalar subselects in project list"
#9623 - Update manual example about binding JSON types
#10014 - Infinite loop in code generation templating language if a 
parameter is forgotten
#10712 - Firebird invalid ORDER BY clause when using ORDER BY column with 
set operation
#10819 - NULL clause on H2's columns should not be produced
#11015 - VALUES() must cast NULL literals in the first row, if the type is 
known and the RDBMS cannot infer it
#11620 - In MySQL, withReturnAllOnUpdatableRecord(true) causes two SELECT 
statements
#11682 - Avoid generating field names using toString()
#11856 - StackOverflowError in parser with Settings.parseWithMetaLookups == 
IGNORE_ON_FAILURE
#12214 - JoinTable.onKey(ForeignKey) does not work when tables are aliased
#12942 - maven-deploy and maven-install bash and batch scripts should 
terminate on mvn command error
#13343 - R2DBC implementation may hang when there's an exception in the 
rendering logic
#13575 - Support EXCLUDED table emulation also in expressions
#13669 - Connection::close call is skipped when R2DBC query fails
#13689 - Cannot parse computed columns in the presence of identity column
#13690 - Data type rewrites to BOOLEAN don't work in Oracle JSON_OBJECT
#13703 - Ill formatted Javadoc in DSLContext
#13717 - Wrong query in example of manual section about dynamic SQL
#13722 - Regression: Client code no longer compiles when calling 
DSLContext.fetchSingle(Table, Condition...)
#13723 - Regression: Zero-length delimited identifier is generated for enum 
columns when using <outputSchemaToDefault/>
#13730 - Generated sources emits "reference not accessible" warning for 
`org.jooq.impl.AbstractTable#convertFrom`
#13732 - Wrong Javadoc in generated AbstractSpringDAOImpl
#13738 - Reactive transactions don't call Connection::close
#13751 - GROUP BY <table> does not use table alias
#13752 - Returning null from transactionCoroutine throws 
NoSuchElementException
#13762 - DefaultRecordBinding.pgRenderRecordCast and others don't apply 
schema mapping
#13766 - Upgrade log4j to 2.18.0 to mitigate CVE-2022-33915
#13771 - Parser doesn't support parsing parenthesised GROUP BY expression
#13780 - ERROR: unknown function: nameconcatoid() in CockroachDBDatabase on 
CockroachDB 22
#13796 - Virtual client side computed columns must be excluded from 
generated DDL statements
#13798 - GenerationOption.DEFAULT should act as STORED in client side 
computed columns
#13800 - Improve formatting of H2 computed columns
#13802 - TransactionPublisher does not commit transaction when wrapped in 
reactor's Mono
#13803 - AbstractSpringDAOImpl imported from wrong package when generating 
multiple schemas
#13804 - Wrong kotlin code generated for SQL Server stored procedures
#13808 - ArrayGet should not produce parentheses when used as a store 
assignment target, e.g. in UPDATE
#13816 - Wrong example in manual section about ST_Equals
#13818 - MySQL DEFAULT CURRENT_TIMESTAMP column is generated as computed 
column
#13827 - NullPointerException when calling DBMS_AQ.dequeue
#13843 - Cannot use Table as SelectField from derived table where nesting 
records is supported natively
#13844 - Fix typo in code generation log message
#13851 - Wrong DDL generated for computed columns in MEMSQL
#13854 - Syntax error in MemSQL code generation
#13857 - Upgrade pgjdbc to mitigate CVE-2022-31197
#13866 - KotlinGenerator produces directory names with backticks when 
catalog names contain special characters
#13867 - MemSQL doesn't support the SET @@var = @other_var syntax
#13872 - PostgreSQL arrays don't deserialise correctly when using XML 
MULTISET emulation
#13880 - Parser should parse and ignore PRIMARY KEY UNIQUE
#13890 - Broken Javadoc link for JDK Generated annotation in manual
#13897 - The maven codegen plugin does not load syntheticObjects from 
external configurationFile
#13904 - Code generation fails with H2 2.1.214 when using 
CASE_INSENSITIVE_IDENTIFIERS
#13906 - Logger name repeated twice
#13913 - Convert truncates microseconds from OffsetDateTime when converting 
to Instant
#13919 - PostgreSQL generated code doesn't maintain precision / scale on 
NUMERIC or TIME, TIMETZ, TIMESTAMP, TIMESTAMPTZ types
#13926 - NullPointerException thrown instead of DetachedException, when 
executing detached query
#13934 - DDLDatabase cannot handle qualified enum types in CREATE TABLE
#13952 - IsNotDistinctFrom predicate doesn't declare non-nullability
#13965 - Work around HSQLDB bug where NULL literal cannot be fetched as 
array
#13974 - ParsingConnection doesn't correctly relay Statement::getResultSet, 
Statement::getUpdateCount, or Statement::getMoreResults on static Statement
#13976 - Wrong Java version support listed on website for jOOQ 3.17 Open 
Source Edition
#13993 - Wrong value returned from NullCondition::isNullable
#14003 - Compilation error in generated code when combining <pojos/>, 
<interfaces/> and <embeddables/>
#14010 - Postgres array of single-field UDT reads UDT's field as null 
instead of actual value
#14017 - Moderately slow query on ALL_TAB_COLS due to cartesian product in 
OracleTableDefinition
#14021 - Moderately slow query on ALL_ARGUMENTS due to EXTENDED DATA LINK 
FULL in OracleTableDefinition
#14026 - Fix "Use case" -> "Possible solution" field name in feature 
request template
#14027 - ClobBinding and BlobBinding shouldn't delegate sql() generation to 
internal DefaultStringBinding or DefaultBytesBinding
#14033 - Fix incorrect grammar in XSD documentation
#14034 - Upgrade to Scala 2.13.9 to mitigate CVE-2022-36944
#14052 - Upgrade to HSQLDB 2.7.1 to mitigate CVE-2022-41853
#14053 - Upgrade jackson-databind dependency to 2.13.4 to mitigate 
CVE-2022-42004
#14055 - Upgrade protobuf-java to 3.16.3 to mitigate CVE-2021-22569
#14060 - Work around Derby's Error [30000] [54002]: A string constant 
starting with '...' is too long
#14067 - ClobBinding and BlobBinding shouldn't bind a null value on 
PreparedStatement::setClob and ::setBlob in Firebird, HSQLDB
#14086 - Support parsing SELECT .. INTO <qualified table> FROM ..
#14094 - Manual shouldn't suggest calling JSON::toString or JSONB::toString
#14097 - Cannot pass null values as arguments for associative arrays
#14100 - Table as SelectField native support relies on actual column order, 
not generated order
#14105 - ClassCastException when nesting array(select row) projections in 
PostgreSQL
#14108 - Upgrade jackson-databind dependency to 2.13.4.2 to mitigate 
CVE-2022-42003
#14111 - Wrong key data type stored in associative record
#14112 - Cannot pass null values as arguments for PL/SQL RECORD types
#14125 - Document a few missing SQL transformations in the manual
#14126 - Wrong descriptions in manual section "codegen-extension-postgres"
#14130 - Wrong claims about SQL standard optional FROM clause in manual
#14132 - Code generator shouldn't generate JPA Column precision on 
non-decimal types
#14141 - Generated text blocks for view sources should escape \
#14163 - Wrong transformation for transformPatternsTrivialPredicates when 
DISTINCT predicate operand is NULL
#14169 - HAVING TRUE is not a trivial predicate for the 
transformPatternsTrivialPredicates transformation
#14176 - ParserCLI in interactive mode should use Settings defaults for its 
SQL transformation flags
#14182 - Typo in window function section of the manual
#14185 - [#14182] Fix typo in percentRank javadoc comment
#14187 - StackOverflowError in transformPatternsArithmeticExpressions when 
commutative operator has 2 inline arguments
#14191 - DefaultDiagnosticsContext should cache resultSetFetchedRows
#14194 - Bad syntax generated when using the Field.collate() clause in 
CREATE TABLE statements
#14195 - Cannot query geometry value in a multiset
#14204 - AbstractToJacksonConverter does not work when userType is array
#14205 - ResultSet diagnostics don't work for PreparedStatement
#14206 - Improve formatting of H2 procedural ELSE statement
#14210 - Regression in MS Access CONCAT implementation
#14213 - Typo in mapping exception message
#14215 - Plain SQL INSERT .. RETURNING doesn't work with unqualified field 
templates in SQL Server
#14220 - Update blog links from Javadoc and comments
#14225 - Missing changelog for version 3.17.5
#14226 - Outdated Javadoc on DSL.array() for how jOOQ renders H2 array 
constructors
#14231 - Cannot query geometry value in a nested ROW
#14232 - ORA-00904: "v0"."GET_WKT": invalid identifier
#14236 - DefaultDiagnosticsContext shouldn't call ResultSet::getMetaData on 
already closed ResultSet
#14239 - Work around SQLite's error: HAVING clause on a non-aggregate query
#14245 - Replace internal DSL.NULL(x) by DSL.inline(null, x)
#14246 - Improve DERBY emulation of ROUND
#14252 - Document CHOOSE
#14255 - Improve generated unknown data type javadoc when forcedTypes match 
return type, but there are still unknown parameter types
#14258 - ClassCastException in WithImpl::$replace
#14276 - Median emulation ignores FILTER and OVER clauses
#14282 - Bump postgresql from 42.5.0 to 42.5.1
#14283 - Kotlin Value Classes in Constructor lead to name based mapping 
failure
#14286 - Upgrade pgjdbc to 42.5.1 to mitigate CVE-2022-41946
#14289 - ScalaGenerator generated code should avoid "procedure syntax"
#14294 - ON CONFLICT DO NOTHING emulation should continue to be applied for 
PostgreSQL 9.3 and 9.4
#14300 - Expand unqualified asterisk in MySQL when it's not leading
#14313 - Informix DDL statements generate invalid SQL for timestamp columns
#14316 - Informix CURRENT_TIMESTAMP emulation doesn't work as DDL DEFAULT 
expression
#14319 - Informix BOOLEAN expressions can't be compared in some cases
#14321 - Wrong NULL behaviour of BitAndAgg, BitOrAgg, and related aggregate 
function emulations
#14325 - Informix BOOLEAN literals 't' and 'f' need to be cast to BOOLEAN 
explicitly
#14328 - Excess query executed against SQLite when emulating INSERT .. 
RETURNING
#14333 - ArrayIndexOutOfBoundsException when parsing ill formed SQL ending 
with a comment and a semicolon
#14339 - Exception in Teradata code generation: Unknown column TVName
#14346 - Error: Invalid Top N Value: N is too big for Teradata OFFSET 
emulation
#14349 - Teradata TOP expression or DISTINCT TOP don't work
#14352 - PostgresDSL arrayOverlap does not properly cast arguments
#14353 - Parser meta lookups don't work correctly when using DELETE .. FROM 
with aliased tables
#14356 - java.lang.StackOverflowError at 
org.jooq.impl.Expression.acceptAssociative
#14357 - Use ? as parameter marker on MySQL, MariaDB when using R2DBC
#14368 - Meta::getTables should list also PARTITIONED TABLE in PostgreSQL
#14371 - Slow TableAlias::equals implementation, when argument type is 
TableImpl
#14372 - Parser reports wrong Ambiguous field identifier error when derived 
tables share column names
#14373 - Parser produces wrong projection data type when parsing doubly 
nested derived table
#14382 - Wrong example code in manual section "connection-access"
#14383 - Broken link in a logging statement and Javadoc
#14387 - Table::useIndex and similar table wrapping methods break joins 
using onKey()
#14395 - DSL::noField doesn't work in SEEK clause
#14403 - "You can't specify target table '...' for update in FROM clause" 
when target table has index hint in MySQL
#14421 - Update error reporting URL in log messages
#14425 - Code generation for sequences fails for SQL Server 2014
#14431 - Generated TableImpl::getSchema override should be annotated 
Nullable
#14432 - Correctly hint nullability of getSchema() method
#14437 - UnsupportedOperationException when selecting row with YearToSecond
#14448 - BigQuery * EXCEPT can't have qualified identifiers
#14451 - WindowSpecificationPartitionByStep::partitionBy doesn't match 
dialects from WindowPartitionByStep::partitionBy
#14452 - BigQuery without FROM clause cannot use SELECT DISTINCT
#14453 - Emulate BETWEEN SYMMETRIC in BigQuery
#14454 - Wrong cast to CHAR type when generated code references 
SQLDataType.CHAR in BigQuery
#14459 - Work around Db2 error "The string constant beginning with ... is 
too long"
#14463 - Work around SQL Server's 4000 character JSON_VALUE length 
limitation
#14466 - Wrong result column type for requested conversion when reading 
JSONB_ARRAYAGG and JSONB_OBJECTAGG in DB2
#14469 - MULTISET comparison doesn't work in Db2 with XML or JSONB emulation
#14470 - Support parsing ALL keyword in aggregate functions
#14477 - Wrong SQL generated in SQL Server when virtual client side 
computed columns are referenced in RETURNING clause
#14479 - SQL Server RETURNING clause emulation for fetching trigger 
generated values generates incorrect SQL if no columns are fetched
#14489 - Syntax errors lead to unclosed R2DBC connection in SQL Server
#14507 - Remove redundant manual section "connection access"
#14514 - Feedback about translation tool
#14519 - Building jOOQ on Java 19 fails in xtend
#14524 - Compilation error due to missing import in generated code when 
using <lambdaConverter/> on a routine
#14528 - Update ParserCLI manual page with --help output
#14530 - NullPointerException in DB2Database when constraint schema is 
unavailable
#14535 - Fix org.jooq.Null Javadoc
#14541 - Add support for top level nested records in R2DBC queries
#14553 - Some QOM mutators of optional function parameters are annotated 
@Nullable, when they are not
#14564 - KotlinGenerator generates invalid code in equals() and hashCode() 
methods for inline value class fields
#14565 - Add missing documentation about <pojosEqualsAndHashCode/>
#14571 - Regression: UpdateQuery.execute() with RETURNING clause returns 1 
even when no records were updated
#14574 - Regression: Meta::getTables returns tables of type TableType.TABLE 
when they're actually system views
#14597 - CockroachDBDatabase doesn't report enum types on columns correctly 
anymore
#14598 - Exception while executing meta query on MySQL 5.6: Unknown column 
'information_schema.COLUMNS.GENERATION_EXPRESSION'
#14599 - setAllToExcluded also sets fields not specified in insert to 
excluded when using INSERT .. SET syntax
#14607 - Manual dialects comparison should turn off the generation of 
optional AS keywords
#14615 - Wrong window function example in manual
#14617 - SQL Server nullability information isn't generated correctly for 
domains
#14618 - Missing nullability information on nullable DOMAIN types that are 
made non-null by CREATE TABLE
#14621 - Work around a YugabyteDB regression querying the 
INFORMATION_SCHEMA.ATTRIBUTES table
#14628 - Missing default information on DOMAIN types that get an overridden 
DEFAULT by CREATE TABLE
#14635 - Single message JooqLogger doesn't work
#14644 - LoggerListener::fetchEnd should check if DEBUG logging is enabled
#14650 - Wrong emulation of GENERATE_SERIES with STEP parameter for 
Snowflake
#14657 - Nesting MULTISET/ROW/MULTISET/ROW with ad-hoc converters and JSON 
emulation results in ClassCastException
#14668 - Wrong ON KEY JOIN generated when aliased table appears twice in 
the JOIN tree
#14671 - Wrong column resolved by JoinTable.field(Field), when JoinTable 
contains aliased tables and lookup uses unaliased tables
#14684 - Translator duplicates comment only content when retaining comments
#14694 - INSERT statement does not apply types to bind values in VALUES 
clause when using valuesOfRows()
#14696 - Wrapping SQLException must copy SQLState and other info from 
wrapped SQLException
#14699 - PostgreSQL interval parser handle fractional seconds with interval 
style iso_8601
#14703 - SQL Server RETURNING clause emulation for fetching server side 
computed columns generates incorrect SQL if only computed columns are 
fetched
#14721 - performace regression after upgrade from 3.14.16 to 3.17.8
#14723 - Work around Vertica's ERROR: Subqueries not allowed in target of 
insert limitation
#14730 - Push down ScopeMappable marker interface from AbstractField to 
AbstractWindowFunction and TableFieldImpl
#14731 - Use LazyName in AbstractParam
#14736 - PostgreSQL Numeric array type with precision/scale too large in 
generated code
#14747 - Speed up AbstractRow.equals() and hashCode() when comparing with 
other AbstractRow

-- 
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/a4d1a3ba-9860-4659-b436-f2f6cad54b91n%40googlegroups.com.

Reply via email to