[jOOQ/jOOQ#11485] Support for Trino DB
- No NVARCHAR support - LIKE ANY and LIKE ALL support - Emulate FILTER for window functions
This commit is contained in:
parent
362ac58a18
commit
dccb4694a9
@ -113,6 +113,7 @@ implements
|
||||
|
||||
|
||||
static final Set<SQLDialect> NO_SUPPORT_FILTER = SQLDialect.supportedUntil(CUBRID, DERBY, IGNITE, MARIADB, MYSQL);
|
||||
static final Set<SQLDialect> NO_SUPPORT_WINDOW_FILTER = SQLDialect.supportedBy(TRINO);
|
||||
static final Set<SQLDialect> SUPPORT_DISTINCT_RVE = SQLDialect.supportedBy(H2, POSTGRES);
|
||||
|
||||
static final Lazy<Field<Integer>> ASTERISK = Lazy.of(() -> DSL.field(DSL.raw("*"), Integer.class));
|
||||
@ -285,7 +286,7 @@ implements
|
||||
}
|
||||
|
||||
final void acceptArguments3(Context<?> ctx, QueryPartCollectionView<Field<?>> args, Function<? super Field<?>, ? extends Field<?>> fun) {
|
||||
if (!filter.hasWhere() || !NO_SUPPORT_FILTER.contains(ctx.dialect()))
|
||||
if (!filter.hasWhere() || supportsFilter(ctx))
|
||||
ctx.visit(wrap(args).map(fun));
|
||||
|
||||
|
||||
@ -321,7 +322,7 @@ implements
|
||||
acceptFilterClause(ctx, filter);
|
||||
}
|
||||
|
||||
static final void acceptFilterClause(Context<?> ctx, Condition filter) {
|
||||
final void acceptFilterClause(Context<?> ctx, Condition f) {
|
||||
switch (ctx.family()) {
|
||||
|
||||
|
||||
@ -330,18 +331,25 @@ implements
|
||||
|
||||
|
||||
default:
|
||||
if (!NO_SUPPORT_FILTER.contains(ctx.dialect()))
|
||||
if (supportsFilter(ctx))
|
||||
ctx.sql(' ')
|
||||
.visit(K_FILTER)
|
||||
.sql(" (")
|
||||
.visit(K_WHERE)
|
||||
.sql(' ')
|
||||
.visit(filter)
|
||||
.visit(f)
|
||||
.sql(')');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private final boolean supportsFilter(Context<?> ctx) {
|
||||
return !(
|
||||
NO_SUPPORT_FILTER.contains(ctx.dialect())
|
||||
|| NO_SUPPORT_WINDOW_FILTER.contains(ctx.dialect()) && isWindow()
|
||||
);
|
||||
}
|
||||
|
||||
final void acceptOrderBy(Context<?> ctx) {
|
||||
if (!Tools.isEmpty(withinGroupOrderBy)) {
|
||||
switch (ctx.family()) {
|
||||
|
||||
@ -707,7 +707,7 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
|
||||
static final Set<SQLDialect> NEEDS_PRECISION_SCALE_ON_BIGDECIMAL = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB);
|
||||
static final Set<SQLDialect> REQUIRES_JSON_CAST = SQLDialect.supportedBy(POSTGRES, TRINO, YUGABYTEDB);
|
||||
static final Set<SQLDialect> NO_SUPPORT_ENUM_CAST = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB);
|
||||
static final Set<SQLDialect> NO_SUPPORT_NVARCHAR = SQLDialect.supportedBy(DERBY, FIREBIRD, POSTGRES, SQLITE, YUGABYTEDB);
|
||||
static final Set<SQLDialect> NO_SUPPORT_NVARCHAR = SQLDialect.supportedBy(DERBY, FIREBIRD, POSTGRES, SQLITE, TRINO, YUGABYTEDB);
|
||||
|
||||
|
||||
|
||||
|
||||
@ -90,8 +90,8 @@ implements
|
||||
|
||||
|
||||
|
||||
private static final Set<SQLDialect> NO_SUPPORT_QUANTIFIED_LIKE = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, SQLITE);
|
||||
private static final Set<SQLDialect> NO_SUPPORT_QUANTIFIED_SIMILAR_TO = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> NO_SUPPORT_QUANTIFIED_LIKE = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, SQLITE, TRINO);
|
||||
private static final Set<SQLDialect> NO_SUPPORT_QUANTIFIED_SIMILAR_TO = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, IGNITE, MARIADB, MYSQL, POSTGRES, SQLITE, TRINO, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> SUPPORTS_QUANTIFIED_ARRAYS = SQLDialect.supportedBy(POSTGRES);
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
Reference in New Issue
Block a user