From fde3cb20bad3fe2d9ae08dd40520d7c8c081d185 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 16 Mar 2021 09:49:19 +0100 Subject: [PATCH] [jOOQ/jOOQ#11649] Add parser support for Db2's LOCATE_IN_STRING function --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 09cc534d4d..0c8c810b3f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -9478,7 +9478,8 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } private final Field parseFieldLocateIf() { - if (parseFunctionNameIf("LOCATE")) { + boolean locate = parseFunctionNameIf("LOCATE"); + if (locate || parseFunctionNameIf("LOCATE_IN_STRING")) { parse('('); Field f1 = (Field) parseField(S); parse(','); @@ -9486,16 +9487,21 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { Field f3 = (Field) (parseIf(',') ? parseField(N) : null); parse(')'); - switch (parseFamily()) { - default: - return f3 == null ? DSL.position(f2, f1) : DSL.position(f2, f1, f3); - } + + + + + + if (locate) + return f3 == null ? DSL.position(f2, f1) : DSL.position(f2, f1, f3); + else + return f3 == null ? DSL.position(f1, f2) : DSL.position(f1, f2, f3); } return null;