jOOQ 3.20 released with ClickHouse, Databricks, and much more DuckDB support, new modules, Oracle type hierarchies, more spatial support, decfloat and synonym support, hidden columns, Scala 3, Kotlin 2, and much more

0
292

jOOQ 3.20 released with ClickHouse, Databricks, and much more DuckDB support, new modules, Oracle type hierarchies, more spatial support, decfloat and synonym support, hidden columns, Scala 3, Kotlin 2, and much more

New dialects:

jOOQ 3.20 ships with 2 new experimental dialects:

  • ClickHouse in all editions, including the jOOQ Open Source Edition
  • Databricks in the jOOQ Enterprise Edition

ClickHouse is a fast-moving SQL dialect with a historic vendor-specific syntax that is gradually migrated to a more standards compliant alternative, which is why our support is still experimental. A lot of behaviours differ from what one would expect elsewhere, including NULL handling, which is very different from standard SQL. Future jOOQ versions will continue deepening this integration.

Databricks offers a very promising SQL dialect with a lot of functionality, which we’re going to cover in full with the next version jOOQ 3.21. An initial version of the dialect is shipped already in 3.20 as an experimental dialect. 3.20 will continue to receive bug fixes and Databricks improvements as we work with early adopting customers.

DuckDB improvements

We continue supporting various DuckDB SQL features, including:

  • ARRAY, ROW, and STRUCT support
  • MULTISET support
  • JSON support
  • Date time arithmetic
  • Sequences
  • More DDL support
  • More DML support
  • Spatial support
  • And much more

In order to better integrate with Reactor, probably the most popular reactive streams API on the JVM, we’ve added a new jOOQ-reactor-extensions module, which offers an implementation of the new SubscriberProvider SPI, a new SPI in the Configuration that helps make jOOQ’s R2DBC specific internals Reactor Context aware.

The jOOQ-beans-extensions module now hosts our support for the @ConstructorProperties annotation in the DefaultRecordMapper, an annotation that is located in the JDK’s jdk.desktop module. This allows us to move the heavy module dependency out of jOOQ’s core library, which is useful for those applications that want to omit shipping the complete JDK and keep low footprints.

The jOOQ-jpa-extensions module now hosts our support for the various JPA annotations like @Column, @Table, also in the DefaultRecordMapper, effectively removing the optional jakarta.persistence dependency from the core library, as well as offering alternative implementations of annotation based mapping.

Support for Oracle type hierarchies

Oracle is the most sophisticated ORDBMS implementation, with a rich set of object-oriented PL/SQL language features. jOOQ 3.20 finally adds support for PL/SQL OBJECT type hierarchies both in our code generator as well as in the runtime library, making jOOQ an even strong match for your PL/SQL language usage

This is a commercial only feature.

Better spatial support

A lot of additional spatial functions have been added to jOOQ’s spatial support. These efforts also include many improvements to the DuckDB and Oracle spatial implementations.

For more information, refer to:

This is a commercial only feature.

DECFLOAT support

A variety of dialects offer an additional decimal floating point data type, DECFLOAT, in addition to the binary floating point types REAL (32 bit), DOUBLE PRECISION (64 bit), and FLOAT (variable sized). Our new org.jooq.Decfloat type allows for capturing these types in our code generator and runtime.

Synonym support

A variety of dialects support the concept of a SYNONYM or ALIAS where an alternative name can be given to any object type.

jOOQ 3.20 supports these synonyms both in the code generator as well as the DDL API. Future jOOQ versions may continue to improve synonym support, e.g. by generating type aliases in Kotlin or Scala.

For more information, refer to:

This is a commercial only feature.

Hidden columns

Just like a few dialects support hidden or invisible columns, this is now possible in jOOQ as well, at the client side. Hiding columns effectively removes them from:

  • Asterisk expansions
  • selectFrom() and similar calls
  • Generated records, POJOs, and interfaces

At the same time, the columns are still available for explicit references. This feature can be useful for schema evolution purposes, where data of deprecated columns is kept around for historic purposes. It works well together with the column deprecation feature of the code generator:

For more information about hidden columns, refer to:

This is a commercial only feature.

Kotlin 2 and Scala 3 support

Starting from jOOQ 3.20, we formally support both Kotlin 2 and Scala 3 and fully integration tests both the core libraries as well as the code generator and extension libraries on these language versions. For Scala support, please also consider our support matrix:

JDK baselines

The jOOQ Open Source Edition 3.20 increases its baseline to JDK 21. Support for older JDKs is available int he commercial distributions, see:

Record dirty tracking

jOOQ has long supported record dirty tracking in its UpdatableRecord allowing for a simple way of performing CRUD. With jOOQ 3.20, it will be possible for users to override the default behaviour of the dirty flag from a “touched” semantics to a “modified” semantics, effectively sending only actual modifications to the database.

For more information, refer to:

DML join improvements

jOOQ 3.20 now supports the useful DELETE .. USING and UPDATE .. FROM syntaxes on all RDBMS through a new set of SQL transformations that allow for these vendor specific JOIN syntaxes to be used in DML statements even in the absence of MERGE statement support.

At the same time, MERGE itself also received an upgrade, including:

  • BY SOURCE and BY TARGET support
  • Multiple WHEN NOT MATCHED AND .. clause support

For more information, refer to:

Code generation improvements

A lot of problems related to the generation of interfaces, immutablePojos, UDTs, etc. have been addressed in this release, making generated code more sound for various configuration edge cases where these features are combined.

Manual search

We have (at last!) added in-page search functionality to our user manual, so users can better find information on our website.

More improvements

For information about the many other minor improvements, bug fixes, etc., please refer to the release notes.

Gesponsert
Gesponsert
Gesponsert
Suche
Virtualbook
CDN FREE
Kategorien
Mehr lesen
Andere
När är det en god idé att låna pengar på företaget? - CapIQ Finans
låna pengar för företag - Good loan will always contribute to increased future...
Von Shabirkhan 7sk 2025-02-20 03:45:21 0 290
Startseite
Asbestsanierung in Bad Honnef 0221-96986816
Von A wie Asbesterkennung bis S wie Schadstoffanalyse. Wir helfen fachmännisch nach der TRGS...
Von Shabirkhan 7sk 2025-07-03 08:51:49 0 116
Art
Vergessen Sie traditionelles 3D-Drucken: Dieser alternative Prozess erzeugt in Minuten druckbare, quetschbare, gelatineartige Modelle, und ich bin besessen davon
3D-Druck, innovative Technologien, gelatineartige Modelle, Saltgator, moderne Fertigung, kreative...
Von Josefine Frida 2025-09-08 10:05:15 1 40
Andere
Navigating Success: Strategies for Excelling in "Take My Class Online"
The advent of online education has revolutionized the academic landscape, offering unprecedented...
Von Lil Yyy 2025-01-26 12:08:07 0 403
Art
أبطال جدد في عالم مارفل: مفاجأة لا يتوقعها أحد!
أبطال, مارفل, نت إيز, شخصيات أصلية, ألعاب فيديو, عالم الأبطال, شخصيات مارفل, منافسة, إبداع, ألعاب...
Von فرح نجوى 2025-08-19 04:05:21 1 45
Gesponsert
Virtuala FansOnly https://virtuala.site