From 6583195005034bc1aff32b6d320fe4acc4315512 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Sat, 22 Apr 2017 12:03:02 +0200 Subject: [PATCH] [#5955] CREATE TEMPORARY TABLE .. ON COMMIT clause --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index ed1c80e472..a522628924 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -1228,6 +1228,7 @@ class ParserImpl implements Parser { boolean ifNotExists = !temporary && parseKeywordIf(ctx, "IF NOT EXISTS"); Table tableName = parseTableName(ctx); + // [#5309] TODO: Move this after the column specification if (parseKeywordIf(ctx, "AS")) { Select select = parseSelect(ctx); @@ -1438,8 +1439,20 @@ class ParserImpl implements Parser { CreateTableConstraintStep s3 = constraints.isEmpty() ? s2 : s2.constraints(constraints); + CreateTableFinalStep s4 = s3; - return s3; + if (temporary && parseKeywordIf(ctx, "ON COMMIT")) { + if (parseKeywordIf(ctx, "DELETE ROWS")) + s4 = s3.onCommitDeleteRows(); + else if (parseKeywordIf(ctx, "DROP")) + s4 = s3.onCommitDrop(); + else if (parseKeywordIf(ctx, "PRESERVE ROWS")) + s4 = s3.onCommitPreserveRows(); + else + throw ctx.unexpectedToken(); + } + + return s4; } }