From 701fb31f8b86edf275b17c17223ab2f677e766db Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 14 Mar 2023 20:00:09 +0100 Subject: [PATCH] [jOOQ/jOOQ#11485] Add support for Trino DB - WIP --- .../main/java/org/jooq/impl/DefaultBinding.java | 14 ++++++++++++++ jOOQ/src/main/java/org/jooq/impl/SQLDataTypes.java | 2 +- jOOQ/src/main/java/org/jooq/impl/Tools.java | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index a04ce2bbc4..644a1e51d0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -131,6 +131,7 @@ import static org.jooq.impl.Keywords.K_TRUE; import static org.jooq.impl.Keywords.K_YEAR_TO_DAY; import static org.jooq.impl.Keywords.K_YEAR_TO_FRACTION; import static org.jooq.impl.Names.N_BYTEA; +import static org.jooq.impl.Names.N_JSON_PARSE; import static org.jooq.impl.Names.N_PARSE_JSON; import static org.jooq.impl.Names.N_ST_GEOMFROMTEXT; import static org.jooq.impl.Names.N_ST_GEOMFROMWKB; @@ -974,6 +975,19 @@ public class DefaultBinding implements Binding { + + case TRINO: { + if (t.isJSON()) { + ctx.render().visit(N_JSON_PARSE).sql('('); + sql(ctx, converted); + ctx.render().sql(')'); + } + else + sqlCast0(ctx, converted, t, length, precision, scale); + + break; + } + default: sqlCast0(ctx, converted, t, length, precision, scale); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/SQLDataTypes.java b/jOOQ/src/main/java/org/jooq/impl/SQLDataTypes.java index d7618e77f8..43338cf80b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SQLDataTypes.java +++ b/jOOQ/src/main/java/org/jooq/impl/SQLDataTypes.java @@ -92,7 +92,7 @@ final class SQLDataTypes { static final DataType TIMESTAMPWITHOUTTIMEZONE = new BuiltInDataType<>(FAMILY, SQLDataType.TIMESTAMP, "timestamp(p) without time zone"); static final DataType TIMESTAMPWITHTIMEZONE = new BuiltInDataType<>(FAMILY, SQLDataType.TIMESTAMPWITHTIMEZONE, "timestamp(p) with time zone"); static final DataType INSTANT = new BuiltInDataType<>(FAMILY, SQLDataType.INSTANT, "timestamp(p) with time zone"); - static final DataType VARBINARY = new BuiltInDataType<>(FAMILY, SQLDataType.VARBINARY, "varbinary(l)", "varbinary(32672)"); + static final DataType VARBINARY = new BuiltInDataType<>(FAMILY, SQLDataType.VARBINARY, "varbinary"); static final DataType JSON = new BuiltInDataType<>(FAMILY, SQLDataType.JSON, "json"); static final DataType OTHER = new BuiltInDataType<>(FAMILY, SQLDataType.OTHER, "other"); static final DataType UUID = new BuiltInDataType<>(FAMILY, SQLDataType.UUID, "uuid"); diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 36e68c0f9f..234f472a4d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -1163,7 +1163,7 @@ final class Tools { static final Set REQUIRES_BACKSLASH_ESCAPING = SQLDialect.supportedBy(MARIADB, MYSQL); static final Set NO_SUPPORT_NULL = SQLDialect.supportedBy(DERBY, FIREBIRD, H2, HSQLDB, TRINO); static final Set NO_SUPPORT_NOT_NULL = SQLDialect.supportedBy(TRINO); - static final Set NO_SUPPORT_BINARY_TYPE_LENGTH = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); + static final Set NO_SUPPORT_BINARY_TYPE_LENGTH = SQLDialect.supportedBy(POSTGRES, TRINO, YUGABYTEDB); static final Set NO_SUPPORT_CAST_TYPE_IN_DDL = SQLDialect.supportedBy(MARIADB, MYSQL); static final Set SUPPORT_NON_BIND_VARIABLE_SUFFIXES = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); static final Set SUPPORT_POSTGRES_LITERALS = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB);