[#3382] NOT NULL constraints and type information are incorrectly generated when using Firebird DOMAINs for data types

This commit is contained in:
Lukas Eder 2014-07-09 18:14:15 +02:00
parent 32784a890d
commit 9a74f5c41f
2 changed files with 10 additions and 5 deletions

View File

@ -49,6 +49,7 @@ import java.util.ArrayList;
import java.util.List;
import org.jooq.Record;
import org.jooq.impl.DSL;
import org.jooq.util.AbstractTableDefinition;
import org.jooq.util.ColumnDefinition;
import org.jooq.util.DefaultColumnDefinition;
@ -79,7 +80,7 @@ public class FirebirdTableDefinition extends AbstractTableDefinition {
r.RDB$FIELD_NAME.trim(),
r.RDB$DESCRIPTION,
r.RDB$DEFAULT_VALUE,
r.RDB$NULL_FLAG.nvl((short) 0),
DSL.bitOr(r.RDB$NULL_FLAG.nvl((short) 0), f.RDB$NULL_FLAG.nvl((short) 0)).as(r.RDB$NULL_FLAG.getName()),
r.RDB$DEFAULT_SOURCE,
r.RDB$FIELD_POSITION,
@ -140,7 +141,7 @@ public class FirebirdTableDefinition extends AbstractTableDefinition {
record.getValue("FIELD_LENGTH", short.class),
record.getValue(f.RDB$FIELD_PRECISION),
record.getValue("FIELD_SCALE", Integer.class),
record.getValue(r.RDB$NULL_FLAG.nvl((short) 0)) == 0,
record.getValue(r.RDB$NULL_FLAG) == 0,
record.getValue(r.RDB$DEFAULT_SOURCE) != null
);

View File

@ -43,6 +43,10 @@ DROP TABLE t_3342/
DROP TABLE t_identity/
DROP TABLE t_identity_pk/
DROP DOMAIN d_3382/
CREATE DOMAIN d_3382 AS INT NOT NULL/
CREATE TABLE t_dates (
id int,
@ -228,9 +232,9 @@ CREATE TABLE x_unused (
/
CREATE TABLE t_exotic_types (
ID INT NOT NULL,
ID d_3382 NOT NULL,
UU CHAR(36),
CONSTRAINT pk_t_exotic_types PRIMARY KEY(ID)
);
/
@ -283,7 +287,7 @@ CREATE TABLE x_test_case_85 (
CREATE TABLE x_test_case_2025 (
ref_id int NOT NULL,
ref_name VARCHAR(10) NOT NULL,
CONSTRAINT fk_x_test_case_2025_1 FOREIGN KEY(ref_id) REFERENCES x_test_case_85(ID),
CONSTRAINT fk_x_test_case_2025_2 FOREIGN KEY(ref_id) REFERENCES x_test_case_71(ID),
CONSTRAINT fk_x_test_case_2025_3 FOREIGN KEY(ref_id, ref_name) REFERENCES X_UNUSED(id, name)