[#4151] Fix behaviour for H2 and HSQLDB

This commit is contained in:
lukaseder 2015-04-21 17:01:59 +02:00
parent 0a52ca4bc1
commit 36b3acec61
2 changed files with 26 additions and 1 deletions

View File

@ -469,10 +469,20 @@ class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> 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(' ');

View File

@ -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<Table<?>> {
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<Table<?>> {
separator = ", ";
}
}
if (unqualified)
ctx.qualify(qualify);
}
}