[jOOQ/jOOQ#10389] Support INFORMATION_SCHEMA.COLUMNS.INTERVAL_TYPE in H2

This commit is contained in:
Lukas Eder 2020-07-14 11:16:20 +02:00
parent 0f9ab8f70f
commit e1b0fae8d5

View File

@ -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)