From ee05f720d0a8722cc8efc7286f505e431b760f7f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 9 Feb 2021 14:25:22 +0100 Subject: [PATCH] [jOOQ/jOOQ#11393] Add CockroachDB ENUM type support - DDL support added - Fixed code generation support - Re-generated code --- .../java/org/jooq/meta/postgres/PostgresDatabase.java | 7 +++++++ .../org/jooq/meta/postgres/PostgresTableDefinition.java | 8 +++++--- jOOQ/src/main/java/org/jooq/CreateTypeStep.java | 2 +- jOOQ/src/main/java/org/jooq/DropTypeStep.java | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java index 3ae19f1d5f..7513fd8f8c 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresDatabase.java @@ -1045,6 +1045,13 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat + + + + + + + diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java index 0746b2ceac..3777c19b7d 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/postgres/PostgresTableDefinition.java @@ -90,6 +90,7 @@ public class PostgresTableDefinition extends AbstractTableDefinition { when(COLUMNS.INTERVAL_TYPE.like(any(inline("%YEAR%"), inline("%MONTH%"))), inline("INTERVAL YEAR TO MONTH")) .when(COLUMNS.INTERVAL_TYPE.like(any(inline("%DAY%"), inline("%HOUR%"), inline("%MINUTE%"), inline("%SECOND%"))), inline("INTERVAL DAY TO SECOND")) .else_(COLUMNS.DATA_TYPE); + Field udtSchema = COLUMNS.UDT_SCHEMA; Field precision = nvl(COLUMNS.DATETIME_PRECISION, COLUMNS.NUMERIC_PRECISION); Field serialColumnDefault = inline("nextval('%_seq'::regclass)"); @@ -99,6 +100,7 @@ public class PostgresTableDefinition extends AbstractTableDefinition { + Condition isSerial = lower(COLUMNS.COLUMN_DEFAULT).like(serialColumnDefault); Condition isIdentity10 = COLUMNS.IS_IDENTITY.eq(inline("YES")); @@ -112,7 +114,7 @@ public class PostgresTableDefinition extends AbstractTableDefinition { for (Record record : create().select( COLUMNS.COLUMN_NAME, COLUMNS.ORDINAL_POSITION, - dataType, + dataType.as(COLUMNS.DATA_TYPE), // [#8067] A more robust / sophisticated decoding might be available nvl( @@ -123,7 +125,7 @@ public class PostgresTableDefinition extends AbstractTableDefinition { (when(isIdentity, inline("YES"))).as(COLUMNS.IS_IDENTITY), COLUMNS.IS_NULLABLE, (when(isIdentity, inline(null, String.class)).else_(COLUMNS.COLUMN_DEFAULT)).as(COLUMNS.COLUMN_DEFAULT), - coalesce(COLUMNS.DOMAIN_SCHEMA, COLUMNS.UDT_SCHEMA).as(COLUMNS.UDT_SCHEMA), + coalesce(COLUMNS.DOMAIN_SCHEMA, udtSchema).as(COLUMNS.UDT_SCHEMA), coalesce(COLUMNS.DOMAIN_NAME, COLUMNS.UDT_NAME).as(COLUMNS.UDT_NAME), PG_DESCRIPTION.DESCRIPTION) .from(COLUMNS) @@ -154,7 +156,7 @@ public class PostgresTableDefinition extends AbstractTableDefinition { DataTypeDefinition type = new DefaultDataTypeDefinition( getDatabase(), typeSchema, - record.get(dataType), + record.get(COLUMNS.DATA_TYPE), record.get(COLUMNS.CHARACTER_MAXIMUM_LENGTH), record.get(COLUMNS.NUMERIC_PRECISION), record.get(COLUMNS.NUMERIC_SCALE), diff --git a/jOOQ/src/main/java/org/jooq/CreateTypeStep.java b/jOOQ/src/main/java/org/jooq/CreateTypeStep.java index 629dc70b07..d6da2e69be 100644 --- a/jOOQ/src/main/java/org/jooq/CreateTypeStep.java +++ b/jOOQ/src/main/java/org/jooq/CreateTypeStep.java @@ -39,7 +39,7 @@ package org.jooq; import org.jetbrains.annotations.*; - +// ... import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.POSTGRES; diff --git a/jOOQ/src/main/java/org/jooq/DropTypeStep.java b/jOOQ/src/main/java/org/jooq/DropTypeStep.java index b63219ab1e..6a864acc66 100644 --- a/jOOQ/src/main/java/org/jooq/DropTypeStep.java +++ b/jOOQ/src/main/java/org/jooq/DropTypeStep.java @@ -39,7 +39,7 @@ package org.jooq; import org.jetbrains.annotations.*; - +// ... import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.POSTGRES;