From 67aa9616f48897ea117102c0a561bd05132c01fc Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 22 Sep 2023 14:12:37 +0200 Subject: [PATCH] [jOOQ/jOOQ#15629] InlineDerivedTable can't be outer joined --- jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java index 1882e2e89e..de407a5bda 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java @@ -207,7 +207,13 @@ implements static final void accept2(Context ctx, Table table, Name unqualifiedName) { ctx.data(DATA_OMIT_CLAUSE_EVENT_EMISSION, true, c -> { if (c.qualify() && table != null && !FALSE.equals(ctx.data(DATA_RENDER_TABLE))) - c.visit(table).sql('.'); + + // [#15629] In some cases (e.g. outer joins), where an InlineDerivedTable can't be + // inlined and must generate a derived table, we mustn't fully qualify fields. + if (table instanceof TableImpl && ((TableImpl) table).where != null) + c.qualify(false, c2 -> c2.visit(table).sql('.')); + else + c.visit(table).sql('.'); c.visit(unqualifiedName); });