From 8dd9c76a483df5e8339f6a36b18cbdc301fa8402 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 5 Apr 2022 16:28:29 +0200 Subject: [PATCH] [jOOQ/jOOQ#13425] Fix MERGE .. SET clause emulation This includes: [jOOQ/jOOQ#13326] An attempt at fixing ORDER BY emulation, which is currently wrong --- jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java index 50d907bc79..63c275e952 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java @@ -575,8 +575,16 @@ implements else s = select().from(from).asTable("s"); } + + // TODO [#13326]: Avoid the JOIN if it isn't strictly necessary + // (i.e. if ORDER BY references only from, not table) else - s = select().from(from).orderBy(orderBy).limit(limit).asTable("s"); + s = select(from.fields()) + .from(from) + .join(table).on(condition) + .orderBy(orderBy) + .limit(limit) + .asTable("s"); if (patchSource && ctx.configuration().requireCommercial(() -> "The UPDATE .. FROM to MERGE transformation requires commercial only logic for non-trivial FROM clauses. Please upgrade to the jOOQ Professional Edition or jOOQ Enterprise Edition")) {