diff --git a/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java b/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java index d7de792531..9895c111fa 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/h2/H2Database.java @@ -37,6 +37,7 @@ */ package org.jooq.util.h2; +import static org.jooq.impl.DSL.falseCondition; import static org.jooq.impl.DSL.select; import static org.jooq.util.h2.information_schema.tables.Columns.COLUMNS; import static org.jooq.util.h2.information_schema.tables.Constraints.CONSTRAINTS; @@ -62,6 +63,7 @@ import org.jooq.Record4; import org.jooq.Result; import org.jooq.SQLDialect; import org.jooq.SortOrder; +import org.jooq.exception.DataAccessException; import org.jooq.impl.DSL; import org.jooq.tools.csv.CSVReader; import org.jooq.util.AbstractDatabase; @@ -467,6 +469,9 @@ public class H2Database extends AbstractDatabase { protected List getEnums0() throws SQLException { List result = new ArrayList(); + if (!is1_4_197()) + return result; + Result> records = create() .select( Columns.TABLE_SCHEMA, @@ -541,4 +546,27 @@ public class H2Database extends AbstractDatabase { List result = new ArrayList(); return result; } + + private static Boolean is1_4_197; + + boolean is1_4_197() { + if (is1_4_197 == null) { + + // [#5874] The COLUMNS.COLUMN_TYPE column was introduced in H2 1.4.197 + try { + create(true) + .select(Columns.COLUMN_TYPE) + .from(COLUMNS) + .where(falseCondition()) + .fetch(); + + is1_4_197 = true; + } + catch (DataAccessException e) { + is1_4_197 = false; + } + } + + return is1_4_197; + } } diff --git a/jOOQ-meta/src/main/java/org/jooq/util/h2/H2TableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/util/h2/H2TableDefinition.java index 5f1110a3d8..d3d86a60dd 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/h2/H2TableDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/h2/H2TableDefinition.java @@ -38,7 +38,6 @@ package org.jooq.util.h2; import static org.jooq.impl.DSL.choose; -import static org.jooq.impl.DSL.falseCondition; import static org.jooq.impl.DSL.inline; import static org.jooq.impl.DSL.name; import static org.jooq.impl.DSL.zero; @@ -51,7 +50,6 @@ import java.util.List; import org.jooq.Param; import org.jooq.Record; -import org.jooq.exception.DataAccessException; import org.jooq.util.AbstractTableDefinition; import org.jooq.util.ColumnDefinition; import org.jooq.util.DataTypeDefinition; @@ -68,8 +66,6 @@ import org.jooq.util.h2.information_schema.tables.Columns; */ public class H2TableDefinition extends AbstractTableDefinition { - private static Boolean is1_4_197; - public H2TableDefinition(SchemaDefinition schema, String name, String comment) { super(schema, name, comment); } @@ -89,7 +85,7 @@ public class H2TableDefinition extends AbstractTableDefinition { Columns.COLUMN_NAME, Columns.ORDINAL_POSITION, Columns.TYPE_NAME, - is1_4_197() ? Columns.COLUMN_TYPE : inline("").as(Columns.COLUMN_TYPE), + ((H2Database) getDatabase()).is1_4_197() ? Columns.COLUMN_TYPE : inline("").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), @@ -135,26 +131,4 @@ public class H2TableDefinition extends AbstractTableDefinition { return result; } - - - boolean is1_4_197() { - if (is1_4_197 == null) { - - // [#5874] The COLUMNS.COLUMN_TYPE column was introduced in H2 1.4.197 - try { - create(true) - .select(Columns.COLUMN_TYPE) - .from(COLUMNS) - .where(falseCondition()) - .fetch(); - - is1_4_197 = true; - } - catch (DataAccessException e) { - is1_4_197 = false; - } - } - - return is1_4_197; - } }