diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java index b294840a38..b6d2298a5f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java @@ -58,7 +58,6 @@ import static org.jooq.SQLDialect.POSTGRES; // ... import static org.jooq.impl.DSL.field; import static org.jooq.impl.DSL.name; -import static org.jooq.impl.DropStatementType.TABLE; import static org.jooq.impl.Utils.DataKey.DATA_SELECT_INTO_TABLE; import java.util.ArrayList; @@ -180,9 +179,9 @@ class CreateTableImpl extends AbstractQuery implements @Override public final void accept(Context ctx) { if (ifNotExists && !supportsIfNotExists(ctx)) { - Utils.executeImmediateBegin(ctx, TABLE); + Utils.executeImmediateBegin(ctx, DDLStatementType.CREATE_TABLE); accept0(ctx); - Utils.executeImmediateEnd(ctx, TABLE); + Utils.executeImmediateEnd(ctx, DDLStatementType.CREATE_TABLE); } else { accept0(ctx); @@ -303,7 +302,7 @@ class CreateTableImpl extends AbstractQuery implements ctx.keyword("table") .sql(' '); - if (ifNotExists) + if (ifNotExists && supportsIfNotExists(ctx)) ctx.keyword("if not exists") .sql(' '); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java index 174eaa01bd..9607581cf0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java @@ -56,7 +56,6 @@ import static org.jooq.SQLDialect.SQLITE; import static org.jooq.conf.ParamType.INLINED; import static org.jooq.impl.DSL.selectFrom; import static org.jooq.impl.DSL.table; -import static org.jooq.impl.DropStatementType.VIEW; import org.jooq.Clause; import org.jooq.Configuration; @@ -119,9 +118,9 @@ class CreateViewImpl extends AbstractQuery implements @Override public final void accept(Context ctx) { if (ifNotExists && !supportsIfNotExists(ctx)) { - Utils.executeImmediateBegin(ctx, VIEW); + Utils.executeImmediateBegin(ctx, DDLStatementType.CREATE_VIEW); accept0(ctx); - Utils.executeImmediateEnd(ctx, VIEW); + Utils.executeImmediateEnd(ctx, DDLStatementType.CREATE_VIEW); } else { accept0(ctx); @@ -141,7 +140,7 @@ class CreateViewImpl extends AbstractQuery implements .keyword("create view") .sql(' '); - if (ifNotExists) + if (ifNotExists && supportsIfNotExists(ctx)) ctx.keyword("if not exists") .sql(' '); diff --git a/jOOQ/src/main/java/org/jooq/impl/DropStatementType.java b/jOOQ/src/main/java/org/jooq/impl/DDLStatementType.java similarity index 87% rename from jOOQ/src/main/java/org/jooq/impl/DropStatementType.java rename to jOOQ/src/main/java/org/jooq/impl/DDLStatementType.java index bb25a59467..7b8ec268f4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropStatementType.java +++ b/jOOQ/src/main/java/org/jooq/impl/DDLStatementType.java @@ -43,6 +43,14 @@ package org.jooq.impl; /** * @author Lukas Eder */ -enum DropStatementType { - INDEX, SEQUENCE, TABLE, VIEW +enum DDLStatementType { + CREATE_INDEX, + CREATE_SEQUENCE, + CREATE_TABLE, + CREATE_VIEW, + + DROP_INDEX, + DROP_SEQUENCE, + DROP_TABLE, + DROP_VIEW } diff --git a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java index 39fa262093..ebf4886301 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java @@ -52,7 +52,6 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... import static org.jooq.impl.DSL.name; import static org.jooq.impl.DSL.table; -import static org.jooq.impl.DropStatementType.INDEX; import org.jooq.Clause; import org.jooq.Configuration; @@ -122,9 +121,9 @@ class DropIndexImpl extends AbstractQuery implements @Override public final void accept(Context ctx) { if (ifExists && !supportsIfExists(ctx)) { - Utils.executeImmediateBegin(ctx, INDEX); + Utils.executeImmediateBegin(ctx, DDLStatementType.DROP_INDEX); accept0(ctx); - Utils.executeImmediateEnd(ctx, INDEX); + Utils.executeImmediateEnd(ctx, DDLStatementType.DROP_INDEX); } else { accept0(ctx); diff --git a/jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java index 88a4124605..f8c2b91793 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropSequenceImpl.java @@ -52,7 +52,6 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... // ... // ... -import static org.jooq.impl.DropStatementType.SEQUENCE; import org.jooq.Clause; import org.jooq.Configuration; @@ -99,9 +98,9 @@ class DropSequenceImpl extends AbstractQuery implements @Override public final void accept(Context ctx) { if (ifExists && !supportsIfExists(ctx)) { - Utils.executeImmediateBegin(ctx, SEQUENCE); + Utils.executeImmediateBegin(ctx, DDLStatementType.DROP_SEQUENCE); accept0(ctx); - Utils.executeImmediateEnd(ctx, SEQUENCE); + Utils.executeImmediateEnd(ctx, DDLStatementType.DROP_SEQUENCE); } else { accept0(ctx); diff --git a/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java index 12dc02318c..6f1ee7d51e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java @@ -50,7 +50,6 @@ import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.FIREBIRD; // ... // ... -import static org.jooq.impl.DropStatementType.TABLE; import org.jooq.Clause; import org.jooq.Configuration; @@ -115,9 +114,9 @@ class DropTableImpl extends AbstractQuery implements @Override public final void accept(Context ctx) { if (ifExists && !supportsIfExists(ctx)) { - Utils.executeImmediateBegin(ctx, TABLE); + Utils.executeImmediateBegin(ctx, DDLStatementType.DROP_TABLE); accept0(ctx); - Utils.executeImmediateEnd(ctx, TABLE); + Utils.executeImmediateEnd(ctx, DDLStatementType.DROP_TABLE); } else { accept0(ctx); diff --git a/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java index 37d21370ec..717548b0f1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java @@ -51,7 +51,6 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... // ... // ... -import static org.jooq.impl.DropStatementType.VIEW; import org.jooq.Clause; import org.jooq.Configuration; @@ -99,9 +98,9 @@ class DropViewImpl extends AbstractQuery implements @Override public final void accept(Context ctx) { if (ifExists && !supportsIfExists(ctx)) { - Utils.executeImmediateBegin(ctx, VIEW); + Utils.executeImmediateBegin(ctx, DDLStatementType.DROP_VIEW); accept0(ctx); - Utils.executeImmediateEnd(ctx, VIEW); + Utils.executeImmediateEnd(ctx, DDLStatementType.DROP_VIEW); } else { accept0(ctx); diff --git a/jOOQ/src/main/java/org/jooq/impl/Utils.java b/jOOQ/src/main/java/org/jooq/impl/Utils.java index 939941006f..ecd1b49e3a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Utils.java +++ b/jOOQ/src/main/java/org/jooq/impl/Utils.java @@ -54,6 +54,14 @@ import static org.jooq.conf.ParamType.NAMED_OR_INLINED; import static org.jooq.conf.SettingsTools.getBackslashEscaping; import static org.jooq.conf.SettingsTools.reflectionCaching; import static org.jooq.conf.SettingsTools.updatablePrimaryKeys; +import static org.jooq.impl.DDLStatementType.CREATE_INDEX; +import static org.jooq.impl.DDLStatementType.CREATE_SEQUENCE; +import static org.jooq.impl.DDLStatementType.CREATE_TABLE; +import static org.jooq.impl.DDLStatementType.CREATE_VIEW; +import static org.jooq.impl.DDLStatementType.DROP_INDEX; +import static org.jooq.impl.DDLStatementType.DROP_SEQUENCE; +import static org.jooq.impl.DDLStatementType.DROP_TABLE; +import static org.jooq.impl.DDLStatementType.DROP_VIEW; import static org.jooq.impl.DSL.concat; import static org.jooq.impl.DSL.escape; import static org.jooq.impl.DSL.getDataType; @@ -61,10 +69,6 @@ import static org.jooq.impl.DSL.name; import static org.jooq.impl.DSL.nullSafe; import static org.jooq.impl.DSL.val; import static org.jooq.impl.DefaultExecuteContext.localConnection; -import static org.jooq.impl.DropStatementType.INDEX; -import static org.jooq.impl.DropStatementType.SEQUENCE; -import static org.jooq.impl.DropStatementType.TABLE; -import static org.jooq.impl.DropStatementType.VIEW; import static org.jooq.impl.Identifiers.QUOTES; import static org.jooq.impl.Identifiers.QUOTE_END_DELIMITER; import static org.jooq.impl.Identifiers.QUOTE_END_DELIMITER_ESCAPED; @@ -2779,7 +2783,7 @@ final class Utils { * IF EXISTS is not supported. */ @SuppressWarnings("unused") - static final void executeImmediateBegin(Context ctx, DropStatementType type) { + static final void executeImmediateBegin(Context ctx, DDLStatementType type) { switch (ctx.family()) { @@ -2840,7 +2844,7 @@ final class Utils { * BEGIN EXECUTE IMMEDIATE '...' EXCEPTION WHEN ... END;, if * IF EXISTS is not supported. */ - static final void executeImmediateEnd(Context ctx, DropStatementType type) { + static final void executeImmediateEnd(Context ctx, DDLStatementType type) { switch (ctx.family()) { @@ -2885,6 +2889,10 @@ final class Utils { + + + +