[#7381] 3.11 code generator for H2 throws "Error while fetching enums" exception
This commit is contained in:
parent
9cc13c4fe7
commit
e8f63e37f4
@ -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<EnumDefinition> getEnums0() throws SQLException {
|
||||
List<EnumDefinition> result = new ArrayList<EnumDefinition>();
|
||||
|
||||
if (!is1_4_197())
|
||||
return result;
|
||||
|
||||
Result<Record4<String, String, String, String>> records = create()
|
||||
.select(
|
||||
Columns.TABLE_SCHEMA,
|
||||
@ -541,4 +546,27 @@ public class H2Database extends AbstractDatabase {
|
||||
List<ArrayDefinition> result = new ArrayList<ArrayDefinition>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user