[ ANNOUNCEMENT ] jOOQ 3.18.0 with more Diagnostics, SQL/JSON, Oracle Associative Arrays, Multi dimensional Arrays, R2DBC 1.0

229 views
Skip to first unread message

Lukas Eder

unread,
Mar 8, 2023, 11:34:04 AM3/8/23
to jOOQ User Group
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

hantsy bai

unread,
Mar 8, 2023, 9:29:47 PM3/8/23
to jooq...@googlegroups.com
Congratulations.
Great news to get R2dbc 1.0 support.
---

Regards,

Hantsy Bai

Self-employed consultant, fullstack developer, agile coach, freelancer/remote worker

GitHub: https://github.com/hantsy

Twitter: https://twitter.com/@hantsy

Medium: https://medium.com/@hantsy


--
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 jooq-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jooq-user/a4d1a3ba-9860-4659-b436-f2f6cad54b91n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages