From c74cb49c50ee9609e51df72164337e72f72271f3 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 15 Jun 2021 13:31:52 +0200 Subject: [PATCH] [jOOQ/jOOQ#12013] Support parsing HSQLDB post-fix IF EXISTS in DROP statements --- .../main/java/org/jooq/impl/ParserImpl.java | 21 ++++++++++++++++++- 1 file changed, 20 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 72e0509390..55d57b8bf1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -3598,8 +3598,9 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } private final DDLQuery parseDropExtension() { - parseKeywordIf("IF EXISTS"); + boolean ifExists = parseKeywordIf("IF EXISTS"); parseIdentifiers(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); if (!parseKeywordIf("CASCADE")) parseKeywordIf("RESTRICT"); return IGNORE; @@ -3639,6 +3640,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final DDLQuery parseDropView() { boolean ifExists = parseKeywordIf("IF EXISTS"); Table tableName = parseTableName(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); DropViewFinalStep s1; @@ -3828,6 +3830,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final DDLQuery parseDropSequence() { boolean ifExists = parseKeywordIf("IF EXISTS"); Sequence sequenceName = parseSequenceName(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); parseKeywordIf("RESTRICT"); return ifExists @@ -4985,6 +4988,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final DDLQuery parseDropTable(boolean temporary) { boolean ifExists = parseKeywordIf("IF EXISTS"); Table tableName = parseTableName(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); boolean cascade = parseKeywordIf("CASCADE"); boolean restrict = !cascade && parseKeywordIf("RESTRICT"); @@ -5325,6 +5329,16 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { + + + + + + + + + + @@ -5339,6 +5353,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final DDLQuery parseDropType() { boolean ifExists = parseKeywordIf("IF EXISTS"); List typeNames = parseIdentifiers(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); boolean cascade = parseKeywordIf("CASCADE"); boolean restrict = !cascade && parseKeywordIf("RESTRICT"); @@ -5463,6 +5478,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final DDLQuery parseDropDomain() { boolean ifExists = parseKeywordIf("IF EXISTS"); Domain domainName = parseDomainName(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); boolean cascade = parseKeywordIf("CASCADE"); boolean restrict = !cascade && parseKeywordIf("RESTRICT"); @@ -5530,6 +5546,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final DDLQuery parseDropDatabase() { boolean ifExists = parseKeywordIf("IF EXISTS"); Catalog catalogName = parseCatalogName(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); return ifExists ? dsl.dropDatabaseIfExists(catalogName) @@ -5571,6 +5588,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final DDLQuery parseDropSchema() { boolean ifExists = parseKeywordIf("IF EXISTS"); Schema schemaName = parseSchemaName(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); boolean cascade = parseKeywordIf("CASCADE"); boolean restrict = !cascade && parseKeywordIf("RESTRICT"); @@ -5670,6 +5688,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { private final DDLQuery parseDropIndex() { boolean ifExists = parseKeywordIf("IF EXISTS"); Name indexName = parseIndexName(); + ifExists = ifExists || parseKeywordIf("IF EXISTS"); boolean on = parseKeywordIf("ON"); Table onTable = on ? parseTableName() : null;