From f34e6cb8050c8e0f77ba5000ffca4c4084aaf181 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 15 Mar 2021 23:07:29 +0100 Subject: [PATCH] [jOOQ/jOOQ#11648] Add Db2, Derby, H2 support for POSITION(in, search, startIndex) via LOCATE --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 3 ++- jOOQ/src/main/java/org/jooq/impl/Position.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index b050d3af39..09cc534d4d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -9483,6 +9483,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { Field f1 = (Field) parseField(S); parse(','); Field f2 = (Field) parseField(S); + Field f3 = (Field) (parseIf(',') ? parseField(N) : null); parse(')'); switch (parseFamily()) { @@ -9493,7 +9494,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { default: - return DSL.position(f2, f1); + return f3 == null ? DSL.position(f2, f1) : DSL.position(f2, f1, f3); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/Position.java b/jOOQ/src/main/java/org/jooq/impl/Position.java index 0ce06fea7d..c7fa163444 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Position.java +++ b/jOOQ/src/main/java/org/jooq/impl/Position.java @@ -111,6 +111,18 @@ extends if (startIndex != null) { switch (ctx.family()) { + case DERBY: + case H2: + ctx.visit(N_LOCATE).sql('(').visit(search).sql(", ").visit(in).sql(", ").visit(startIndex).sql(')'); + break; + + + + + + + +