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
564

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.

Спонсоры
Спонсоры
Спонсоры
Спонсоры
Спонсоры
Поиск
Спонсоры
Virtuala FansOnly
CDN FREE
Cloud Convert
Категории
Больше
Другое
華泰商業銀行股價|未上市股票即時行情與安全交易平台 - IPO贏家
華泰商業銀行未上市股票即時報價查詢!最新行情更新、安全交割保障、完整公司資料與投資討論區。專業平台嚴格把關,降低未上市股票交易風險,點擊查看詳情! 華泰銀行股價 與 下市股票怎麼辦?...
От Shabirkhan 7sk 2025-11-03 06:18:52 0 76
Food
Soy Sauce Packaging Bottles Market Growth Outlook: Size, Share, and Trends to 2032
Soy Sauce Packaging Bottles Market Overview: The soy sauce packaging bottles market caters to...
От Cassie Tyler 2024-12-12 09:25:43 0 470
Health
Best Hip Replacement Surgeon in Delhi: Restoring Mobility with Advanced Orthopedic Care
Hip pain can significantly limit mobility and quality of life, especially when caused by...
От The Joint Clinic Dr Amite Pankaj 2025-10-10 07:26:24 0 270
Art
Battlefield 6: La Modalità UGC Potenziata da Godot e il Futuro dei Servizi Live di EA
battlefield 6, modalità UGC, Godot, EA, contenuti creati dagli utenti, live service, Battlefield...
От Roberto Manuel 2025-08-03 23:05:17 1 339
Спонсоры
Virtuala FansOnly https://virtuala.site