Lukas Eder
banner
lukaseder.bsky.social
Lukas Eder
@lukaseder.bsky.social
Java Champion, creator of jOOQ, the best way to write SQL in Java.

Will mostly post about Java, SQL, jOOQ, programming humour, and write at https://blog.jooq.org
Pinned
Me, when I started making jOOQ vs me today
Due to the Liquibase license change to the FSL, I've deprecated the LiquibaseDatabase, which is used for jOOQ code generation:
github.com/jOOQ/jOOQ/is...

Going forward, the recommended way to integrate Liquibase with jOOQ is by using testcontainers: blog.jooq.org/using-testco...
Deprecate LiquibaseDatabase · Issue #19353 · jOOQ/jOOQ
The LiquibaseDatabase includes a liquibase dependency on version 4.x of Liquibase: https://www.jooq.org/doc/latest/manual/code-generation/codegen-meta-sources/codegen-liquibase/ This issue has show...
github.com
November 10, 2025 at 1:31 PM
Some RDBMS have a weird understanding of case sensitivity in identifiers.

Here's Google Spanner.
- Quoting doesn't affect case sensitivity
- DDL identifiers are case sensitive (though "duplicates" are not allowed)
- DML identifiers are not case sensitive
November 6, 2025 at 3:20 PM
What do you folks think? Is this a good email footer?

“The bureaucracy is expanding to meet the needs of the expanding bureaucracy.”
― Oscar Wilde
October 29, 2025 at 12:53 PM
What on earth is AWS Clean Rooms SQL??
docs.aws.amazon.com/clean-rooms/...
Overview of SQL in AWS Clean Rooms - AWS Clean Rooms
Learn about the types of SQL functions you can use in AWS Clean Rooms.
docs.aws.amazon.com
October 29, 2025 at 8:49 AM
Recursive generics are so tricky to grasp because they rely on grasping recursive generics.
October 23, 2025 at 12:18 PM
Did we as an industry just collectively agree that "bouncy castle" is a very secure sounding term for a "security provider," yes?

downloads.bouncycastle.org/java/docs/bc...
BouncyCastleProvider (Bouncy Castle Library 1.81 API Specification)
downloads.bouncycastle.org
October 20, 2025 at 1:11 PM
So, we now have:

- BigQuery
- ClickHouse
- Databricks
- DuckDB
- Exasol
- H2
- Snowflake
- Teradata (the inventor, I think?)

And now also:

- Oracle!

I'm assuming MySQL will follow suit, soon? PostgreSQL, when!?
Apply the Oct 2025 Release Update and Oracle Database 23ai becomes Oracle AI Database 26ai

This adds the QUALIFY clause

QUALIFY filters window functions after grouping
Like the HAVING clause does for aggregate functions

SELECT ... FROM ...
QUALIFY fn OVER ( ... ) > ...
October 20, 2025 at 12:13 PM
Reposted by Lukas Eder
Apply the Oct 2025 Release Update and Oracle Database 23ai becomes Oracle AI Database 26ai

This adds the QUALIFY clause

QUALIFY filters window functions after grouping
Like the HAVING clause does for aggregate functions

SELECT ... FROM ...
QUALIFY fn OVER ( ... ) > ...
October 20, 2025 at 11:02 AM
Well, that's something! The Derby Database is unsupported ("retired"). It has been around forever, I'm kinda feeling nostalgic about this...

issues.apache.org/jira/browse/...
[DERBY-7177] Retire Derby - ASF JIRA
issues.apache.org
October 16, 2025 at 8:52 AM
Q: Does your RDBMS use zero-based or one-based indexing?
A: Yes
October 10, 2025 at 12:31 PM
Reposted by Lukas Eder
Are you making any of these common #SQL mistakes?

Forgetting about NULL
Processing data in Java memory
Using JDBC Pagination to paginate large results
Using aggregate instead of window functions

@lukaseder.bsky.social explains what to do instead & lists 7 more
10 Common Mistakes Java Developers Make when Writing SQL
This article is part of a series. You might also like: 10 More Common Mistakes Java Developers Make when Writing SQLYet Another 10 Common Mistakes Java Developers Make When Writing SQL Java develop…
buff.ly
October 8, 2025 at 11:02 AM
Thanks to a sponsor, the upcoming jOOQ 3.21 will have support for the Google Spanner dialect! github.com/jOOQ/jOOQ/is...
Add support for Google Spanner · Issue #11454 · jOOQ/jOOQ
This SQL dialect might be worth exploring: https://cloud.google.com/spanner/docs/query-syntax Apparently, there's a local emulator which could be very useful for integration testing: https://cloud....
github.com
October 8, 2025 at 10:08 AM
This always struck me as one of the biggest cognitive dissonances in programming style guides
October 8, 2025 at 7:44 AM
Found an actual German word de.wikipedia.org/wiki/Lieferk...
Lieferkettensorgfaltspflichtengesetz – Wikipedia
de.wikipedia.org
October 3, 2025 at 8:18 AM
Writing a CREATE TABLE statement in SQL be like
September 30, 2025 at 12:21 PM
Whaat, a Java record component cannot be deprecated by Javadoc, only by annotation? That looks like a bug in javac to me, no? The JLS doesn't mention Javadoc explicitly: docs.oracle.com/javase/specs...
September 29, 2025 at 11:49 AM
Reposted by Lukas Eder
Back to SQL: How jOOQ puts you in the driver's seat with @martinelli.ch
www.youtube.com/watch?v=QZ8S...
Back to SQL: How jOOQ Puts You in the Driver’s Seat
YouTube video by CyberJAR
www.youtube.com
September 25, 2025 at 12:29 PM
Every time I write new integration test for a jOOQ bug, I also write an integration test for an RDBMS bug
September 24, 2025 at 1:56 PM
Every. Time. Why. Does. It. Complain. 😬

Oooh, that's why. 😅
September 24, 2025 at 7:29 AM
This sounds like my recent experience with OSGi tutorials
September 24, 2025 at 6:19 AM
"5 HoUrS oF TrIaL AnD ErRoR SaVeS YoU 10 MiNuTeS oF ReAdInG ThE DoCuMeNtAtIoN."

The documentation:
September 17, 2025 at 9:16 AM
Debugging jOOQ bugs be like
September 16, 2025 at 1:13 PM
PostgreSQL. Why do you betray me? Where are my nulls??
September 16, 2025 at 12:26 PM