diff --git a/jOOQ/src/main/java/org/jooq/impl/Contains.java b/jOOQ/src/main/java/org/jooq/impl/Contains.java index 9eb6afddb6..56720532d7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Contains.java +++ b/jOOQ/src/main/java/org/jooq/impl/Contains.java @@ -221,6 +221,10 @@ implements ctx.visit(DSL.position(Like.requiresStringCast(value), Like.requiresStringCast(content)).gt(inline(0))); } + private final void acceptContains(Context ctx, Name name) { + ctx.visit(function(name, BOOLEAN, castIfNeeded(value, String.class), castIfNeeded(content, String.class))); + } + // ------------------------------------------------------------------------- // XXX: Query Object Model // ------------------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/impl/EndsWith.java b/jOOQ/src/main/java/org/jooq/impl/EndsWith.java index 3be9bb70f0..e345f5b29b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/EndsWith.java +++ b/jOOQ/src/main/java/org/jooq/impl/EndsWith.java @@ -92,60 +92,6 @@ implements // XXX: QueryPart API // ------------------------------------------------------------------------- - @Override - final boolean parenthesised(Context ctx) { - switch (ctx.family()) { - - - - - - - - - - - - - - - - - - case CUBRID: - case FIREBIRD: - case H2: - case HSQLDB: - case IGNITE: - case MARIADB: - case MYSQL: - case POSTGRES: - case SQLITE: - case TRINO: - case YUGABYTEDB: - return false; - - - - case DERBY: - return false; - - - - - - - case DUCKDB: - return true; - - case CLICKHOUSE: - return true; - - default: - return true; - } - } - @Override public final void accept(Context ctx) { switch (ctx.family()) { @@ -200,16 +146,19 @@ implements - case DUCKDB: - ctx.visit(function(N_SUFFIX, BOOLEAN, string, suffix)); - break; - case CLICKHOUSE: - ctx.visit(function(N_endsWith, BOOLEAN, string, suffix)); + case DUCKDB: { + acceptEndsWith(ctx, N_SUFFIX); break; + } + + case CLICKHOUSE: { + acceptEndsWith(ctx, N_endsWith); + break; + } default: - ctx.visit(function(N_ENDS_WITH, BOOLEAN, string, suffix)); + acceptEndsWith(ctx, N_ENDS_WITH); break; } } @@ -231,6 +180,10 @@ implements ctx.visit(DSL.position(Like.requiresStringCast(string), Like.requiresStringCast(suffix)).eq(iadd(isub(Like.requiresStringCast(string).length(), Like.requiresStringCast(suffix).length()), inline(1)))); } + private final void acceptEndsWith(Context ctx, Name name) { + ctx.visit(function(name, BOOLEAN, castIfNeeded(string, String.class), castIfNeeded(suffix, String.class))); + } + // ------------------------------------------------------------------------- // XXX: Query Object Model // ------------------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/impl/StartsWith.java b/jOOQ/src/main/java/org/jooq/impl/StartsWith.java index d0990350a2..7c3b374d1e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StartsWith.java +++ b/jOOQ/src/main/java/org/jooq/impl/StartsWith.java @@ -134,12 +134,8 @@ implements - case DUCKDB: - case TRINO: - return true; - case CLICKHOUSE: - return true; + return false; default: return true; @@ -199,17 +195,14 @@ implements - case DUCKDB: - case TRINO: - ctx.visit(function(N_STARTS_WITH, BOOLEAN, string, prefix)); - break; - case CLICKHOUSE: - ctx.visit(function(N_startsWith, BOOLEAN, string, prefix)); + case CLICKHOUSE: { + acceptStartsWith(ctx, N_startsWith); break; + } default: - ctx.visit(function(N_STARTS_WITH, BOOLEAN, string, prefix)); + acceptStartsWith(ctx, N_STARTS_WITH); break; } } @@ -231,6 +224,10 @@ implements ctx.visit(DSL.position(Like.requiresStringCast(string), Like.requiresStringCast(prefix)).eq(inline(1))); } + private final void acceptStartsWith(Context ctx, Name name) { + ctx.visit(function(name, BOOLEAN, castIfNeeded(string, String.class), castIfNeeded(prefix, String.class))); + } + // ------------------------------------------------------------------------- // XXX: Query Object Model // ------------------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/impl/XMLHandler.java b/jOOQ/src/main/java/org/jooq/impl/XMLHandler.java index 4c47b6fb5a..bba4107c6d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/XMLHandler.java +++ b/jOOQ/src/main/java/org/jooq/impl/XMLHandler.java @@ -107,10 +107,7 @@ implements { private static final JooqLogger log = JooqLogger.getLogger(XMLHandler.class); private static final boolean debug = false; - - - - + static final Set ENCODE_BINARY_AS_HEX = SQLDialect.supportedBy(); private final DSLContext ctx; private final Deque> states; private State s;