jOOQ

jOOQ is the best way to write SQL in Java

OTHER License

Stars
5.9K
Committers
107

Bot releases are visible (Hide)

jOOQ - 3.17.5

Published by lukaseder 9 months ago

Version 3.17.5 - November 4, 2022

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

Features and Improvements

#13997 - Improve documentation on Fields lookup methods
#14072 - Add parser support for undocumented AS keyword in SQL Server procedure parameter list

Bug Fixes

#13966 - HSQLDB arrays can't be projected from nested rows
#13983 - ParsingConnection doesn't correctly relay Statement::getResultSet, Statement::getUpdateCount, or Statement::getMoreResults on static Statement
#13994 - Wrong value returned from NullCondition::isNullable
#14015 - Slow query against SYS.ALL_INDEXES in OracleDatabase
#14018 - Moderately slow query on ALL_TAB_COLS due to cartesian product in OracleTableDefinition
#14022 - Moderately slow query on ALL_ARGUMENTS due to EXTENDED DATA LINK FULL in OracleTableDefinition
#14024 - Postgres array of single-field UDT reads UDT's field as null instead of actual value
#14028 - ClobBinding and BlobBinding shouldn't delegate sql() generation to internal DefaultStringBinding or DefaultBytesBinding
#14031 - ORA-01704 when generating large CLOB inline values in Oracle
#14035 - Upgrade to Scala 2.13.9 to mitigate CVE-2022-36944
#14037 - KotlinGenerator produces directory names with backticks when catalog names contain special characters
#14054 - Upgrade jackson-databind dependency to 2.13.4 to mitigate CVE-2022-42004
#14056 - Upgrade protobuf-java to 3.16.3 to mitigate CVE-2021-22569
#14061 - Work around Derby's Error [30000] [54002]: A string constant starting with '...' is too long
#14068 - ClobBinding and BlobBinding shouldn't bind a null value on PreparedStatement::setClob and ::setBlob in Firebird, HSQLDB
#14087 - Support parsing SELECT .. INTO FROM ..
#14101 - Table as SelectField native support relies on actual column order, not generated order
#14109 - Upgrade jackson-databind dependency to 2.13.4.2 to mitigate CVE-2022-42003
#14117 - ClassCastException when nesting array(select row) projections in PostgreSQL
#14134 - Code generator shouldn't generate JPA Column precision on non-decimal types
#14142 - Generated text blocks for view sources should escape
#14164 - Wrong transformation for transformPatternsTrivialPredicates when DISTINCT predicate operand is NULL

jOOQ - 3.17.6

Published by lukaseder 9 months ago

Version 3.17.6 - December 8, 2022

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

Features and Improvements

#14243 - Add support for DB2 ROWNUMBER and DENSERANK window function in parser

Bug Fixes

#14177 - ParserCLI in interactive mode should use Settings defaults for its SQL transformation flags
#14183 - MANIFEST.MF contains unnecessary javax.persistence dependency
#14188 - StackOverflowError in transformPatternsArithmeticExpressions when commutative operator has 2 inline arguments
#14192 - DefaultDiagnosticsContext should cache resultSetFetchedRows
#14197 - Bad syntax generated when using the Field.collate() clause in CREATE TABLE statements
#14211 - Regression in MS Access CONCAT implementation
#14219 - Plain SQL INSERT .. RETURNING doesn't work with unqualified field templates in SQL Server
#14221 - Update blog links from Javadoc and comments
#14227 - Outdated Javadoc on DSL.array() for how jOOQ renders H2 array constructors
#14233 - ORA-00904: "v0"."GET_WKT": invalid identifier
#14234 - Cannot query geometry value in a nested ROW
#14235 - Cannot query geometry value in a multiset
#14237 - DefaultDiagnosticsContext shouldn't call ResultSet::getMetaData on already closed ResultSet
#14240 - Work around SQLite's error: HAVING clause on a non-aggregate query
#14259 - ClassCastException in WithImpl::$replace
#14265 - Improve generated unknown data type javadoc when forcedTypes match return type, but there are still unknown parameter types
#14277 - Median emulation ignores FILTER and OVER clauses
#14281 - AbstractToJacksonConverter does not work when userType is array
#14284 - Kotlin Value Classes in Constructor lead to name based mapping failure
#14287 - Upgrade pgjdbc to 42.4.3 to mitigate CVE-2022-41946
#14290 - ScalaGenerator generated code should avoid "procedure syntax"
#14292 - ForcedType enum with no matching value being converted to last enum value
#14295 - ON CONFLICT DO NOTHING emulation should continue to be applied for PostgreSQL 9.3 and 9.4
#14304 - In MySQL, withReturnAllOnUpdatableRecord(true) causes two SELECT statements
#14314 - Informix DDL statements generate invalid SQL for timestamp columns
#14317 - Informix CURRENT_TIMESTAMP emulation doesn't work as DDL DEFAULT expression
#14322 - Wrong NULL behaviour of BitAndAgg, BitOrAgg, and related aggregate function emulations
#14326 - Informix BOOLEAN literals 't' and 'f' need to be cast to BOOLEAN explicitly
#14329 - Excess query executed against SQLite when emulating INSERT .. RETURNING
#14334 - ArrayIndexOutOfBoundsException when parsing ill formed SQL ending with a comment and a semicolon
#14340 - Exception in Teradata code generation: Unknown column TVName
#14344 - StackOverflowError in parser with Settings.parseWithMetaLookups == IGNORE_ON_FAILURE
#14347 - Error: Invalid Top N Value: N is too big for Teradata OFFSET emulation
#14350 - Teradata TOP expression or DISTINCT TOP don't work
#14354 - Parser meta lookups don't work correctly when using DELETE .. FROM with aliased tables
#14369 - Meta::getTables should list also PARTITIONED TABLE
#14374 - Parser produces wrong projection data type when parsing doubly nested derived table
#14376 - Parser reports wrong Ambiguous field identifier error when derived tables share column names

jOOQ - 3.17.7

Published by lukaseder 9 months ago

Version 3.17.7 - January 17, 2023

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

Features and Improvements

#14401 - Code generator should properly qualify H2 domain enums
#14500 - Add an R2DBC LoggingConnection

Bug Fixes

#14384 - Broken link in a logging statement and Javadoc
#14390 - Table::useIndex and similar table wrapping methods break joins using onKey()
#14396 - DSL::noField doesn't work in SEEK clause
#14399 - java.lang.StackOverflowError at org.jooq.impl.Expression.acceptAssociative
#14404 - "You can't specify target table '...' for update in FROM clause" when target table has index hint in MySQL
#14415 - DDLDatabase cannot handle qualified enum types in CREATE TABLE
#14422 - Update error reporting URL in log messages
#14427 - Code generation for sequences fails for SQL Server 2014
#14434 - Generated TableImpl::getSchema override should be annotated Nullable
#14460 - Work around Db2 error "The string constant beginning with ... is too long"
#14467 - Wrong result column type for requested conversion when reading JSONB_ARRAYAGG and JSONB_OBJECTAGG in DB2
#14480 - SQL Server RETURNING clause emulation for fetching trigger generated values generates incorrect SQL if no columns are fetched
#14484 - Wrong SQL generated in SQL Server when virtual client side computed columns are referenced in RETURNING clause
#14493 - Syntax errors lead to unclosed R2DBC connection in SQL Server
#14497 - TransactionPublisher does not commit transaction when wrapped in reactor's Mono

jOOQ - 3.17.8

Published by lukaseder 9 months ago

Version 3.17.8 - February 9, 2023

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

Bug Fixes

#14520 - Building jOOQ on Java 19 fails in xtend
#14525 - Compilation error due to missing import in generated code when using on a routine
#14531 - NullPointerException in DB2Database when constraint schema is unavailable
#14536 - Fix org.jooq.Null Javadoc
#14542 - Add support for top level nested records in R2DBC queries
#14575 - Regression: Meta::getTables returns tables of type TableType.TABLE when they're actually system views
#14587 - Use ? as parameter marker on MySQL, MariaDB when using R2DBC
#14589 - KotlinGenerator generates invalid code in equals() and hashCode() methods for inline value class fields
#14596 - Regression: UpdateQuery.execute() with RETURNING clause returns 1 even when no records were updated
#14600 - setAllToExcluded also sets fields not specified in insert to excluded when using INSERT .. SET syntax
#14601 - Exception while executing meta query on MySQL 5.6: Unknown column 'information_schema.COLUMNS.GENERATION_EXPRESSION'
#14603 - CockroachDBDatabase doesn't report enum types on columns correctly anymore

jOOQ - 3.17.9

Published by lukaseder 9 months ago

Version 3.17.9 - March 8, 2023

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

Features and Improvements

#14638 - Log warning when unsupported dialect version is being used
#14691 - Add parser support for SQLite's WITHOUT ROWID tables
#14709 - PostgreSQL interval parser handle fractional seconds with interval style iso_8601
#14714 - Add support for interval types in DefaultConverterProvider

Bug Fixes

#14619 - SQL Server nullability information isn't generated correctly for domains
#14622 - Work around a YugabyteDB regression querying the INFORMATION_SCHEMA.ATTRIBUTES table
#14625 - Missing nullability information on nullable DOMAIN types that are made non-null by CREATE TABLE
#14629 - Missing default information on DOMAIN types that get an overridden DEFAULT by CREATE TABLE
#14632 - Add parser support for SQLite's STRICT tables
#14636 - Single message JooqLogger doesn't work
#14645 - LoggerListener::fetchEnd should check if DEBUG logging is enabled
#14651 - Wrong emulation of GENERATE_SERIES with STEP parameter for Snowflake
#14669 - Wrong ON KEY JOIN generated when aliased table appears twice in the JOIN tree
#14673 - Wrong column resolved by JoinTable.field(Field), when JoinTable contains aliased tables and lookup uses unaliased tables
#14678 - JoinTable.onKey(ForeignKey) does not work when tables are aliased
#14688 - Translator duplicates comment only content when retaining comments
#14697 - Wrapping SQLException must copy SQLState and other info from wrapped SQLException
#14704 - SQL Server RETURNING clause emulation for fetching server side computed columns generates incorrect SQL if only computed columns are fetched
#14705 - INSERT statement does not apply types to bind values in VALUES clause when using valuesOfRows()
#14715 - UnsupportedOperationException when selecting row with YearToSecond
#14732 - Use LazyName in AbstractParam
#14734 - Push down ScopeMappable marker interface from AbstractField to AbstractWindowFunction and TableFieldImpl
#14740 - PostgreSQL Numeric array type with precision/scale too large in generated code
#14745 - Slow TableAlias::equals implementation, when argument type is TableImpl
#14748 - Speed up AbstractRow.equals() and hashCode() when comparing with other AbstractRow
#14753 - Nesting MULTISET/ROW/MULTISET/ROW with ad-hoc converters and JSON emulation results in ClassCastException
#14758 - VALUES() must cast NULL literals in the first row, if the type is known and the RDBMS cannot infer it

jOOQ - 3.17.10

Published by lukaseder 9 months ago

Version 3.17.10 - March 21, 2023

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

Features and Improvements

#14820 - Add a remark on the Converter Javadoc that implementations must be able to handle NULL

Bug Fixes

#14766 - Avoid dialect version lookup in AbstractDatabase, if unnecessary
#14782 - Correctly annotate SIMILAR TO operator
#14793 - SQLDialect version check throws NumberFormatException in Percona DB
#14826 - race conditions in jOOQ internals

jOOQ - 3.17.11

Published by lukaseder 9 months ago

Version 3.17.11 - March 29, 2023

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

Bug Fixes

#14835 - Version support check shouldn't log error message for MockConnection
#14847 - Upgrade Spring to mitigate CVE-2023-20861
#14851 - ROLLUP, CUBE should generate Keyword, not Name
#14857 - Compilation error in generated code for embeddable properties when reducing visibility to internal, and generating interfaces
#14860 - Kotlin Code generator generates invalid code for embeddables in POJOs when immutable interfaces is activated
#14863 - Kotlin Code generator generates invalid code for embeddables in POJOs when immutable interfaces is activated
#14878 - Add warnings to manual and Javadoc about ON KEY ambiguity caveats

jOOQ - 3.17.12

Published by lukaseder 9 months ago

Version 3.17.12 - April 11, 2023

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

Bug Fixes

#14886 - Regression: KotlinGenerator produces superfluous public keyword for overriding methods
#14888 - Generate nullable annotations also on record constructor, when is set
#14892 - QUALIFY transformation should unalias columns again
#14897 - Add Javadoc to DAO::insert and DAO::update regarding Settings.returnRecordToPojo
#14910 - Missing parentheses when second subquery in set operation contains deep nesting
#14918 - ERROR: type "blob" does not exist when casting NULL as a domain converted as user defined type using class literal
#14921 - Compilation error with embedded domains and postgres types
#14926 - Explicitly set locale to English in maven-javadoc-plugin

jOOQ - 3.17.13

Published by lukaseder 9 months ago

Version 3.17.13 - May 11, 2023

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

Features and Improvements

#14956 - Add Javadoc hints about implementation of JSONB::toString, JSONB::hashCode, and JSONB::equals
#14969 - Reactive batch implementations should throw UnsupportedOperationException with a message
#15010 - Cannot pass Table reference to row() constructor in array or list

Bug Fixes

#14940 - Unstable ordering of Derby generated foreign keys
#14951 - Upgrade spring-core dependency to mitigate CVE-2023-20863
#14962 - No-arg DefaultConfiguration() constructor clones default settings twice
#15000 - OffsetDateTimeRange javadoc should reference tstzrange not tsrange
#15017 - A few MySQL 5.6 related fixes
#15030 - Support NULL bind values of type Interval in R2DBC integration
#15033 - R2DBC bind value related exceptions produce misleading error message
#15044 - Support NULL bind values of type UUID in R2DBC integration

jOOQ - 3.17.14

Published by lukaseder 9 months ago

Version 3.17.14 - June 23, 2023

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

Features and Improvements

#15077 - maven-install and maven-deploy shell scripts should use -e flag to report more error info
#15119 - Add a jooq.codegen.propertyOverride system property to GenerationTool
#15132 - Add DSLContext.transactionCoroutine overload accepting CoroutineContext
#15140 - Improve Javadoc on DSLContext.executeInsert(), executeUpdate(), and executeDelete() about optimistic locking not applying
#15233 - Add support for MySQL DECIMAL/FLOAT/DOUBLE/REAL UNSIGNED types in Meta and code generation

Deprecations

#15199 - Deprecate inconsistent DSL.jsonObject(Field...) and DSL.jsonbObject(Field...) overloads

Bug Fixes

#15063 - DDLDatabase defaultNameCase=lower doesn't work with ENUM types
#15067 - Unable to rename table with qualified target table name
#15080 - Add error message to maven-install.sh which doesn't work with Maven 3.9.0 due to MNG-7679
#15083 - Parser meta lookup fails when using qualified asterisk on a table alias
#15090 - Misleading error message when ON KEY finds ambiguous keys
#15110 - Compilation error in Oracle generated code for package type in PL/SQL RECORD constructor
#15112 - Ambiguous type name warning for non-ambiguous type name in OracleDatabase
#15123 - Wrong warning logged regarding CockroachDB version support
#15129 - DefaultConfiguration::toString logs wrong flags in R2DBC context
#15134 - Use awaitSingle instead of awaitFirstOrNull in transactionCoroutine to correctly sequence transaction script
#15137 - Improve error message when unversioned, row based optimistic locking doesn't work with DAOs and POJOs
#15151 - PostgresDatabase and subtypes may produce wrong table comments in presence of stored functions
#15170 - NullPointerException in code generator when omitting directory
#15185 - Compilation error in generated DAO code when visibility of a field is changed to private
#15193 - PostgreSQL: array() causes exception
#15204 - Add missing Experimental annotation to migrations API types
#15216 - H2 dialect should cast binary data of unknown length as VARBINARY, not as BINARY
#15220 - NullPointerException in AbstractMeta::lookupTable and other methods, when there is no DefaultCatalog
#15241 - MetaImpl::ddl() should produce plain SQL CREATE VIEW statements if it can't parse the view contents
#15244 - Ambiguous match found when using aliases with implicit join and joining the same table twice
#15255 - ScalaGenerator produces wrong code when generator strategy adds multiple interfaces to legacy enum type
#15263 - Add Javadoc to plain SQL DSL.field() constructors recommending to use code generation or at least pass a DataType
#15268 - LoggerListener logs some batch queries twice, when using BatchMultiple
#15273 - Wrong implementation of SelectQueryImpl::wrapQueryExpressionBodyInDerivedTable in jOOQ Open Source Edition

jOOQ - 3.17.15

Published by lukaseder 9 months ago

Version 3.17.15 - August 10, 2023

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

Features and Improvements

#15288 - Add Javadoc to discourage using any m(Class) method if there's an m(DataType) overload
#15312 - Builds should log their build date with the logo
#15417 - "Ambiguous match found" warning log should reference qualified field name, if available
#15450 - Add Javadoc hints about Record.changed() values to InsertValuesStep[N].valuesOfRecords(...)

Bug Fixes

#15295 - Meta.ddl() export generates wrong DDL for constraints with USING INDEX clause in Oracle
#15305 - Meta.ddl() generates broken DDL for smallserial columns
#15329 - Error when generating code from a MariaDB database containing packages
#15338 - Parser error when using SET new.x = y syntax in triggers
#15343 - Bad syntax in Firebird when creating triggers for unquoted table names
#15361 - Block::$replace doesn't replace anything
#15368 - Avoid generating sort specification in indexes in dialects that don't support it
#15377 - Table with 255 columns generates record and POJO objects whose constructors have too many parameters
#15380 - Batch::executeAsync throws NullPointerException when executed with R2DBC driver
#15386 - Compilation error in generated code when global object references conflict with schema names
#15390 - Settings.metaIncludeSystemIndexes doesn't work for system indexes of unnamed constraints in HSQLDB
#15397 - MetaImpl is missing view source code or unique constraints for objects in other catalogs
#15404 - Bad formatting of hints at the end of maven-install.sh scripts
#15421 - Can't generate code using CockroachDB materialized view
#15425 - Table list to ANSI JOIN transformation doesn't work if table declarations are fully qualified, but references are not
#15445 - Exception when MockResult contains UDTRecord
#15457 - AutoConverter loses nanosecond precision when converting from Instant to LocalDateTime or OffsetDateTime

jOOQ - 3.17.16

Published by lukaseder 9 months ago

Version 3.17.16 - October 10, 2023

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

Features and Improvements

#15522 - Add a log message whenever an exception occurs with the SQLDialect.DEFAULT

Bug Fixes

#15480 - AutoConverter should be lenient about TIME type fractional seconds
#15484 - Can't invoke default methods on proxied types returned by DefaultRecordMapper in JDK 9 or more
#15493 - Code generation fails on BigQuery when querying INFORMATION_SCHEMA without a DefaultDataset being specified
#15501 - Work around SQL Server's 1000 row value limitation for INSERT statements
#15526 - Missing Stringly annotation on String... varargs parameters
#15541 - Meta.ddl() should export tables first, then views
#15561 - Datetime precision isn't maintained by code generator for domain types
#15566 - DefaultRecordMapper should skip most mappers when an instance is provided
#15571 - Record.into(recordInstance) should modify argument record
#15577 - DefaultOtherBinding shouldn't create string literals for inline values for numeric data types
#15580 - MutablePOJOMapper should be able to map to instance, even if there isn't a default constructor
#15586 - Install shell/batch scripts should be clearer about Java 17+ support
#15600 - Fix DefaultRecordMapper Javadoc to reflect actual behaviour
#15604 - Plain SQL Javadoc disclaimer is absent on api generator generated step methods
#15616 - Wrong Support annotation on COMMENT ON COLUMN for MariaDB
#15648 - On JDK 21, generated code should apply "this-escape" warning suppression
#15652 - DefaultConfiguration doesn't serialize AuditProvider or TransformProvider
#15660 - KotlinGenerator - isKotlinNotNullPojoAttributes setting prevents generated DAO to set serial ID to pojo
#15663 - Copy paste errors in likeIgnoreCase and containsIgnoreCase Javadoc
#15666 - Query::isExecutable should be checked in the R2DBC implementation, allowing no-ops for non-executable queries
#15670 - INSERT .. ON DUPLICATE KEY UPDATE emulation mustn't silently insert the last row only in Derby multi row inserts
#15675 - Domains aren't generated if they don't have a CHECK constraint associated with them, in HSQLDB
#15680 - Code generator doesn't generate multiple check constraints for DOMAIN types
#15689 - HANA sort indirection doesn't work with bind values

jOOQ - 3.17.17

Published by lukaseder 9 months ago

Version 3.17.17 - December 20, 2023

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

Features and Improvements

#15794 - Offer a public Maven repository for commercial distributions (maven-install.sh and maven-deploy.sh hints)
#15858 - Deprecation log warning about should link to relevant manual section

Bug Fixes

#15705 - Reactive transaction hangs when exception thrown in lambda constructing reactive flow
#15716 - Possible compilation errors in generated code when column names contain double quotes
#15726 - BindingSetStatementContext should reference actual ExecuteContext, if available
#15729 - DefaultStringBinding should bind java.sql.Clob for CLOB types in Oracle MERGE statements
#15737 - Ill-formed Javadoc causes JDK 21 javadoc tool to crash
#15740 - BatchCRUD does not update optimistic locking version and timestamp values in UpdatableRecord
#15748 - Syntax error when from current_timestamp when precision bind value is specified for Postgres
#15758 - Implicit JOIN implementation for DML is incorrect if paths navigate self joins
#15764 - Compile errors of generated classes using scala 3
#15769 - JSONB inline values should be rendered using JSONB.data() not JSONB.toString()
#15772 - MiniJAXB::marshal(XMLAppendable, OutputStream) does not flush decorating writer
#15785 - Add Javadoc to the Query::bind methods indicating that they bind values in the rendered order, not the input order
#15801 - LazyVal::generatesCast should return true
#15806 - MetaImpl reports system indexes for Derby 10.16
#15841 - Support overlapping embeddables when enabling
#15852 - Compilation error in KotlinGenerator generated code for tables containing a FROM column, when is activated
#15855 - Accidental override when enabling for tables with columns X and IS_X in Kotlin
#15878 - Internal RecordDataType.getDataType() should be non-nullable for records consisting of all non-null fields
#15881 - IllegalArgumentException when calling UpdatableRecord methods on tables with embedded domains that replace their underlying fields
#15885 - Compilation error in generated code when using and the domain is part of a composite key
#15896 - NullPointerException when using plain SQL identity and additional column in INSERT .. RETURNING
#15903 - Incorrect ExecuteListener Javadoc regarding ExecuteListener lifecycle
#15920 - AbstractDatabase::markUsed doesn't work in some edge cases
#15929 - SnowflakeDataType is missing references to Snowflake's JDBC-internal spellings of TIMESTAMPNTZ, TIMESTAMPLTZ, TIMESTAMPTZ
#15950 - Compilation error in KotlinGenerator generated code with KeepNamesGeneratorStrategy and generated implicit join paths
#15956 - SQLite requires parenthesised DEFAULT expressions in DDL
#15961 - YugabyteDB doesn't support ALTER TABLE .. DROP CONSTRAINT IF EXISTS

jOOQ - 3.17.18

Published by lukaseder 9 months ago

Version 3.17.18 - January 12, 2024

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

Features and Improvements

#16025 - Add Javadoc to discourage using any Fields.field(x, Class) method if there's an Fields.field(x, DataType) overload, as well as inline(T), value(T), and val(T)
#16047 - org.jooq.tools.Convert should delegate to org.jooq.impl.Convert, instead of duplicating implementations

Bug Fixes

#16016 - Compilation error in KotlinGenerator generated code when GeneratorStrategy produces identifiers conflicting with property access syntax of AbstractRoutine getters
#16028 - Cannot project TableAsField if table contains embeddables in PostgreSQL
#16034 - SQLPerformanceWarning should log hint about gathering dictionary statistics in OracleDatabase
#16042 - Compilation error in JavaGenerator generated code when is active and a table references a UDT
#16051 - DATE column in Oracle is null when fetched through multiset
#16062 - MetaSQL lookups are done with SQLDialect.family(), not SQLDialect
#16068 - Add Javadoc to all XJC-generated "withers" and setters of boolean types

jOOQ - 3.17.19

Published by lukaseder 9 months ago

Version 3.17.19 - January 19, 2024

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

Bug Fixes

#16078 - Compilation error in ScalaGenerator generated code of generated DAOs when using scalac 3
#16097 - Compilation error in ScalaGenerator generated Keys.scala class when using GeneratorStrategy
#16108 - Wrong Javadoc in RTRIM() and LTRIM()

jOOQ - 3.18.0

Published by lukaseder 9 months ago

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:

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

See these sections for more details:

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:

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:

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:

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 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 , , , ,
#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 using substitution in dialects where this isn't natively supported
#13781 - Add SQLDialect.COCKROACHDB_22
#13791 - Apply an auto-converter to 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(Consume): Traverser
#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
#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
#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
#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.comment(Comment): Field
#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 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 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
#14263 - Add jsonbObject() convenience overloads for single element objects
#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
#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 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 , and
#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 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 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
#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

jOOQ - 3.18.1

Published by lukaseder 9 months ago

Version 3.18.1 - March 21, 2023

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

Features and Improvements

#14819 - Add a remark on the Converter Javadoc that implementations must be able to handle NULL

Bug Fixes

#14765 - Avoid dialect version lookup in AbstractDatabase, if unnecessary
#14781 - Correctly annotate SIMILAR TO operator
#14792 - SQLDialect version check throws NumberFormatException in Percona DB
#14811 - JavaGenerator creates broken code for arrays when kotlinNotNullPojoAttributes is true
#14815 - Javadoc contains warning boxes
#14822 - Nullable kotlin records break columns with default values
#14823 - Compilation error in KotlinGenerator generated code when and are both active
#14825 - race conditions in jOOQ internals

jOOQ - 3.18.2

Published by lukaseder 9 months ago

Version 3.18.2 - March 29, 2023

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

Features and Improvements

#14877 - Add warnings to manual and Javadoc about ON KEY ambiguity caveats

Bug Fixes

#14832 - Compilation error in generated code when table valued function returns table with client side computed columns and is active
#14834 - Version support check shouldn't log error message for MockConnection
#14844 - Switch links from /doc/dev to /doc/latest for recently added diagnostics
#14846 - Upgrade Spring to mitigate CVE-2023-20861
#14850 - ROLLUP, CUBE should generate Keyword, not Name
#14856 - Compilation error in generated code for embeddable properties when reducing visibility to internal, and generating interfaces
#14859 - Kotlin Code generator generates invalid code for embeddables in POJOs when immutable interfaces is activated
#14862 - Kotlin Code generator generates invalid code for embeddables in POJOs when immutable interfaces is activated
#14867 - PL/SQL procedure returns wrong result when combining boolean and record type as input
#14873 - Regression when using INSERT .. RETURNING pre MariaDB 10.5

jOOQ - 3.18.3

Published by lukaseder 9 months ago

Version 3.18.3 - April 11, 2023

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

Features and Improvements

#14896 - Add Javadoc to DAO::insert and DAO::update regarding Settings.returnRecordToPojo

Bug Fixes

#14884 - Regression: KotlinGenerator produces superfluous public keyword for overriding methods
#14887 - Generate nullable annotations also on record constructor, when is set
#14891 - QUALIFY transformation should unalias columns again
#14903 - Work around Oracle 23c regression when nesting aggregate JSON functions in MULTISET
#14907 - Internal API leaks into client code via generated table's join(TableLike<?>, JoinType) method
#14909 - Missing parentheses when second subquery in set operation contains deep nesting
#14917 - ERROR: type "blob" does not exist when casting NULL as a domain converted as user defined type using class literal
#14920 - Compilation error with embedded domains and postgres types
#14925 - Explicitly set locale to English in maven-javadoc-plugin

jOOQ - 3.18.4

Published by lukaseder 9 months ago

Version 3.18.4 - May 11, 2023

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

Features and Improvements

#14945 - Add the missing DSLContext.fetchValue(TableField, Condition) and other overloads
#14955 - Add Javadoc hints about implementation of JSONB::toString, JSONB::hashCode, and JSONB::equals
#14968 - Reactive batch implementations should throw UnsupportedOperationException with a message
#15009 - Cannot pass Table reference to row() constructor in array or list

Bug Fixes

#14939 - Unstable ordering of Derby generated foreign keys
#14950 - Upgrade spring-core dependency to mitigate CVE-2023-20863
#14961 - No-arg DefaultConfiguration() constructor clones default settings twice
#14999 - OffsetDateTimeRange javadoc should reference tstzrange not tsrange
#15014 - GROUPING() support was only added in MySQL 8
#15016 - A few MySQL 5.6 related fixes
#15029 - Support NULL bind values of type Interval in R2DBC integration
#15032 - R2DBC bind value related exceptions produce misleading error message
#15036 - Support NULL bind values of type Year in R2DBC integration
#15041 - The exported DDL of the table for POSTGRES_15 dialect is missing a default value
#15043 - Support NULL bind values of type UUID in R2DBC integration