Monday, April 21, 2025
HomeProgrammingjOOQ 3.20 launched with ClickHouse, Databricks, and rather more DuckDB help, new...

jOOQ 3.20 launched with ClickHouse, Databricks, and rather more DuckDB help, new modules, Oracle kind hierarchies, extra spatial help, decfloat and synonym help, hidden columns, Scala 3, Kotlin 2, and rather more


New dialects:

jOOQ 3.20 ships with 2 new experimental dialects:

  • ClickHouse in all editions, together with the jOOQ Open Supply Version
  • Databricks within the jOOQ Enterprise Version

ClickHouse is a fast-moving SQL dialect with a historic vendor-specific syntax that’s step by step migrated to a extra requirements compliant different, which is why our help remains to be experimental. Plenty of behaviours differ from what one would anticipate elsewhere, together with NULL dealing with, which may be very completely different from commonplace SQL. Future jOOQ variations will proceed deepening this integration.

Databricks presents a really promising SQL dialect with a whole lot of performance, which we’re going to cowl in full with the following model jOOQ 3.21. An preliminary model of the dialect is shipped already in 3.20 as an experimental dialect. 3.20 will proceed to obtain bug fixes and Databricks enhancements as we work with early adopting prospects.

DuckDB enhancements

We proceed supporting varied DuckDB SQL options, together with:

  • ARRAY, ROW, and STRUCT help
  • MULTISET help
  • JSON help
  • Date time arithmetic
  • Sequences
  • Extra DDL help
  • Extra DML help
  • Spatial help
  • And rather more

New modules

To be able to higher combine with Reactor, in all probability the most well-liked reactive streams API on the JVM, we’ve added a brand new jOOQ-reactor-extensions module, which presents an implementation of the brand new SubscriberProvider SPI, a brand new SPI within the Configuration that helps make jOOQ’s R2DBC particular internals Reactor Context conscious.

The jOOQ-beans-extensions module now hosts our help for the @ConstructorProperties annotation within the DefaultRecordMapper, an annotation that’s positioned within the JDK’s jdk.desktop module. This permits us to maneuver the heavy module dependency out of jOOQ’s core library, which is helpful for these purposes that need to omit delivery the whole JDK and preserve low footprints.

The jOOQ-jpa-extensions module now hosts our help for the varied JPA annotations like @Column, @Desk, additionally within the DefaultRecordMapper, successfully eradicating the non-obligatory jakarta.persistence dependency from the core library, in addition to providing different implementations of annotation primarily based mapping.

Assist for Oracle kind hierarchies

Oracle is probably the most refined ORDBMS implementation, with a wealthy set of object-oriented PL/SQL language options. jOOQ 3.20 lastly provides help for PL/SQL OBJECT kind hierarchies each in our code generator in addition to within the runtime library, making jOOQ an excellent robust match in your PL/SQL language utilization

It is a industrial solely function.

Higher spatial help

Plenty of extra spatial capabilities have been added to jOOQ’s spatial help. These efforts additionally embrace many enhancements to the DuckDB and Oracle spatial implementations.

For extra data, check with:

It is a industrial solely function.

DECFLOAT help

Quite a lot of dialects supply a further decimal floating level knowledge kind, DECFLOAT, along with the binary floating level varieties REAL (32 bit), DOUBLE PRECISION (64 bit), and FLOAT (variable sized). Our new org.jooq.Decfloat kind permits for capturing these varieties in our code generator and runtime.

Synonym help

Quite a lot of dialects help the idea of a SYNONYM or ALIAS the place an alternate identify might be given to any object kind.

jOOQ 3.20 helps these synonyms each within the code generator in addition to the DDL API. Future jOOQ variations might proceed to enhance synonym help, e.g. by producing kind aliases in Kotlin or Scala.

For extra data, check with:

It is a industrial solely function.

Hidden columns

Similar to a couple of dialects help hidden or invisible columns, that is now doable in jOOQ as nicely, on the shopper aspect. Hiding columns successfully removes them from:

  • Asterisk expansions
  • selectFrom() and comparable calls
  • Generated data, POJOs, and interfaces

On the identical time, the columns are nonetheless obtainable for specific references. This function might be helpful for schema evolution functions, the place knowledge of deprecated columns is stored round for historic functions. It really works nicely along with the column deprecation function of the code generator:

For extra details about hidden columns, check with:

It is a industrial solely function.

Kotlin 2 and Scala 3 help

Ranging from jOOQ 3.20, we formally help each Kotlin 2 and Scala 3 and absolutely integration assessments each the core libraries in addition to the code generator and extension libraries on these language variations. For Scala help, please additionally take into account our help matrix:

JDK baselines

The jOOQ Open Supply Version 3.20 will increase its baseline to JDK 21. Assist for older JDKs is accessible int he industrial distributions, see:

File soiled monitoring

jOOQ has lengthy supported file soiled monitoring in its UpdatableRecord permitting for a easy method of performing CRUD. With jOOQ 3.20, will probably be doable for customers to override the default behaviour of the soiled flag from a “touched” semantics to a “modified” semantics, successfully sending solely precise modifications to the database.

For extra data, check with:

DML be a part of enhancements

jOOQ 3.20 now helps the helpful DELETE .. USING and UPDATE .. FROM syntaxes on all RDBMS by means of a brand new set of SQL transformations that enable for these vendor particular JOIN syntaxes for use in DML statements even within the absence of MERGE assertion help.

On the identical time, MERGE itself additionally acquired an improve, together with:

  • BY SOURCE and BY TARGET help
  • A number of WHEN NOT MATCHED AND .. clause help

For extra data, check with:

Code technology enhancements

Plenty of issues associated to the technology of interfaces, immutablePojos, UDTs, and many others. have been addressed on this launch, making generated code extra sound for varied configuration edge circumstances the place these options are mixed.

Guide search

We now have (finally!) added in-page search performance to our person handbook, so customers can higher discover data on our web site.

Extra enhancements

For details about the numerous different minor enhancements, bug fixes, and many others., please check with the launch notes.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments