Traversing jOOQ Expression Trees with the new Traverser API

Starting from jOOQ 3.16, we're investing a lot into opening up our internal query object model (QOM) as a public API. This is mainly useful for people who use jOOQ's parser and wish to access the parsed expression tree, or to transform SQL, e.g. to implement row level security in jOOQ. But occasionally, even with … Continue reading Traversing jOOQ Expression Trees with the new Traverser API

10 Cool SQL Optimisations That do not Depend on the Cost Model

Cost Based Optimisation is the de-facto standard way to optimise SQL queries in most modern databases. It is the reason why it is really really hard to implement a complex, hand-written algorithm in a 3GL (third generation programming language) such as Java that outperforms a dynamically calculated database execution plan, that has been generated from … Continue reading 10 Cool SQL Optimisations That do not Depend on the Cost Model

Implementing Client-Side Row-Level Security with jOOQ

Some time ago, we've promised to follow up on our Constraints on Views article with a sequel showing how to implement client-side row-level security with jOOQ. What is row-level security? Some databases like Oracle or the upcoming PostgreSQL 9.5 provide native support for row-level security, which is awesome - but not every database has this … Continue reading Implementing Client-Side Row-Level Security with jOOQ

An MS Access SQL Transformation Odyssey

Recently, we've added support for the MS Access database in jOOQ 3.3. This may well have been our hardest integration so far. The MS Access database has its ways, and many of them, too. But luckily, jOOQ's internal SQL transformation abilities are already very advanced, as we've shown previously in a blog post about the … Continue reading An MS Access SQL Transformation Odyssey

The Great SQL Implementation Comparison Page

Fortunately, we have SQL standards. Or do we? It's a well-known secret (or cynical joke) that the SQL standard is yet another SQL dialect among peers. On this blog, we have pointed out so many differences between SQL dialects, it is hard to believe that anyone would even consider writing SQL strings rather than using … Continue reading The Great SQL Implementation Comparison Page