diff --git a/jOOQ/src/main/java/org/jooq/impl/Contains.java b/jOOQ/src/main/java/org/jooq/impl/Contains.java index 24f06f50c0..0960d1b5fa 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Contains.java +++ b/jOOQ/src/main/java/org/jooq/impl/Contains.java @@ -113,12 +113,6 @@ implements - - - - - - case CLICKHOUSE: @@ -134,6 +128,12 @@ implements case TRINO: return false; + + + + + + default: return true; } @@ -159,7 +159,7 @@ implements else if (value.getDataType().getType() == JSONB.class || content.getDataType().getType() == JSONB.class) ctx.visit(value).sql(" @> ").visit(content); else - acceptDefault(ctx); + acceptLike(ctx); break; } @@ -175,13 +175,6 @@ implements - - - - - - - @@ -196,10 +189,18 @@ implements case MYSQL: case SQLITE: case TRINO: { - acceptDefault(ctx); + acceptLike(ctx); break; } + + + + + + + + default: ctx.visit(function(N_CONTAINS, BOOLEAN, value, content)); break; @@ -215,7 +216,11 @@ implements - private final void acceptDefault(Context ctx) { + private final void acceptLike(Context ctx) { + ctx.visit(value.like(DSL.concat(inline("%"), Tools.escapeForLike(content, ctx.configuration()), inline("%")), Tools.ESCAPE)); + } + + private final void acceptPosition(Context ctx) { ctx.visit(DSL.position(Like.requiresStringCast(value), Like.requiresStringCast(content)).gt(inline(0))); } diff --git a/jOOQ/src/main/java/org/jooq/impl/EndsWith.java b/jOOQ/src/main/java/org/jooq/impl/EndsWith.java index e0f5d61aac..b0f25ffffc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/EndsWith.java +++ b/jOOQ/src/main/java/org/jooq/impl/EndsWith.java @@ -108,12 +108,6 @@ implements - - - - - - @@ -136,6 +130,10 @@ implements + + + + case DUCKDB: return true; @@ -165,13 +163,6 @@ implements - - - - - - - @@ -191,9 +182,16 @@ implements case POSTGRES: case SQLITE: case TRINO: - case YUGABYTEDB: - ctx.visit(DSL.position(Like.requiresStringCast(string), Like.requiresStringCast(suffix)).eq(iadd(isub(Like.requiresStringCast(string).length(), Like.requiresStringCast(suffix).length()), inline(1)))); + case YUGABYTEDB: { + acceptLike(ctx); break; + } + + + + + + @@ -224,6 +222,14 @@ implements + private final void acceptLike(Context ctx) { + ctx.visit(string.like(DSL.concat(inline("%"), Tools.escapeForLike(suffix, ctx.configuration())), Tools.ESCAPE)); + } + + private final void acceptPosition(Context ctx) { + ctx.visit(DSL.position(Like.requiresStringCast(string), Like.requiresStringCast(suffix)).eq(iadd(isub(Like.requiresStringCast(string).length(), Like.requiresStringCast(suffix).length()), inline(1)))); + } + // ------------------------------------------------------------------------- // 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 d76ead6eef..fcb7b7fee1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/StartsWith.java +++ b/jOOQ/src/main/java/org/jooq/impl/StartsWith.java @@ -108,12 +108,6 @@ implements - - - - - - @@ -135,6 +129,10 @@ implements + + + + case DUCKDB: case TRINO: return true; @@ -165,13 +163,6 @@ implements - - - - - - - @@ -190,9 +181,16 @@ implements case MYSQL: case POSTGRES: case SQLITE: - case YUGABYTEDB: - ctx.visit(DSL.position(Like.requiresStringCast(string), Like.requiresStringCast(prefix)).eq(inline(1))); + case YUGABYTEDB: { + acceptLike(ctx); break; + } + + + + + + @@ -224,6 +222,14 @@ implements + private final void acceptLike(Context ctx) { + ctx.visit(string.like(DSL.concat(Tools.escapeForLike(prefix, ctx.configuration()), inline("%")), Tools.ESCAPE)); + } + + private final void acceptPosition(Context ctx) { + ctx.visit(DSL.position(Like.requiresStringCast(string), Like.requiresStringCast(prefix)).eq(inline(1))); + } + // ------------------------------------------------------------------------- // XXX: Query Object Model // -------------------------------------------------------------------------