From 3715120cc877e5f0f64936792afdae0f916e0905 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 10 Jan 2022 12:27:26 +0100 Subject: [PATCH] [jOOQ/jOOQ#12804] Add parser support for Teradata's { UPDATE | DELETE } .. ALL syntax --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 14 +++++++++++--- 1 file changed, 11 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 7c3573180a..55cc205ccc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -2119,7 +2119,11 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { DeleteUsingStep s1 = with == null ? dsl.delete(table) : with.delete(table); DeleteWhereStep s2 = parseKeywordIf("USING", "FROM") ? s1.using(parseList(',', t -> parseTable(() -> peekKeyword(KEYWORDS_IN_DELETE_FROM)))) : s1; - DeleteOrderByStep s3 = parseKeywordIf("WHERE") ? s2.where(parseCondition()) : s2; + DeleteOrderByStep s3 = parseKeywordIf("ALL") + ? s2 + : parseKeywordIf("WHERE") + ? s2.where(parseCondition()) + : s2; DeleteLimitStep s4 = parseKeywordIf("ORDER BY") ? s3.orderBy(parseList(',', c -> c.parseSortField())) : s3; DeleteReturningStep s5 = (limit != null || parseKeywordIf("LIMIT")) ? s4.limit(limit != null ? limit : requireParam(parseParenthesisedUnsignedIntegerOrBindVariable())) @@ -2331,7 +2335,11 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { : parseKeywordIf("FROM") ? s2.from(parseList(',', t -> parseTable(() -> peekKeyword(KEYWORDS_IN_UPDATE_FROM)))) : s2; - UpdateOrderByStep s4 = parseKeywordIf("WHERE") ? s3.where(parseCondition()) : s3; + UpdateOrderByStep s4 = parseKeywordIf("ALL") + ? s3 + : parseKeywordIf("WHERE") + ? s3.where(parseCondition()) + : s3; UpdateLimitStep s5 = parseKeywordIf("ORDER BY") ? s4.orderBy(parseList(',', c -> c.parseSortField())) : s4; UpdateReturningStep s6 = (limit != null || parseKeywordIf("LIMIT")) ? s5.limit(limit != null ? limit : requireParam(parseParenthesisedUnsignedIntegerOrBindVariable())) @@ -13780,7 +13788,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { static { Set set = new TreeSet<>(asList(KEYWORDS_IN_FROM)); - set.addAll(asList("FROM", "USING", "WHERE", "ORDER BY", "LIMIT", "RETURNING")); + set.addAll(asList("FROM", "USING", "ALL", "WHERE", "ORDER BY", "LIMIT", "RETURNING")); set.addAll(asList(KEYWORDS_IN_STATEMENTS)); KEYWORDS_IN_DELETE_FROM = set.toArray(EMPTY_STRING); }