From e5e1d2266903298eb7fcdbf1eeab83f078605b33 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Tue, 8 Jan 2019 16:17:05 +0100 Subject: [PATCH] [#8175] Add support for LOOP in procedural blocks --- .../resources/org/jooq/web/grammar-3.12.txt | 5 +++++ jOOQ/src/main/java/org/jooq/impl/DSL.java | 18 ++++++++++++++++++ .../main/java/org/jooq/impl/ParserImpl.java | 18 ++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt index 106459d249..55bace47f8 100644 --- a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt +++ b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt @@ -51,6 +51,7 @@ proceduralStatement = | declareStatement | assignmentStatement | ifStatement +| loopStatement | whileStatement | exitStatement | nullStatement @@ -82,6 +83,10 @@ ifStatement = 'END IF' ; +loopStatement = + 'LOOP' proceduralStatements 'END LOOP' +; + whileStatement = 'WHILE' condition 'LOOP' proceduralStatements 'END LOOP' ; diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 0362f97d0b..4187acb105 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -9813,6 +9813,24 @@ public class DSL { + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 9c60a4e4bc..3ccf8a7595 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -145,6 +145,7 @@ import static org.jooq.impl.DSL.list; import static org.jooq.impl.DSL.listAgg; import static org.jooq.impl.DSL.ln; import static org.jooq.impl.DSL.log; +import static org.jooq.impl.DSL.loop; import static org.jooq.impl.DSL.lower; import static org.jooq.impl.DSL.lpad; import static org.jooq.impl.DSL.ltrim; @@ -2271,6 +2272,16 @@ final class ParserImpl implements Parser { + ; + + break; + + case 'l': + case 'L': + if (peekKeyword(ctx, "LOOP") && ctx.requireProEdition()) + + + ; break; @@ -2412,6 +2423,13 @@ final class ParserImpl implements Parser { + + + + + + +