diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 3d8ee61c8e..6463f85983 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -469,10 +469,20 @@ class SelectQueryImpl extends AbstractResultQuery implement .keyword("for update"); if (!forUpdateOf.isEmpty()) { + + // [#4151] Some databases don't allow for qualifying column + // names here. Copy also to TableList + boolean unqualified = asList(H2, HSQLDB).contains(context.family()); + boolean qualify = context.qualify(); + + if (unqualified) + context.qualify(false); + context.sql(' ').keyword("of") .sql(' ').visit(forUpdateOf); - // Utils.fieldNames(context, forUpdateOf); + if (unqualified) + context.qualify(qualify); } else if (!forUpdateOfTables.isEmpty()) { context.sql(' ').keyword("of").sql(' '); diff --git a/jOOQ/src/main/java/org/jooq/impl/TableList.java b/jOOQ/src/main/java/org/jooq/impl/TableList.java index 9da837a907..fbc07a9f9f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableList.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableList.java @@ -41,6 +41,10 @@ package org.jooq.impl; +import static java.util.Arrays.asList; +import static org.jooq.SQLDialect.H2; +import static org.jooq.SQLDialect.HSQLDB; + import java.util.List; import org.jooq.Context; @@ -79,6 +83,14 @@ class TableList extends QueryPartList> { final void toSQLFields(Context ctx) { String separator = ""; + // [#4151] Some databases don't allow for qualifying column + // names here. Copy also to SelectQueryImpl + boolean unqualified = asList(H2, HSQLDB).contains(ctx.family()); + boolean qualify = ctx.qualify(); + + if (unqualified) + ctx.qualify(false); + for (Table table : this) { for (Field field : table.fieldsRow().fields()) { ctx.sql(separator); @@ -87,5 +99,8 @@ class TableList extends QueryPartList> { separator = ", "; } } + + if (unqualified) + ctx.qualify(qualify); } }