From aa06e17c6b37f7392b4b4b2a904391d0cf5d81de Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 20 Mar 2024 11:14:07 +0100 Subject: [PATCH] [jOOQ/jOOQ#16461] Parse RIGHT SEMI JOIN and RIGHT ANTI JOIN --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index bbc29bb4be..ca3a4aa615 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -14187,8 +14187,14 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { else if ((parseKeywordIf("OUTER") || true) && asTrue(hint = parseJoinHintIf()) && parseKeyword("JOIN")) return new Join(JoinType.LEFT_OUTER_JOIN, hint); } - else if (parseKeywordIf("RIGHT") && (parseKeywordIf("OUTER") || true) && asTrue(hint = parseJoinHintIf()) && parseKeyword("JOIN")) - return new Join(JoinType.RIGHT_OUTER_JOIN, hint); + else if (parseKeywordIf("RIGHT")) { + if (parseKeywordIf("ANTI JOIN")) + throw notImplemented("RIGHT ANTI JOIN"); + else if (parseKeywordIf("SEMI JOIN")) + throw notImplemented("RIGHT SEMI JOIN"); + else if ((parseKeywordIf("OUTER") || true) && asTrue(hint = parseJoinHintIf()) && parseKeyword("JOIN")) + return new Join(JoinType.RIGHT_OUTER_JOIN, hint); + } else if (parseKeywordIf("FULL") && (parseKeywordIf("OUTER") || true) && asTrue(hint = parseJoinHintIf()) && parseKeyword("JOIN")) return new Join(JoinType.FULL_OUTER_JOIN, hint); else if (parseKeywordIf("OUTER APPLY")) @@ -15350,7 +15356,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } private final ParserException notImplemented(String feature) { - return notImplemented(feature, "https://github.com/jOOQ/jOOQ/issues/10171"); + return notImplemented(feature, "https://github.com/jOOQ/jOOQ/issues/16487"); } private final ParserException notImplemented(String feature, String link) {