diff --git a/jOOQ-test/src/test/java/org/jooq/test/all/testcases/InsertUpdateTests.java b/jOOQ-test/src/test/java/org/jooq/test/all/testcases/InsertUpdateTests.java
index 73349dc3fa..d9359c904f 100644
--- a/jOOQ-test/src/test/java/org/jooq/test/all/testcases/InsertUpdateTests.java
+++ b/jOOQ-test/src/test/java/org/jooq/test/all/testcases/InsertUpdateTests.java
@@ -69,6 +69,7 @@ import static org.jooq.impl.DSL.max;
import static org.jooq.impl.DSL.row;
import static org.jooq.impl.DSL.select;
import static org.jooq.impl.DSL.selectCount;
+import static org.jooq.impl.DSL.selectFrom;
import static org.jooq.impl.DSL.selectOne;
import static org.jooq.impl.DSL.tableByName;
import static org.jooq.impl.DSL.trueCondition;
@@ -1400,12 +1401,21 @@ extends BaseTest b1 = TBook().as("b1");
+ // [#3455] Ensure also that this works for derived (aliased) tables
+ Table a1 = selectFrom(TAuthor()).asTable("a1");
+
assertEquals(4,
create().update(b1)
- .set(b1.field(TBook_TITLE()), concat(TAuthor_FIRST_NAME(), inline(" "), TAuthor_LAST_NAME(), inline(": "), TBook_TITLE()))
- .from(TBook().join(
- TAuthor()).on(TBook_AUTHOR_ID().eq(TAuthor_ID())
- .and(TBook_ID().lt(5))))
+ .set(b1.field(TBook_TITLE()), concat(
+ a1.field(TAuthor_FIRST_NAME()),
+ inline(" "),
+ a1.field(TAuthor_LAST_NAME()),
+ inline(": "),
+ TBook_TITLE()
+ ))
+ .from(TBook().join(a1)
+ .on(TBook_AUTHOR_ID().eq(a1.field(TAuthor_ID()))
+ .and(TBook_ID().lt(5))))
.where(TBook_ID().eq(b1.field(TBook_ID())))
.execute());
break;
diff --git a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java
index 1d57e5e43f..59c163199a 100644
--- a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java
+++ b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java
@@ -481,7 +481,9 @@ class UpdateQueryImpl extends AbstractStoreQuery implements
xx xxxxxxxxxxxxxxxxx x
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx xx
- xxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxx
x
xxxxxxxxxxxxxxxxxxxxx
@@ -554,7 +556,9 @@ class UpdateQueryImpl extends AbstractStoreQuery implements
if (!from.isEmpty()) {
ctx.formatSeparator()
.keyword("from").sql(" ")
- .visit(from);
+ .declareTables(true)
+ .visit(from)
+ .declareTables(false);
}
ctx.end(UPDATE_FROM);