diff --git a/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/Keys.java b/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/Keys.java index 148b88bfd7..96a915ea3f 100644 --- a/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/Keys.java +++ b/jOOQ-examples/jOOQ-kotlin-example/src/main/java/org/jooq/example/db/h2/Keys.java @@ -56,8 +56,8 @@ public class Keys { // ------------------------------------------------------------------------- private static class Identities0 { - public static Identity IDENTITY_AUTHOR = Internal.createIdentity(Author.AUTHOR, Author.AUTHOR.ID); - public static Identity IDENTITY_BOOK = Internal.createIdentity(Book.BOOK, Book.BOOK.ID); + static final Identity IDENTITY_AUTHOR = Internal.createIdentity(Author.AUTHOR, Author.AUTHOR.ID); + static final Identity IDENTITY_BOOK = Internal.createIdentity(Book.BOOK, Book.BOOK.ID); } private static class UniqueKeys0 { diff --git a/jOOQ/src/main/java/org/jooq/AlterDomainDropConstraintCascadeStep.java b/jOOQ/src/main/java/org/jooq/AlterDomainDropConstraintCascadeStep.java index 2fe68fb40d..b867165627 100644 --- a/jOOQ/src/main/java/org/jooq/AlterDomainDropConstraintCascadeStep.java +++ b/jOOQ/src/main/java/org/jooq/AlterDomainDropConstraintCascadeStep.java @@ -74,6 +74,6 @@ public interface AlterDomainDropConstraintCascadeStep extends AlterDomainFinalSt /** * Add the RESTRICT clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) AlterDomainFinalStep restrict(); } diff --git a/jOOQ/src/main/java/org/jooq/AlterDomainStep.java b/jOOQ/src/main/java/org/jooq/AlterDomainStep.java index 2b61f09a4e..3e53ebfb6f 100644 --- a/jOOQ/src/main/java/org/jooq/AlterDomainStep.java +++ b/jOOQ/src/main/java/org/jooq/AlterDomainStep.java @@ -68,61 +68,61 @@ public interface AlterDomainStep { /** * Add the ADD clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainFinalStep add(Constraint addConstraint); /** * Add the DROP CONSTRAINT clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainDropConstraintCascadeStep dropConstraint(String dropConstraint); /** * Add the DROP CONSTRAINT clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainDropConstraintCascadeStep dropConstraint(Name dropConstraint); /** * Add the DROP CONSTRAINT clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainDropConstraintCascadeStep dropConstraint(Constraint dropConstraint); /** * Add the DROP CONSTRAINT IF EXISTS clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainDropConstraintCascadeStep dropConstraintIfExists(String dropConstraint); /** * Add the DROP CONSTRAINT IF EXISTS clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainDropConstraintCascadeStep dropConstraintIfExists(Name dropConstraint); /** * Add the DROP CONSTRAINT IF EXISTS clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainDropConstraintCascadeStep dropConstraintIfExists(Constraint dropConstraint); /** * Add the RENAME TO clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainFinalStep renameTo(String renameTo); /** * Add the RENAME TO clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainFinalStep renameTo(Name renameTo); /** * Add the RENAME TO clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainFinalStep renameTo(Domain renameTo); /** @@ -164,19 +164,19 @@ public interface AlterDomainStep { /** * Add the SET DEFAULT clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainFinalStep setDefault(T setDefault); /** * Add the SET DEFAULT clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainFinalStep setDefault(Field setDefault); /** * Add the DROP DEFAULT clause to the ALTER DOMAIN statement. */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainFinalStep dropDefault(); /** diff --git a/jOOQ/src/main/java/org/jooq/CreateDomainAsStep.java b/jOOQ/src/main/java/org/jooq/CreateDomainAsStep.java index b155d68f18..049735ec57 100644 --- a/jOOQ/src/main/java/org/jooq/CreateDomainAsStep.java +++ b/jOOQ/src/main/java/org/jooq/CreateDomainAsStep.java @@ -68,12 +68,12 @@ public interface CreateDomainAsStep { /** * Add the AS clause to the CREATE DOMAIN statement. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainDefaultStep as(Class dataType); /** * Add the AS clause to the CREATE DOMAIN statement. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainDefaultStep as(DataType dataType); } diff --git a/jOOQ/src/main/java/org/jooq/CreateDomainConstraintStep.java b/jOOQ/src/main/java/org/jooq/CreateDomainConstraintStep.java index bbd46f5fd9..7e70cfd901 100644 --- a/jOOQ/src/main/java/org/jooq/CreateDomainConstraintStep.java +++ b/jOOQ/src/main/java/org/jooq/CreateDomainConstraintStep.java @@ -68,12 +68,12 @@ public interface CreateDomainConstraintStep extends CreateDomainFinalStep { /** * Add the CONSTRAINTS clause to the CREATE DOMAIN statement. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainConstraintStep constraints(Constraint... constraints); /** * Add the CONSTRAINTS clause to the CREATE DOMAIN statement. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainConstraintStep constraints(Collection constraints); } diff --git a/jOOQ/src/main/java/org/jooq/CreateDomainDefaultStep.java b/jOOQ/src/main/java/org/jooq/CreateDomainDefaultStep.java index 4d4ce793d0..e15fdcd388 100644 --- a/jOOQ/src/main/java/org/jooq/CreateDomainDefaultStep.java +++ b/jOOQ/src/main/java/org/jooq/CreateDomainDefaultStep.java @@ -68,12 +68,12 @@ public interface CreateDomainDefaultStep extends CreateDomainConstraintStep { /** * Add the DEFAULT_ clause to the CREATE DOMAIN statement. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainConstraintStep default_(T default_); /** * Add the DEFAULT_ clause to the CREATE DOMAIN statement. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainConstraintStep default_(Field default_); } diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index cc81acae8c..1f9fef28e2 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -8793,7 +8793,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#createDomain(String) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainAsStep createDomain(String domain); /** @@ -8801,7 +8801,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#createDomain(Name) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainAsStep createDomain(Name domain); /** @@ -8809,7 +8809,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#createDomain(Domain) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainAsStep createDomain(Domain domain); /** @@ -8817,7 +8817,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#createDomainIfNotExists(String) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainAsStep createDomainIfNotExists(String domain); /** @@ -8825,7 +8825,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#createDomainIfNotExists(Name) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainAsStep createDomainIfNotExists(Name domain); /** @@ -8833,7 +8833,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#createDomainIfNotExists(Domain) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) CreateDomainAsStep createDomainIfNotExists(Domain domain); /** @@ -8985,7 +8985,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#alterDomain(String) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainStep alterDomain(String domain); /** @@ -8993,7 +8993,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#alterDomain(Name) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainStep alterDomain(Name domain); /** @@ -9001,7 +9001,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#alterDomain(Domain) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainStep alterDomain(Domain domain); /** @@ -9009,7 +9009,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#alterDomainIfExists(String) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainStep alterDomainIfExists(String domain); /** @@ -9017,7 +9017,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#alterDomainIfExists(Name) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainStep alterDomainIfExists(Name domain); /** @@ -9025,7 +9025,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#alterDomainIfExists(Domain) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) AlterDomainStep alterDomainIfExists(Domain domain); /** @@ -9129,7 +9129,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#dropDomain(String) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) DropDomainCascadeStep dropDomain(String domain); /** @@ -9137,7 +9137,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#dropDomain(Name) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) DropDomainCascadeStep dropDomain(Name domain); /** @@ -9145,7 +9145,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#dropDomain(Domain) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) DropDomainCascadeStep dropDomain(Domain domain); /** @@ -9153,7 +9153,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#dropDomainIfExists(String) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) DropDomainCascadeStep dropDomainIfExists(String domain); /** @@ -9161,7 +9161,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#dropDomainIfExists(Name) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) DropDomainCascadeStep dropDomainIfExists(Name domain); /** @@ -9169,7 +9169,7 @@ public interface DSLContext extends Scope , AutoCloseable { * * @see DSL#dropDomainIfExists(Domain) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) DropDomainCascadeStep dropDomainIfExists(Domain domain); /** diff --git a/jOOQ/src/main/java/org/jooq/DropDomainCascadeStep.java b/jOOQ/src/main/java/org/jooq/DropDomainCascadeStep.java index ea2ea6e4c7..524da1ba24 100644 --- a/jOOQ/src/main/java/org/jooq/DropDomainCascadeStep.java +++ b/jOOQ/src/main/java/org/jooq/DropDomainCascadeStep.java @@ -74,6 +74,6 @@ public interface DropDomainCascadeStep extends DropDomainFinalStep { /** * Add the RESTRICT clause to the DROP DOMAIN statement. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) DropDomainFinalStep restrict(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterDatabaseImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterDatabaseImpl.java index 781f595bbe..02979341ed 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterDatabaseImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterDatabaseImpl.java @@ -100,7 +100,7 @@ implements @Override public final AlterDatabaseImpl renameTo(String renameTo) { - return renameTo(DSL.catalog(renameTo)); + return renameTo(DSL.catalog(DSL.name(renameTo))); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java index 8c993db72d..c86604e8ba 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java @@ -37,14 +37,39 @@ */ package org.jooq.impl; -import static org.jooq.impl.Keywords.*; -import static org.jooq.impl.Tools.BooleanDataKey.*; -import static org.jooq.SQLDialect.*; +// ... +import static org.jooq.SQLDialect.FIREBIRD; +import static org.jooq.SQLDialect.POSTGRES; +import static org.jooq.impl.DSL.check; +import static org.jooq.impl.Keywords.K_ADD; +import static org.jooq.impl.Keywords.K_ALTER; +import static org.jooq.impl.Keywords.K_CASCADE; +import static org.jooq.impl.Keywords.K_DOMAIN; +import static org.jooq.impl.Keywords.K_DROP_CONSTRAINT; +import static org.jooq.impl.Keywords.K_DROP_DEFAULT; +import static org.jooq.impl.Keywords.K_DROP_NOT_NULL; +import static org.jooq.impl.Keywords.K_IF_EXISTS; +import static org.jooq.impl.Keywords.K_RENAME_CONSTRAINT; +import static org.jooq.impl.Keywords.K_RENAME_TO; +import static org.jooq.impl.Keywords.K_RESTRICT; +import static org.jooq.impl.Keywords.K_SET_DEFAULT; +import static org.jooq.impl.Keywords.K_SET_NOT_NULL; +import static org.jooq.impl.Keywords.K_TO; +import static org.jooq.impl.Tools.BooleanDataKey.DATA_CONSTRAINT_REFERENCE; -import org.jooq.*; -import org.jooq.impl.*; +import java.util.Set; -import java.util.*; +import org.jooq.AlterDomainDropConstraintCascadeStep; +import org.jooq.AlterDomainFinalStep; +import org.jooq.AlterDomainRenameConstraintStep; +import org.jooq.AlterDomainStep; +import org.jooq.Configuration; +import org.jooq.Constraint; +import org.jooq.Context; +import org.jooq.Domain; +import org.jooq.Field; +import org.jooq.Name; +import org.jooq.SQLDialect; /** * The ALTER DOMAIN IF EXISTS statement. @@ -76,7 +101,7 @@ implements private boolean dropNotNull; private Boolean cascade; private Constraint renameConstraintTo; - + AlterDomainImpl( Configuration configuration, Domain domain, @@ -154,7 +179,7 @@ implements // ------------------------------------------------------------------------- // XXX: DSL API // ------------------------------------------------------------------------- - + @Override public final AlterDomainImpl add(Constraint addConstraint) { this.addConstraint = addConstraint; @@ -163,7 +188,7 @@ implements @Override public final AlterDomainImpl dropConstraint(String dropConstraint) { - return dropConstraint(DSL.constraint(dropConstraint)); + return dropConstraint(DSL.constraint(DSL.name(dropConstraint))); } @Override @@ -180,7 +205,7 @@ implements @Override public final AlterDomainImpl dropConstraintIfExists(String dropConstraint) { - return dropConstraintIfExists(DSL.constraint(dropConstraint)); + return dropConstraintIfExists(DSL.constraint(DSL.name(dropConstraint))); } @Override @@ -197,7 +222,7 @@ implements @Override public final AlterDomainImpl renameTo(String renameTo) { - return renameTo(DSL.domain(renameTo)); + return renameTo(DSL.domain(DSL.name(renameTo))); } @Override @@ -213,7 +238,7 @@ implements @Override public final AlterDomainImpl renameConstraint(String renameConstraint) { - return renameConstraint(DSL.constraint(renameConstraint)); + return renameConstraint(DSL.constraint(DSL.name(renameConstraint))); } @Override @@ -230,7 +255,7 @@ implements @Override public final AlterDomainImpl renameConstraintIfExists(String renameConstraint) { - return renameConstraintIfExists(DSL.constraint(renameConstraint)); + return renameConstraintIfExists(DSL.constraint(DSL.name(renameConstraint))); } @Override @@ -288,7 +313,7 @@ implements @Override public final AlterDomainImpl to(String renameConstraintTo) { - return to(DSL.constraint(renameConstraintTo)); + return to(DSL.constraint(DSL.name(renameConstraintTo))); } @Override @@ -308,12 +333,17 @@ implements - private static final Set NO_SUPPORT_RENAME_CONSTRAINT_IF_EXISTS = SQLDialect.supportedBy(POSTGRES); + private static final Set NO_SUPPORT_RENAME_CONSTRAINT_IF_EXISTS = SQLDialect.supportedBy(FIREBIRD, POSTGRES); + private static final Set NO_SUPPORT_DROP_CONSTRAINT_IF_EXISTS = SQLDialect.supportedBy(FIREBIRD, POSTGRES); private final boolean supportsRenameConstraintIfExists(Context ctx) { return !NO_SUPPORT_RENAME_CONSTRAINT_IF_EXISTS.contains(ctx.family()); } + private final boolean supportsDropConstraintIfExists(Context ctx) { + return !NO_SUPPORT_DROP_CONSTRAINT_IF_EXISTS.contains(ctx.family()); + } + @Override public final void accept(Context ctx) { if (renameConstraintIfExists && !supportsRenameConstraintIfExists(ctx)) { @@ -336,27 +366,32 @@ implements ctx.visit(domain).sql(' '); if (addConstraint != null) { - ctx.visit(K_ADD).sql(' ').visit(addConstraint); + if (ctx.family() == FIREBIRD) + ctx.visit(K_ADD).sql(' ').visit(check(((ConstraintImpl) addConstraint).$check())); + else + ctx.visit(K_ADD).sql(' ').visit(addConstraint); } else if (dropConstraint != null) { - ctx.visit(K_DROP_CONSTRAINT).sql(' '); + ctx.visit(K_DROP_CONSTRAINT); - if (dropConstraintIfExists) - ctx.visit(K_IF_EXISTS).sql(' '); + if (dropConstraintIfExists && supportsDropConstraintIfExists(ctx)) + ctx.sql(' ').visit(K_IF_EXISTS); - ctx.data(DATA_CONSTRAINT_REFERENCE, true); - ctx.visit(dropConstraint); - ctx.data(DATA_CONSTRAINT_REFERENCE, previous); + if (ctx.family() != FIREBIRD) { + ctx.data(DATA_CONSTRAINT_REFERENCE, true); + ctx.sql(' ').visit(dropConstraint); + ctx.data(DATA_CONSTRAINT_REFERENCE, previous); - if (cascade != null) - if (cascade) - ctx.sql(' ').visit(K_CASCADE); - else - ctx.sql(' ').visit(K_RESTRICT); + if (cascade != null) + if (cascade) + ctx.sql(' ').visit(K_CASCADE); + else + ctx.sql(' ').visit(K_RESTRICT); + } } else if (renameTo != null) { ctx.data(DATA_CONSTRAINT_REFERENCE, true); - ctx.visit(K_RENAME_TO).sql(' ').visit(renameTo); + ctx.visit(ctx.family() == FIREBIRD ? K_TO : K_RENAME_TO).sql(' ').visit(renameTo); ctx.data(DATA_CONSTRAINT_REFERENCE, previous); } else if (renameConstraint != null) { diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterSchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterSchemaImpl.java index 235488bf50..cff3f70bd1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterSchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterSchemaImpl.java @@ -100,7 +100,7 @@ implements @Override public final AlterSchemaImpl renameTo(String renameTo) { - return renameTo(DSL.schema(renameTo)); + return renameTo(DSL.schema(DSL.name(renameTo))); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java index 0bdc218ddf..f4a13a3c54 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java @@ -37,14 +37,38 @@ */ package org.jooq.impl; -import static org.jooq.impl.Keywords.*; -import static org.jooq.impl.Tools.BooleanDataKey.*; -import static org.jooq.SQLDialect.*; +// ... +import static org.jooq.SQLDialect.FIREBIRD; +import static org.jooq.SQLDialect.POSTGRES; +// ... +import static org.jooq.impl.DSL.and; +import static org.jooq.impl.DSL.check; +import static org.jooq.impl.Keywords.K_AS; +import static org.jooq.impl.Keywords.K_CREATE; +import static org.jooq.impl.Keywords.K_DEFAULT; +import static org.jooq.impl.Keywords.K_DOMAIN; +import static org.jooq.impl.Keywords.K_FROM; +import static org.jooq.impl.Keywords.K_IF_NOT_EXISTS; +import static org.jooq.impl.Keywords.K_TYPE; -import org.jooq.*; -import org.jooq.impl.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Set; -import java.util.*; +import org.jooq.Condition; +import org.jooq.Configuration; +import org.jooq.Constraint; +import org.jooq.Context; +import org.jooq.CreateDomainAsStep; +import org.jooq.CreateDomainConstraintStep; +import org.jooq.CreateDomainDefaultStep; +import org.jooq.CreateDomainFinalStep; +import org.jooq.DataType; +import org.jooq.Domain; +import org.jooq.Field; +import org.jooq.SQLDialect; /** * The CREATE DOMAIN IF NOT EXISTS statement. @@ -67,7 +91,7 @@ implements private DataType dataType; private Field default_; private Collection constraints; - + CreateDomainImpl( Configuration configuration, Domain domain, @@ -109,7 +133,7 @@ implements // ------------------------------------------------------------------------- // XXX: DSL API // ------------------------------------------------------------------------- - + @Override public final CreateDomainImpl as(Class dataType) { return as(DefaultDataType.getDataType(null, dataType)); @@ -149,7 +173,7 @@ implements - private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(POSTGRES); + private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supportedBy(FIREBIRD, POSTGRES); private final boolean supportsIfNotExists(Context ctx) { return !NO_SUPPORT_IF_NOT_EXISTS.contains(ctx.family()); @@ -187,9 +211,20 @@ implements if (default_ != null) ctx.formatSeparator().visit(K_DEFAULT).sql(' ').visit(default_); - if (constraints != null) - for (Constraint constraint : constraints) - ctx.formatSeparator().visit(constraint); + if (constraints != null) { + if (ctx.family() == FIREBIRD) { + List conditions = new ArrayList<>(); + + for (Constraint constraint : constraints) + conditions.add(((ConstraintImpl) constraint).$check()); + + ctx.formatSeparator().visit(check(and(conditions))); + } + else { + for (Constraint constraint : constraints) + ctx.formatSeparator().visit(constraint); + } + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 80a2fe06f6..f378c7d6f4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -6882,7 +6882,7 @@ public class DSL { * * @see DSLContext#createDomain(String) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.CreateDomainAsStep createDomain(String domain) { return dsl().createDomain(domain); } @@ -6892,7 +6892,7 @@ public class DSL { * * @see DSLContext#createDomain(Name) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.CreateDomainAsStep createDomain(Name domain) { return dsl().createDomain(domain); } @@ -6902,7 +6902,7 @@ public class DSL { * * @see DSLContext#createDomain(Domain) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.CreateDomainAsStep createDomain(Domain domain) { return dsl().createDomain(domain); } @@ -6912,7 +6912,7 @@ public class DSL { * * @see DSLContext#createDomainIfNotExists(String) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.CreateDomainAsStep createDomainIfNotExists(String domain) { return dsl().createDomainIfNotExists(domain); } @@ -6922,7 +6922,7 @@ public class DSL { * * @see DSLContext#createDomainIfNotExists(Name) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.CreateDomainAsStep createDomainIfNotExists(Name domain) { return dsl().createDomainIfNotExists(domain); } @@ -6932,7 +6932,7 @@ public class DSL { * * @see DSLContext#createDomainIfNotExists(Domain) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.CreateDomainAsStep createDomainIfNotExists(Domain domain) { return dsl().createDomainIfNotExists(domain); } @@ -7122,7 +7122,7 @@ public class DSL { * * @see DSLContext#alterDomain(String) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) public static org.jooq.AlterDomainStep alterDomain(String domain) { return dsl().alterDomain(domain); } @@ -7132,7 +7132,7 @@ public class DSL { * * @see DSLContext#alterDomain(Name) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) public static org.jooq.AlterDomainStep alterDomain(Name domain) { return dsl().alterDomain(domain); } @@ -7142,7 +7142,7 @@ public class DSL { * * @see DSLContext#alterDomain(Domain) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) public static org.jooq.AlterDomainStep alterDomain(Domain domain) { return dsl().alterDomain(domain); } @@ -7152,7 +7152,7 @@ public class DSL { * * @see DSLContext#alterDomainIfExists(String) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) public static org.jooq.AlterDomainStep alterDomainIfExists(String domain) { return dsl().alterDomainIfExists(domain); } @@ -7162,7 +7162,7 @@ public class DSL { * * @see DSLContext#alterDomainIfExists(Name) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) public static org.jooq.AlterDomainStep alterDomainIfExists(Name domain) { return dsl().alterDomainIfExists(domain); } @@ -7172,7 +7172,7 @@ public class DSL { * * @see DSLContext#alterDomainIfExists(Domain) */ - @Support({ POSTGRES }) + @Support({ FIREBIRD, POSTGRES }) public static org.jooq.AlterDomainStep alterDomainIfExists(Domain domain) { return dsl().alterDomainIfExists(domain); } @@ -7302,7 +7302,7 @@ public class DSL { * * @see DSLContext#dropDomain(String) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.DropDomainCascadeStep dropDomain(String domain) { return dsl().dropDomain(domain); } @@ -7312,7 +7312,7 @@ public class DSL { * * @see DSLContext#dropDomain(Name) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.DropDomainCascadeStep dropDomain(Name domain) { return dsl().dropDomain(domain); } @@ -7322,7 +7322,7 @@ public class DSL { * * @see DSLContext#dropDomain(Domain) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.DropDomainCascadeStep dropDomain(Domain domain) { return dsl().dropDomain(domain); } @@ -7332,7 +7332,7 @@ public class DSL { * * @see DSLContext#dropDomainIfExists(String) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.DropDomainCascadeStep dropDomainIfExists(String domain) { return dsl().dropDomainIfExists(domain); } @@ -7342,7 +7342,7 @@ public class DSL { * * @see DSLContext#dropDomainIfExists(Name) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.DropDomainCascadeStep dropDomainIfExists(Name domain) { return dsl().dropDomainIfExists(domain); } @@ -7352,7 +7352,7 @@ public class DSL { * * @see DSLContext#dropDomainIfExists(Domain) */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static org.jooq.DropDomainCascadeStep dropDomainIfExists(Domain domain) { return dsl().dropDomainIfExists(domain); } @@ -11931,7 +11931,7 @@ public class DSL { * Create the VALUE pseudo field for usage with * DOMAIN specifications. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static Field value(Class type) { return value(DefaultDataType.getDataType(null, type)); } @@ -11940,7 +11940,7 @@ public class DSL { * Create the VALUE pseudo field for usage with * DOMAIN specifications. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static Field value(DataType type) { return field("{0}", type, N_VALUE); } @@ -11948,7 +11948,7 @@ public class DSL { /** * Create a DOMAIN reference. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static Domain domain(String name) { return domain(name(name)); } @@ -11956,7 +11956,7 @@ public class DSL { /** * Create a DOMAIN reference. */ - @Support({ H2, POSTGRES }) + @Support({ FIREBIRD, H2, POSTGRES }) public static Domain domain(Name name) { return new DomainImpl<>(null, name, new DefaultDataType<>(null, Object.class, name)); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java index 20072344d7..5f71bafad8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java @@ -2916,7 +2916,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.CreateDatabaseFinalStep createDatabase(String database) { - return new CreateDatabaseImpl(configuration(), DSL.catalog(database), false); + return new CreateDatabaseImpl(configuration(), DSL.catalog(DSL.name(database)), false); } @Override @@ -2931,7 +2931,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.CreateDatabaseFinalStep createDatabaseIfNotExists(String database) { - return new CreateDatabaseImpl(configuration(), DSL.catalog(database), true); + return new CreateDatabaseImpl(configuration(), DSL.catalog(DSL.name(database)), true); } @Override @@ -2946,7 +2946,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.CreateDomainAsStep createDomain(String domain) { - return new CreateDomainImpl<>(configuration(), DSL.domain(domain), false); + return new CreateDomainImpl<>(configuration(), DSL.domain(DSL.name(domain)), false); } @Override @@ -2961,7 +2961,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.CreateDomainAsStep createDomainIfNotExists(String domain) { - return new CreateDomainImpl<>(configuration(), DSL.domain(domain), true); + return new CreateDomainImpl<>(configuration(), DSL.domain(DSL.name(domain)), true); } @Override @@ -2976,7 +2976,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.CreateSchemaFinalStep createSchema(String schema) { - return new CreateSchemaImpl(configuration(), DSL.schema(schema), false); + return new CreateSchemaImpl(configuration(), DSL.schema(DSL.name(schema)), false); } @Override @@ -2991,7 +2991,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.CreateSchemaFinalStep createSchemaIfNotExists(String schema) { - return new CreateSchemaImpl(configuration(), DSL.schema(schema), true); + return new CreateSchemaImpl(configuration(), DSL.schema(DSL.name(schema)), true); } @Override @@ -3006,7 +3006,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.CreateSequenceFlagsStep createSequence(String sequence) { - return new CreateSequenceImpl(configuration(), DSL.sequence(sequence), false); + return new CreateSequenceImpl(configuration(), DSL.sequence(DSL.name(sequence)), false); } @Override @@ -3021,7 +3021,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.CreateSequenceFlagsStep createSequenceIfNotExists(String sequence) { - return new CreateSequenceImpl(configuration(), DSL.sequence(sequence), true); + return new CreateSequenceImpl(configuration(), DSL.sequence(DSL.name(sequence)), true); } @Override @@ -3036,7 +3036,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.AlterDatabaseStep alterDatabase(String database) { - return new AlterDatabaseImpl(configuration(), DSL.catalog(database), false); + return new AlterDatabaseImpl(configuration(), DSL.catalog(DSL.name(database)), false); } @Override @@ -3051,7 +3051,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.AlterDatabaseStep alterDatabaseIfExists(String database) { - return new AlterDatabaseImpl(configuration(), DSL.catalog(database), true); + return new AlterDatabaseImpl(configuration(), DSL.catalog(DSL.name(database)), true); } @Override @@ -3066,7 +3066,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.AlterDomainStep alterDomain(String domain) { - return new AlterDomainImpl<>(configuration(), DSL.domain(domain), false); + return new AlterDomainImpl<>(configuration(), DSL.domain(DSL.name(domain)), false); } @Override @@ -3081,7 +3081,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.AlterDomainStep alterDomainIfExists(String domain) { - return new AlterDomainImpl<>(configuration(), DSL.domain(domain), true); + return new AlterDomainImpl<>(configuration(), DSL.domain(DSL.name(domain)), true); } @Override @@ -3096,7 +3096,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.AlterSchemaStep alterSchema(String schema) { - return new AlterSchemaImpl(configuration(), DSL.schema(schema), false); + return new AlterSchemaImpl(configuration(), DSL.schema(DSL.name(schema)), false); } @Override @@ -3111,7 +3111,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.AlterSchemaStep alterSchemaIfExists(String schema) { - return new AlterSchemaImpl(configuration(), DSL.schema(schema), true); + return new AlterSchemaImpl(configuration(), DSL.schema(DSL.name(schema)), true); } @Override @@ -3126,7 +3126,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.DropDatabaseFinalStep dropDatabase(String database) { - return new DropDatabaseImpl(configuration(), DSL.catalog(database), false); + return new DropDatabaseImpl(configuration(), DSL.catalog(DSL.name(database)), false); } @Override @@ -3141,7 +3141,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.DropDatabaseFinalStep dropDatabaseIfExists(String database) { - return new DropDatabaseImpl(configuration(), DSL.catalog(database), true); + return new DropDatabaseImpl(configuration(), DSL.catalog(DSL.name(database)), true); } @Override @@ -3156,7 +3156,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.DropDomainCascadeStep dropDomain(String domain) { - return new DropDomainImpl(configuration(), DSL.domain(domain), false); + return new DropDomainImpl(configuration(), DSL.domain(DSL.name(domain)), false); } @Override @@ -3171,7 +3171,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.DropDomainCascadeStep dropDomainIfExists(String domain) { - return new DropDomainImpl(configuration(), DSL.domain(domain), true); + return new DropDomainImpl(configuration(), DSL.domain(DSL.name(domain)), true); } @Override @@ -3186,7 +3186,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.DropSchemaStep dropSchema(String schema) { - return new DropSchemaImpl(configuration(), DSL.schema(schema), false); + return new DropSchemaImpl(configuration(), DSL.schema(DSL.name(schema)), false); } @Override @@ -3201,7 +3201,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.DropSchemaStep dropSchemaIfExists(String schema) { - return new DropSchemaImpl(configuration(), DSL.schema(schema), true); + return new DropSchemaImpl(configuration(), DSL.schema(DSL.name(schema)), true); } @Override @@ -3216,7 +3216,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.DropSequenceFinalStep dropSequence(String sequence) { - return new DropSequenceImpl(configuration(), DSL.sequence(sequence), false); + return new DropSequenceImpl(configuration(), DSL.sequence(DSL.name(sequence)), false); } @Override @@ -3231,7 +3231,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Override public org.jooq.DropSequenceFinalStep dropSequenceIfExists(String sequence) { - return new DropSequenceImpl(configuration(), DSL.sequence(sequence), true); + return new DropSequenceImpl(configuration(), DSL.sequence(DSL.name(sequence)), true); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java index fba82d1a07..f65d1cf3f7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java @@ -37,14 +37,22 @@ */ package org.jooq.impl; -import static org.jooq.impl.Keywords.*; -import static org.jooq.impl.Tools.BooleanDataKey.*; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.FIREBIRD; +import static org.jooq.impl.Keywords.K_CASCADE; +import static org.jooq.impl.Keywords.K_DOMAIN; +import static org.jooq.impl.Keywords.K_DROP; +import static org.jooq.impl.Keywords.K_IF_EXISTS; +import static org.jooq.impl.Keywords.K_RESTRICT; +import static org.jooq.impl.Keywords.K_TYPE; -import org.jooq.*; -import org.jooq.impl.*; +import java.util.Set; -import java.util.*; +import org.jooq.Configuration; +import org.jooq.Context; +import org.jooq.Domain; +import org.jooq.DropDomainCascadeStep; +import org.jooq.DropDomainFinalStep; +import org.jooq.SQLDialect; /** * The DROP DOMAIN IF EXISTS statement. @@ -63,7 +71,7 @@ implements private final Domain domain; private final boolean dropDomainIfExists; private Boolean cascade; - + DropDomainImpl( Configuration configuration, Domain domain, @@ -97,7 +105,7 @@ implements // ------------------------------------------------------------------------- // XXX: DSL API // ------------------------------------------------------------------------- - + @Override public final DropDomainImpl cascade() { this.cascade = true; @@ -116,8 +124,24 @@ implements + private static final Set NO_SUPPORT_IF_EXISTS = SQLDialect.supportedBy(FIREBIRD); + + private final boolean supportsIfExists(Context ctx) { + return !NO_SUPPORT_IF_EXISTS.contains(ctx.family()); + } + @Override public final void accept(Context ctx) { + if (dropDomainIfExists && !supportsIfExists(ctx)) { + Tools.beginTryCatch(ctx, DDLStatementType.DROP_DOMAIN); + accept0(ctx); + Tools.endTryCatch(ctx, DDLStatementType.DROP_DOMAIN); + } + else + accept0(ctx); + } + + private final void accept0(Context ctx) { switch (ctx.family()) { @@ -130,7 +154,7 @@ implements break; } - if (dropDomainIfExists) + if (dropDomainIfExists && supportsIfExists(ctx)) ctx.sql(' ').visit(K_IF_EXISTS); ctx.sql(' ').visit(domain);