[jOOQ/jOOQ#12605] Add support for Firebird 4 TIME[STAMP] WITH TIME ZONE data types
This commit is contained in:
parent
3b26957826
commit
94e97b229a
@ -749,6 +749,8 @@ public class FirebirdDatabase extends AbstractDatabase implements ResultQueryDat
|
||||
.when((short) 24, "DECFLOAT(16)")
|
||||
.when((short) 25, "DECFLOAT(34)")
|
||||
.when((short) 27, "DOUBLE")
|
||||
.when((short) 28, "TIME WITH TIME ZONE")
|
||||
.when((short) 29, "TIMESTAMP WITH TIME ZONE")
|
||||
.when((short) 35, "TIMESTAMP")
|
||||
.when((short) 37, "VARCHAR")
|
||||
.when((short) 40, "CSTRING")
|
||||
|
||||
@ -29458,7 +29458,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<OffsetTime> offsetTime(String value) {
|
||||
return Tools.field(Convert.convert(value, OffsetTime.class));
|
||||
}
|
||||
@ -29473,7 +29473,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<OffsetTime> offsetTime(OffsetTime value) {
|
||||
return Tools.field(value);
|
||||
}
|
||||
@ -29488,7 +29488,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<OffsetTime> offsetTime(Field<OffsetTime> field) {
|
||||
return new DateOrTime<>(field, SQLDataType.OFFSETTIME);
|
||||
}
|
||||
@ -29503,7 +29503,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<OffsetDateTime> offsetDateTime(String value) {
|
||||
return Tools.field(Convert.convert(value, OffsetDateTime.class));
|
||||
}
|
||||
@ -29518,7 +29518,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<OffsetDateTime> offsetDateTime(OffsetDateTime value) {
|
||||
return Tools.field(value);
|
||||
}
|
||||
@ -29533,7 +29533,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<OffsetDateTime> offsetDateTime(Field<OffsetDateTime> field) {
|
||||
return new DateOrTime<>(field, SQLDataType.OFFSETDATETIME);
|
||||
}
|
||||
@ -29548,7 +29548,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<Instant> instant(String value) {
|
||||
return Tools.field(Convert.convert(value, Instant.class));
|
||||
}
|
||||
@ -29563,7 +29563,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<Instant> instant(Instant value) {
|
||||
return Tools.field(value);
|
||||
}
|
||||
@ -29578,7 +29578,7 @@ public class DSL {
|
||||
* {@link Instant} (in UTC) as the input.
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ H2, HSQLDB, POSTGRES, SQLITE })
|
||||
@Support({ FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE })
|
||||
public static Field<Instant> instant(Field<Instant> field) {
|
||||
return new DateOrTime<>(field, SQLDataType.INSTANT);
|
||||
}
|
||||
|
||||
@ -3611,6 +3611,7 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
|
||||
// [#5895] HSQLDB derives the specific data type from the literal
|
||||
|
||||
|
||||
case FIREBIRD:
|
||||
case HSQLDB:
|
||||
case TRINO:
|
||||
ctx.render().visit(K_TIMESTAMP).sql(" '").sql(escape(format(value, family), ctx.render())).sql('\'');
|
||||
@ -3672,6 +3673,9 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
|
||||
|
||||
|
||||
|
||||
else if (family == FIREBIRD)
|
||||
ctx.statement().setString(ctx.index(), value.toString());
|
||||
|
||||
else
|
||||
ctx.statement().setString(ctx.index(), format(value, family));
|
||||
}
|
||||
@ -3845,6 +3849,7 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
|
||||
|
||||
switch (ctx.family()) {
|
||||
// [#5895] HSQLDB derives the specific data type from the literal
|
||||
case FIREBIRD:
|
||||
case HSQLDB:
|
||||
case TRINO:
|
||||
ctx.render().visit(K_TIME).sql(" '").sql(escape(format(value), ctx.render())).sql('\'');
|
||||
@ -3881,6 +3886,9 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
|
||||
|
||||
ctx.statement().setString(ctx.index(), string);
|
||||
}
|
||||
|
||||
else if (ctx.family() == FIREBIRD)
|
||||
ctx.statement().setString(ctx.index(), value.toString());
|
||||
else
|
||||
ctx.statement().setObject(ctx.index(), value);
|
||||
}
|
||||
|
||||
@ -43,6 +43,9 @@ import java.math.BigInteger;
|
||||
import java.sql.Date;
|
||||
import java.sql.Time;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.Instant;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.OffsetTime;
|
||||
import java.time.Year;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -83,28 +86,31 @@ public class FirebirdDataType {
|
||||
// Default SQL data types and synonyms thereof
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public static final DataType<Short> SMALLINT = new BuiltInDataType<>(FAMILY, SQLDataType.SMALLINT, "smallint");
|
||||
public static final DataType<Integer> INTEGER = new BuiltInDataType<>(FAMILY, SQLDataType.INTEGER, "integer");
|
||||
public static final DataType<Integer> INT = new BuiltInDataType<>(FAMILY, SQLDataType.INTEGER, "int");
|
||||
public static final DataType<Long> BIGINT = new BuiltInDataType<>(FAMILY, SQLDataType.BIGINT, "bigint");
|
||||
public static final DataType<Long> INT64 = new BuiltInDataType<>(FAMILY, SQLDataType.BIGINT, "int64");
|
||||
public static final DataType<Double> DOUBLEPRECISION = new BuiltInDataType<>(FAMILY, SQLDataType.DOUBLE, "double precision");
|
||||
public static final DataType<Double> DOUBLE = new BuiltInDataType<>(FAMILY, SQLDataType.DOUBLE, "double");
|
||||
public static final DataType<Double> D_FLOAT = new BuiltInDataType<>(FAMILY, SQLDataType.DOUBLE, "d_float");
|
||||
public static final DataType<Float> FLOAT = new BuiltInDataType<>(FAMILY, SQLDataType.REAL, "float");
|
||||
public static final DataType<Boolean> BOOLEAN = new BuiltInDataType<>(FAMILY, SQLDataType.BOOLEAN, "boolean");
|
||||
public static final DataType<BigDecimal> DECIMAL = new BuiltInDataType<>(FAMILY, SQLDataType.DECIMAL, "decimal");
|
||||
public static final DataType<BigDecimal> NUMERIC = new BuiltInDataType<>(FAMILY, SQLDataType.NUMERIC, "numeric");
|
||||
public static final DataType<String> VARCHAR = new BuiltInDataType<>(FAMILY, SQLDataType.VARCHAR, "varchar", "varchar(4000)");
|
||||
public static final DataType<String> CHARACTERVARYING = new BuiltInDataType<>(FAMILY, SQLDataType.VARCHAR, "character varying", "varchar(4000)");
|
||||
public static final DataType<String> CHAR = new BuiltInDataType<>(FAMILY, SQLDataType.CHAR, "char");
|
||||
public static final DataType<String> CHARACTER = new BuiltInDataType<>(FAMILY, SQLDataType.CHAR, "character");
|
||||
public static final DataType<String> CLOB = new BuiltInDataType<>(FAMILY, SQLDataType.CLOB, "blob sub_type text");
|
||||
public static final DataType<Date> DATE = new BuiltInDataType<>(FAMILY, SQLDataType.DATE, "date");
|
||||
public static final DataType<Time> TIME = new BuiltInDataType<>(FAMILY, SQLDataType.TIME, "time");
|
||||
public static final DataType<Timestamp> TIMESTAMP = new BuiltInDataType<>(FAMILY, SQLDataType.TIMESTAMP, "timestamp");
|
||||
public static final DataType<byte[]> BLOB = new BuiltInDataType<>(FAMILY, SQLDataType.BLOB, "blob");
|
||||
public static final DataType<Decfloat> DECFLOAT = new BuiltInDataType<>(FAMILY, SQLDataType.DECFLOAT, "decfloat");
|
||||
public static final DataType<Short> SMALLINT = new BuiltInDataType<>(FAMILY, SQLDataType.SMALLINT, "smallint");
|
||||
public static final DataType<Integer> INTEGER = new BuiltInDataType<>(FAMILY, SQLDataType.INTEGER, "integer");
|
||||
public static final DataType<Integer> INT = new BuiltInDataType<>(FAMILY, SQLDataType.INTEGER, "int");
|
||||
public static final DataType<Long> BIGINT = new BuiltInDataType<>(FAMILY, SQLDataType.BIGINT, "bigint");
|
||||
public static final DataType<Long> INT64 = new BuiltInDataType<>(FAMILY, SQLDataType.BIGINT, "int64");
|
||||
public static final DataType<Double> DOUBLEPRECISION = new BuiltInDataType<>(FAMILY, SQLDataType.DOUBLE, "double precision");
|
||||
public static final DataType<Double> DOUBLE = new BuiltInDataType<>(FAMILY, SQLDataType.DOUBLE, "double");
|
||||
public static final DataType<Double> D_FLOAT = new BuiltInDataType<>(FAMILY, SQLDataType.DOUBLE, "d_float");
|
||||
public static final DataType<Float> FLOAT = new BuiltInDataType<>(FAMILY, SQLDataType.REAL, "float");
|
||||
public static final DataType<Boolean> BOOLEAN = new BuiltInDataType<>(FAMILY, SQLDataType.BOOLEAN, "boolean");
|
||||
public static final DataType<BigDecimal> DECIMAL = new BuiltInDataType<>(FAMILY, SQLDataType.DECIMAL, "decimal");
|
||||
public static final DataType<BigDecimal> NUMERIC = new BuiltInDataType<>(FAMILY, SQLDataType.NUMERIC, "numeric");
|
||||
public static final DataType<String> VARCHAR = new BuiltInDataType<>(FAMILY, SQLDataType.VARCHAR, "varchar", "varchar(4000)");
|
||||
public static final DataType<String> CHARACTERVARYING = new BuiltInDataType<>(FAMILY, SQLDataType.VARCHAR, "character varying", "varchar(4000)");
|
||||
public static final DataType<String> CHAR = new BuiltInDataType<>(FAMILY, SQLDataType.CHAR, "char");
|
||||
public static final DataType<String> CHARACTER = new BuiltInDataType<>(FAMILY, SQLDataType.CHAR, "character");
|
||||
public static final DataType<String> CLOB = new BuiltInDataType<>(FAMILY, SQLDataType.CLOB, "blob sub_type text");
|
||||
public static final DataType<Date> DATE = new BuiltInDataType<>(FAMILY, SQLDataType.DATE, "date");
|
||||
public static final DataType<Time> TIME = new BuiltInDataType<>(FAMILY, SQLDataType.TIME, "time");
|
||||
public static final DataType<Timestamp> TIMESTAMP = new BuiltInDataType<>(FAMILY, SQLDataType.TIMESTAMP, "timestamp");
|
||||
public static final DataType<byte[]> BLOB = new BuiltInDataType<>(FAMILY, SQLDataType.BLOB, "blob");
|
||||
public static final DataType<Decfloat> DECFLOAT = new BuiltInDataType<>(FAMILY, SQLDataType.DECFLOAT, "decfloat");
|
||||
public static final DataType<OffsetDateTime> TIMESTAMPWITHTIMEZONE = new BuiltInDataType<>(FAMILY, SQLDataType.TIMESTAMPWITHTIMEZONE, "timestamp with time zone");
|
||||
public static final DataType<Instant> INSTANT = new BuiltInDataType<>(FAMILY, SQLDataType.INSTANT, "timestamp with time zone");
|
||||
public static final DataType<OffsetTime> TIMEWITHTIMEZONE = new BuiltInDataType<>(FAMILY, SQLDataType.TIMEWITHTIMEZONE, "time with time zone");
|
||||
|
||||
// TODO Below are HSQLDB data types. Fix this
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user