From 69444fd3bfea339b3354fa13af13bc1cef47bd12 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 5 Apr 2023 16:02:44 +0200 Subject: [PATCH] [jOOQ/jOOQ#14011] Add SQLDialect.ORACLE23C - Support IF [ NOT ] EXISTS --- .../main/java/org/jooq/impl/AlterIndexImpl.java | 2 +- .../java/org/jooq/impl/AlterSequenceImpl.java | 16 ++++++++++------ .../main/java/org/jooq/impl/AlterTableImpl.java | 2 +- .../main/java/org/jooq/impl/AlterViewImpl.java | 12 ++++++++---- .../java/org/jooq/impl/CreateDatabaseImpl.java | 2 +- .../main/java/org/jooq/impl/CreateIndexImpl.java | 2 +- .../java/org/jooq/impl/CreateSchemaImpl.java | 2 +- .../java/org/jooq/impl/CreateSequenceImpl.java | 2 +- .../main/java/org/jooq/impl/CreateTableImpl.java | 2 +- .../main/java/org/jooq/impl/CreateViewImpl.java | 3 ++- .../java/org/jooq/impl/DropDatabaseImpl.java | 2 +- .../main/java/org/jooq/impl/DropIndexImpl.java | 2 +- .../main/java/org/jooq/impl/DropSchemaImpl.java | 2 +- .../java/org/jooq/impl/DropSequenceImpl.java | 2 +- .../main/java/org/jooq/impl/DropTableImpl.java | 2 +- .../main/java/org/jooq/impl/DropViewImpl.java | 2 +- 16 files changed, 33 insertions(+), 24 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java index 937f9a85e4..d57b59d39c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java @@ -152,7 +152,7 @@ implements private static final Clause[] CLAUSES = { Clause.ALTER_INDEX }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD); private static final Set SUPPORT_RENAME_INDEX = SQLDialect.supportedBy(DERBY); private final boolean supportsIfExists(Context ctx) { diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java index eaf814660f..e25b0edeb4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java @@ -277,18 +277,22 @@ implements - private static final Clause[] CLAUSES = { Clause.ALTER_SEQUENCE }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); - private static final Set NO_SEPARATOR = SQLDialect.supportedBy(CUBRID, MARIADB); - private static final Set NO_SUPPORT_CACHE = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB); - private static final Set EMULATE_NO_CACHE = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); + private static final Clause[] CLAUSES = { Clause.ALTER_SEQUENCE }; + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD); + private static final Set NO_SUPPORT_RENAME_IF_EXISTS = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); + private static final Set NO_SEPARATOR = SQLDialect.supportedBy(CUBRID, MARIADB); + private static final Set NO_SUPPORT_CACHE = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB); + private static final Set EMULATE_NO_CACHE = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); private final boolean supportsIfExists(Context ctx) { - return !NO_SUPPORT_IF_EXISTS.contains(ctx.dialect()); + if (renameTo != null) + return !NO_SUPPORT_RENAME_IF_EXISTS.contains(ctx.dialect()); + else + return !NO_SUPPORT_IF_EXISTS.contains(ctx.dialect()); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java index 84f6032cfd..59c2527d1c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java @@ -227,7 +227,7 @@ implements { private static final Clause[] CLAUSES = { ALTER_TABLE }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, MARIADB); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD, MARIADB); private static final Set NO_SUPPORT_IF_EXISTS_COLUMN = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); private static final Set NO_SUPPORT_IF_EXISTS_CONSTRAINT = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); private static final Set NO_SUPPORT_IF_NOT_EXISTS_COLUMN = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java index 263ee51ff6..83ab5f689d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java @@ -173,12 +173,16 @@ implements - private static final Clause[] CLAUSES = { Clause.ALTER_VIEW }; - private static final Set SUPPORT_IF_EXISTS = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); - private static final Set SUPPORT_ALTER_TABLE_RENAME = SQLDialect.supportedBy(HSQLDB, YUGABYTEDB); + private static final Clause[] CLAUSES = { Clause.ALTER_VIEW }; + private static final Set NO_SUPPORT_RENAME_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD); + private static final Set SUPPORT_ALTER_TABLE_RENAME = SQLDialect.supportedBy(HSQLDB, YUGABYTEDB); private final boolean supportsIfExists(Context ctx) { - return !SUPPORT_IF_EXISTS.contains(ctx.dialect()); + if (renameTo != null) + return !NO_SUPPORT_RENAME_IF_EXISTS.contains(ctx.dialect()); + else + return !NO_SUPPORT_IF_EXISTS.contains(ctx.dialect()); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateDatabaseImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateDatabaseImpl.java index 97ccab8ad0..5ccac0b0b5 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateDatabaseImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateDatabaseImpl.java @@ -93,7 +93,7 @@ implements - private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD, POSTGRES, YUGABYTEDB); + private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD, POSTGRES, YUGABYTEDB); private final boolean supportsIfNotExists(Context ctx) { return !NO_SUPPORT_IF_NOT_EXISTS.contains(ctx.dialect()); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java index 60b7653ba2..b563ad045e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java @@ -251,7 +251,7 @@ implements private static final Clause[] CLAUSES = { Clause.CREATE_INDEX }; - private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); private static final Set SUPPORT_UNNAMED_INDEX = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); private static final Set SUPPORT_INCLUDE = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); private static final Set SUPPORT_UNIQUE_INCLUDE = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateSchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateSchemaImpl.java index 6290c96671..2c0cbcab58 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateSchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateSchemaImpl.java @@ -94,7 +94,7 @@ implements private static final Clause[] CLAUSES = { Clause.CREATE_SCHEMA }; - private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java index d9a5991601..80ac0f70f5 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java @@ -232,7 +232,7 @@ implements private static final Clause[] CLAUSES = { Clause.CREATE_SEQUENCE }; - private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); private static final Set REQUIRES_START_WITH = SQLDialect.supportedBy(DERBY); private static final Set NO_SUPPORT_CACHE = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB); private static final Set NO_SEPARATOR = SQLDialect.supportedBy(CUBRID, MARIADB); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java index 58c2d87706..5cf3e48143 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java @@ -342,7 +342,7 @@ implements - static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); static final Set NO_SUPPORT_WITH_DATA = SQLDialect.supportedBy(H2, MARIADB, MYSQL, SQLITE); static final Set NO_SUPPORT_CTAS_COLUMN_NAMES = SQLDialect.supportedBy(H2); static final Set EMULATE_INDEXES_IN_BLOCK = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java index 1ae3636e8e..41c52d542b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java @@ -52,6 +52,7 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... import static org.jooq.SQLDialect.MYSQL; // ... +// ... import static org.jooq.SQLDialect.POSTGRES; // ... // ... @@ -109,7 +110,7 @@ final class CreateViewImpl extends AbstractDDLQuery implements { private static final Clause[] CLAUSES = { CREATE_VIEW }; - private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD, MYSQL, POSTGRES, YUGABYTEDB); + private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD, MYSQL, POSTGRES, YUGABYTEDB); private static final Set NO_SUPPORT_COLUMN_RENAME = SQLDialect.supportedBy(TRINO); private final boolean ifNotExists; diff --git a/jOOQ/src/main/java/org/jooq/impl/DropDatabaseImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropDatabaseImpl.java index a71eb45f16..e02ff7017e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropDatabaseImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropDatabaseImpl.java @@ -93,7 +93,7 @@ implements - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); private final boolean supportsIfExists(Context ctx) { return !NO_SUPPORT_IF_EXISTS.contains(ctx.dialect()); diff --git a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java index 4f88b211e9..7e9e58c3ce 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java @@ -148,7 +148,7 @@ implements private static final Clause[] CLAUSES = { Clause.DROP_INDEX }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD); private static final Set REQUIRES_ON = SQLDialect.supportedBy(MARIADB, MYSQL); private final boolean supportsIfExists(Context ctx) { diff --git a/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java index 3047976b1f..045a11e3d7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java @@ -127,7 +127,7 @@ implements private static final Clause[] CLAUSES = { Clause.DROP_SCHEMA }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); private static final Set REQUIRES_RESTRICT = SQLDialect.supportedBy(DERBY); diff --git a/jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java index 77c50721c3..d9b16be5ff 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java @@ -94,7 +94,7 @@ implements private static final Clause[] CLAUSES = { Clause.DROP_SEQUENCE }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); private final boolean supportsIfExists(Context ctx) { return !NO_SUPPORT_IF_EXISTS.contains(ctx.dialect()); diff --git a/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java index 09c72f27f5..a4fd391aed 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java @@ -132,7 +132,7 @@ implements private static final Clause[] CLAUSES = { Clause.DROP_TABLE }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); private static final Set TEMPORARY_SEMANTIC = SQLDialect.supportedBy(MARIADB, MYSQL); private final boolean supportsIfExists(Context ctx) { diff --git a/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java index 63e5991f47..452c202e8b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java @@ -94,7 +94,7 @@ implements private static final Clause[] CLAUSES = { Clause.DROP_VIEW }; - private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedUntil(DERBY, FIREBIRD); private final boolean supportsIfExists(Context ctx) { return !NO_SUPPORT_IF_EXISTS.contains(ctx.dialect());