From db45ea6f1e6307e2e64e62577a01cfc7f45520bb Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 18 Jan 2022 10:52:25 +0100 Subject: [PATCH] [jOOQ/jOOQ#12888] Parser should treat AS optional in CREATE TABLE AS SELECT --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 8 +++++--- 1 file changed, 5 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 aa6347ccb1..f8cab8cf1b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -4274,7 +4274,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { boolean readonly = false; boolean ctas = false; - if (parseIf('(')) { + if (!peekSelectOrWith(true) && parseIf('(')) { columnLoop: do { @@ -4379,8 +4379,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { if (!fields.isEmpty()) columnStep = columnStep.columns(fields); - if (ctas && parseKeyword("AS") || - !ctas && parseKeywordIf("AS")) { + if (parseKeywordIf("AS") || peekSelectOrWith(true)) { boolean previousMetaLookupsForceIgnore = metaLookupsForceIgnore(); CreateTableWithDataStep withDataStep = columnStep.as((Select) metaLookupsForceIgnore(false).parseQuery(true, true)); metaLookupsForceIgnore(previousMetaLookupsForceIgnore); @@ -4391,6 +4390,9 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { ? withDataStep.withNoData() : withDataStep; } + else if (ctas) { + throw expected("AS, WITH, SELECT, or ("); + } else { CreateTableConstraintStep constraintStep = constraints.isEmpty() ? columnStep