Skip to content

Commit

Permalink
git commit -m
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaseder committed Jan 3, 2019
1 parent 9f2447d commit 00d715e
Show file tree
Hide file tree
Showing 2 changed files with 128 additions and 4 deletions.
18 changes: 17 additions & 1 deletion jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.12.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,30 @@ dmlStatement =

proceduralStatement =
query
| declareStatement
| assignmentStatement
| nullStatement
;

blockStatement =
[ 'EXECUTE BLOCK AS' ] 'BEGIN' proceduralStatement ';' { proceduralStatement ';' } 'END'
[ 'EXECUTE BLOCK AS' | 'DECLARE' ( declarationStatement ';' )+ ]
'BEGIN' ( proceduralStatement ';' )+ 'END'
| 'DO' stringLiteral
;

declarationStatement =
identifier [ 'CONSTANT' ] dataType [ ( '=' | ':=' | 'DEFAULT' ) field ]
;

declareStatement =
'DECLARE' identifier dataType [ '=' field ]
;

assignmentStatement =
'SET' identifier '=' field
| identifier ':=' field
;

nullStatement = 'NULL'
;

Expand Down
114 changes: 111 additions & 3 deletions jOOQ/src/main/java/org/jooq/impl/ParserImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
import static org.jooq.impl.DSL.dayOfWeek;
import static org.jooq.impl.DSL.dayOfYear;
import static org.jooq.impl.DSL.decade;
import static org.jooq.impl.DSL.declare;
import static org.jooq.impl.DSL.defaultValue;
import static org.jooq.impl.DSL.deg;
import static org.jooq.impl.DSL.denseRank;
Expand Down Expand Up @@ -253,6 +254,7 @@
import static org.jooq.impl.DSL.unnest;
import static org.jooq.impl.DSL.user;
import static org.jooq.impl.DSL.values;
import static org.jooq.impl.DSL.var;
import static org.jooq.impl.DSL.varPop;
import static org.jooq.impl.DSL.varSamp;
import static org.jooq.impl.DSL.week;
Expand Down Expand Up @@ -336,6 +338,7 @@
import org.jooq.DSLContext;
import org.jooq.DataType;
import org.jooq.DatePart;
// ...
import org.jooq.Delete;
import org.jooq.DeleteLimitStep;
import org.jooq.DeleteOrderByStep;
Expand Down Expand Up @@ -723,7 +726,9 @@ else if (!parseResultQuery && peekKeyword(ctx, "COMMENT ON"))

case 'd':
case 'D':
if (!parseResultQuery && (peekKeyword(ctx, "DELETE") || peekKeyword(ctx, "DEL")))
if (!parseResultQuery && peekKeyword(ctx, "DECLARE") && ctx.requireProEdition())
return parseBlock(ctx);
else if (!parseResultQuery && (peekKeyword(ctx, "DELETE") || peekKeyword(ctx, "DEL")))
return parseDelete(ctx, null);
else if (!parseResultQuery && peekKeyword(ctx, "DROP"))
return parseDrop(ctx);
Expand Down Expand Up @@ -2179,10 +2184,18 @@ else if ("COLUMN".equalsIgnoreCase(objectType))
}

private static final Block parseBlock(ParserContext ctx) {
parseKeywordIf(ctx, "EXECUTE BLOCK AS");
List<Statement> statements = new ArrayList<Statement>();

if (parseKeywordIf(ctx, "DECLARE") && ctx.requireProEdition())



;
else
parseKeywordIf(ctx, "EXECUTE BLOCK AS");

parseKeyword(ctx, "BEGIN");

List<Statement> statements = new ArrayList<Statement>();
for (;;) {
Statement statement = parseStatement(ctx);
statements.add(statement);
Expand All @@ -2198,6 +2211,20 @@ private static final Block parseBlock(ParserContext ctx) {
return ctx.dsl.begin(statements);
}















private static final Block parseDo(ParserContext ctx) {
parseKeyword(ctx, "DO");
String block = parseStringLiteral(ctx);
Expand All @@ -2206,14 +2233,40 @@ private static final Block parseDo(ParserContext ctx) {

private static final Statement parseStatement(ParserContext ctx) {
switch (ctx.character()) {
case 'd':
case 'D':
if (peekKeyword(ctx, "DECLARE") && ctx.requireProEdition())



;

break;

case 'n':
case 'N':
if (peekKeyword(ctx, "NULL"))
return parseNullStatement(ctx);

break;

case 's':
case 'S':
if (peekKeyword(ctx, "SET") && ctx.requireProEdition())



;

break;
}







return parseQuery(ctx, false, false);
}

Expand All @@ -2226,6 +2279,61 @@ private static final Statement parseNullStatement(ParserContext ctx) {
return new NullStatement();
}
























































// -----------------------------------------------------------------------------------------------------------------
// Statement clause parsing
// -----------------------------------------------------------------------------------------------------------------
Expand Down

0 comments on commit 00d715e

Please sign in to comment.