From e1b0fae8d562427958bda9fde4f1dde26cdb475a Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 14 Jul 2020 11:16:20 +0200 Subject: [PATCH] [jOOQ/jOOQ#10389] Support INFORMATION_SCHEMA.COLUMNS.INTERVAL_TYPE in H2 --- .../main/java/org/jooq/meta/h2/H2TableDefinition.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/h2/H2TableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/h2/H2TableDefinition.java index 06f5366258..1812a2c7cb 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/h2/H2TableDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/h2/H2TableDefinition.java @@ -91,7 +91,7 @@ public class H2TableDefinition extends AbstractTableDefinition { Columns.COLUMN_NAME, Columns.ORDINAL_POSITION, Columns.TYPE_NAME, - ((H2Database) getDatabase()).is1_4_197() ? Columns.COLUMN_TYPE : inline("").as(Columns.COLUMN_TYPE), + (((H2Database) getDatabase()).is1_4_197() ? Columns.COLUMN_TYPE : Columns.TYPE_NAME).as(Columns.COLUMN_TYPE), choose().when(Columns.NUMERIC_PRECISION.eq(maxP).and(Columns.NUMERIC_SCALE.eq(maxS)), zero()) .otherwise(Columns.CHARACTER_MAXIMUM_LENGTH).as(Columns.CHARACTER_MAXIMUM_LENGTH), Columns.NUMERIC_PRECISION.decode(maxP, zero(), Columns.NUMERIC_PRECISION).as(Columns.NUMERIC_PRECISION), @@ -121,10 +121,15 @@ public class H2TableDefinition extends AbstractTableDefinition { // [#7644] H2 puts DATETIME_PRECISION in NUMERIC_SCALE column boolean isTimestamp = record.get(Columns.TYPE_NAME).trim().toLowerCase().startsWith("timestamp"); + // [#10389] The interval subtype is contained in COLUMN_TYPE, not TYPE_NAME + boolean isInterval = record.get(Columns.TYPE_NAME).trim().toLowerCase().equals("interval"); + DataTypeDefinition type = new DefaultDataTypeDefinition( getDatabase(), getSchema(), - record.get(Columns.TYPE_NAME), + isInterval + ? record.get(Columns.COLUMN_TYPE) + : record.get(Columns.TYPE_NAME), record.get(Columns.CHARACTER_MAXIMUM_LENGTH), isTimestamp ? record.get(Columns.NUMERIC_SCALE)