From c271631234f27eb23b1fe25d5fce40e996ddf8b2 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Thu, 28 May 2015 12:06:28 +0200 Subject: [PATCH] [#4314] SQL Server UPDATE .. FROM illegally declares aliased tables in UPDATE clause --- .../main/java/org/jooq/impl/UpdateQueryImpl.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java index 3ac62c9a89..5cb1648448 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java @@ -51,6 +51,7 @@ import static org.jooq.Clause.UPDATE_UPDATE; import static org.jooq.Clause.UPDATE_WHERE; // ... // ... +// ... import static org.jooq.impl.DSL.select; import java.util.Arrays; @@ -470,17 +471,21 @@ class UpdateQueryImpl extends AbstractStoreQuery implements @Override final void accept0(Context ctx) { + boolean declareTables = ctx.declareTables(); ctx.start(UPDATE_UPDATE) .keyword("update") .sql(' ') - .declareTables(true) + + // [#4314] Not all SQL dialects support declaring aliased tables in + // UPDATE statements + .declareTables(!asList().contains(ctx.family())) .visit(table) - .declareTables(false) + .declareTables(declareTables) .end(UPDATE_UPDATE); /* [pro] xx xx xxxxxxx xxxxxx xxx x xxxxxxx xxxxxxxxxxxxx xx xxx xxxxxx xx xxxx xxxxxx - xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx xxxxxxx x + xx xxxxxxxxxxxxx xx xxxxxxx x xxxxxxxxxxxxxxxxxxxxxxx xx xxxxxxxxxxxxxxxxx x @@ -512,7 +517,7 @@ class UpdateQueryImpl extends AbstractStoreQuery implements // Some dialects don't really support row value expressions on the // right hand side of a SET clause - if (multiValue != null && !asList().contains(ctx.configuration().dialect().family())) { + if (multiValue != null && !asList().contains(ctx.family())) { ctx.visit(multiValue); } @@ -547,7 +552,7 @@ class UpdateQueryImpl extends AbstractStoreQuery implements ctx.end(UPDATE_SET); - switch (ctx.configuration().dialect().family()) { + switch (ctx.family()) { /* [pro] xx xx xxxxxxx xxxxxx xxx x xxxxxxx xxxxxxxxxxxxx xx xxx xxxxxx xx xxxx xxxxxx