diff --git a/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java index d7ff602acc..5c5ece6f13 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/hsqldb/HSQLDBDatabase.java @@ -42,6 +42,7 @@ package org.jooq.util.hsqldb; import static org.jooq.impl.DSL.field; +import static org.jooq.impl.DSL.fieldByName; import static org.jooq.impl.DSL.nvl; import static org.jooq.util.hsqldb.information_schema.Tables.CHECK_CONSTRAINTS; import static org.jooq.util.hsqldb.information_schema.Tables.ELEMENT_TYPES; @@ -58,6 +59,7 @@ import java.util.ArrayList; import java.util.List; import org.jooq.DSLContext; +import org.jooq.Field; import org.jooq.Record; import org.jooq.Record4; import org.jooq.Result; @@ -189,11 +191,14 @@ public class HSQLDBDatabase extends AbstractDatabase { TableConstraints tc = TABLE_CONSTRAINTS.as("tc"); CheckConstraints cc = CHECK_CONSTRAINTS.as("cc"); + // [#2808] [#3019] Workaround for bad handling of JOIN .. USING + Field constraintName = fieldByName(String.class, cc.CONSTRAINT_NAME.getName()); + for (Record record : create() .select( tc.TABLE_SCHEMA, tc.TABLE_NAME, - cc.CONSTRAINT_NAME, + constraintName, cc.CHECK_CLAUSE ) .from(tc) @@ -209,7 +214,7 @@ public class HSQLDBDatabase extends AbstractDatabase { relations.addCheckConstraint(table, new DefaultCheckConstraintDefinition( schema, table, - record.getValue(cc.CONSTRAINT_NAME), + record.getValue(constraintName), record.getValue(cc.CHECK_CLAUSE) )); } diff --git a/jOOQ-test/src/org/jooq/test/hsqldb/create.sql b/jOOQ-test/src/org/jooq/test/hsqldb/create.sql index 0b75a8ded9..79b5de6e04 100644 --- a/jOOQ-test/src/org/jooq/test/hsqldb/create.sql +++ b/jOOQ-test/src/org/jooq/test/hsqldb/create.sql @@ -116,7 +116,8 @@ CREATE TABLE t_booleans ( c_boolean char(1), n_boolean int, - CONSTRAINT pk_t_booleans PRIMARY KEY (id) + CONSTRAINT pk_t_booleans PRIMARY KEY (id), + CONSTRAINT ck_one_zero CHECK (one_zero IN (0, 1)) ) /