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);