diff --git a/jOOQ-test/src/test/java/org/jooq/test/BaseTest.java b/jOOQ-test/src/test/java/org/jooq/test/BaseTest.java index 934ec71332..bc8bfc3ece 100644 --- a/jOOQ-test/src/test/java/org/jooq/test/BaseTest.java +++ b/jOOQ-test/src/test/java/org/jooq/test/BaseTest.java @@ -897,7 +897,11 @@ public abstract class BaseTest< @SuppressWarnings("unchecked") protected Sequence SAuthorID() throws IllegalAccessException, NoSuchFieldException { - return (Sequence) cSequences().getField("S_AUTHOR_ID").get(cSequences()); + Class sequences = cSequences(); + + return sequences == null + ? null + : (Sequence) sequences.getField("S_AUTHOR_ID").get(sequences); } protected final Schema schema() { diff --git a/jOOQ-test/src/test/java/org/jooq/test/all/testcases/DDLTests.java b/jOOQ-test/src/test/java/org/jooq/test/all/testcases/DDLTests.java index ebdf043e45..7ba788580d 100644 --- a/jOOQ-test/src/test/java/org/jooq/test/all/testcases/DDLTests.java +++ b/jOOQ-test/src/test/java/org/jooq/test/all/testcases/DDLTests.java @@ -135,27 +135,27 @@ extends BaseTest sequence = SAuthorID(); + assumeNotNull(SAuthorID()); - if (sequence != null) { - testSequences0(DSL.sequenceByName(sequence.getSchema().getName(), sequence.getName())); - } + testSequences0(DSL.sequenceByName(SAuthorID().getSchema().getName(), SAuthorID().getName())); } private void testSequences0(Sequence sequence) { diff --git a/jOOQ-test/src/test/java/org/jooq/test/all/testcases/PredicateTests.java b/jOOQ-test/src/test/java/org/jooq/test/all/testcases/PredicateTests.java index ae4836fc73..7ec34f1512 100644 --- a/jOOQ-test/src/test/java/org/jooq/test/all/testcases/PredicateTests.java +++ b/jOOQ-test/src/test/java/org/jooq/test/all/testcases/PredicateTests.java @@ -46,6 +46,8 @@ import static java.util.Arrays.asList; // ... import static org.jooq.SQLDialect.DERBY; // ... +import static org.jooq.SQLDialect.MARIADB; +import static org.jooq.SQLDialect.MYSQL; import static org.jooq.conf.StatementType.STATIC_STATEMENT; import static org.jooq.impl.DSL.all; import static org.jooq.impl.DSL.any; @@ -527,6 +529,10 @@ extends BaseTest> result = create().select(TBook_ID()) .from(TBook()) diff --git a/jOOQ/src/main/java/org/jooq/AlterTableAlterStep.java b/jOOQ/src/main/java/org/jooq/AlterTableAlterStep.java index f650c798c1..1fc41b78a2 100644 --- a/jOOQ/src/main/java/org/jooq/AlterTableAlterStep.java +++ b/jOOQ/src/main/java/org/jooq/AlterTableAlterStep.java @@ -40,6 +40,22 @@ */ package org.jooq; +// ... +// ... +import static org.jooq.SQLDialect.CUBRID; +// ... +import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.H2; +import static org.jooq.SQLDialect.HSQLDB; +// ... +import static org.jooq.SQLDialect.MARIADB; +import static org.jooq.SQLDialect.MYSQL; +// ... +import static org.jooq.SQLDialect.POSTGRES; +import static org.jooq.SQLDialect.SQLITE; +// ... +// ... + import org.jooq.api.annotation.State; /** @@ -54,15 +70,18 @@ public interface AlterTableAlterStep { /** * Specify a new column DEFAULT. */ + @Support AlterTableFinalStep defaultValue(T literal); /** * Specify a new column DEFAULT. */ + @Support AlterTableFinalStep defaultValue(Field expression); /** * Specify a new column data type. */ + @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) AlterTableFinalStep set(DataType type); } diff --git a/jOOQ/src/main/java/org/jooq/AlterTableDropStep.java b/jOOQ/src/main/java/org/jooq/AlterTableDropStep.java index baafeebf5e..4827d03da7 100644 --- a/jOOQ/src/main/java/org/jooq/AlterTableDropStep.java +++ b/jOOQ/src/main/java/org/jooq/AlterTableDropStep.java @@ -55,11 +55,13 @@ public interface AlterTableDropStep extends AlterTableFinalStep { * Add a CASCADE clause to the * ALTER TABLE .. DROP COLUMN statement. */ + @Support AlterTableFinalStep cascade(); /** * Add a RESTRICT clause to the * ALTER TABLE .. DROP COLUMN statement. */ + @Support AlterTableFinalStep restrict(); } diff --git a/jOOQ/src/main/java/org/jooq/AlterTableStep.java b/jOOQ/src/main/java/org/jooq/AlterTableStep.java index 19b4e2373b..dbfb869c59 100644 --- a/jOOQ/src/main/java/org/jooq/AlterTableStep.java +++ b/jOOQ/src/main/java/org/jooq/AlterTableStep.java @@ -54,35 +54,41 @@ public interface AlterTableStep { * Add an ALTER COLUMN clause to the ALTER TABLE * statement. */ + @Support AlterTableAlterStep alter(Field field); /** * Add an ALTER COLUMN clause to the ALTER TABLE * statement. */ + @Support AlterTableAlterStep alter(String field); /** * Add an ADD COLUMN clause to the ALTER TABLE * statement. */ + @Support AlterTableFinalStep add(Field field, DataType type); /** * Add an ADD COLUMN clause to the ALTER TABLE * statement. */ + @Support AlterTableFinalStep add(String field, DataType type); /** * Add an DROP COLUMN clause to the ALTER TABLE * statement. */ + @Support AlterTableDropStep drop(Field field); /** * Add an DROP COLUMN clause to the ALTER TABLE * statement. */ + @Support AlterTableDropStep drop(String field); } diff --git a/jOOQ/src/main/java/org/jooq/DropTableStep.java b/jOOQ/src/main/java/org/jooq/DropTableStep.java index 839aaf0021..411254f172 100644 --- a/jOOQ/src/main/java/org/jooq/DropTableStep.java +++ b/jOOQ/src/main/java/org/jooq/DropTableStep.java @@ -55,11 +55,13 @@ public interface DropTableStep extends DropTableFinalStep { * Add a CASCADE clause to the DROP TABLE * statement. */ + @Support DropTableFinalStep cascade(); /** * Add a RESTRICT clause to the DROP TABLE * statement. */ + @Support DropTableFinalStep restrict(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java index f2ea6ade62..9a051c4341 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java @@ -40,15 +40,12 @@ */ package org.jooq.impl; -import static java.util.Arrays.asList; import static org.jooq.Clause.ALTER_TABLE; import static org.jooq.Clause.ALTER_TABLE_ADD; import static org.jooq.Clause.ALTER_TABLE_ALTER; import static org.jooq.Clause.ALTER_TABLE_ALTER_DEFAULT; import static org.jooq.Clause.ALTER_TABLE_DROP; import static org.jooq.Clause.ALTER_TABLE_TABLE; -// ... -import static org.jooq.SQLDialect.POSTGRES; import static org.jooq.impl.DSL.field; import static org.jooq.impl.DSL.inline; @@ -190,21 +187,37 @@ class AlterTableImpl extends AbstractQuery implements ctx.end(ALTER_TABLE_ADD); } else if (alter != null) { - ctx.start(ALTER_TABLE_ALTER) - .sql(" ").keyword("alter").sql(" ") + ctx.start(ALTER_TABLE_ALTER); + + switch (family) { + /* [pro] xx + xxxx xxxxxxx + xxxxxxxxx xxxxxxxxxxxxxxxxxxxxx + xxxxxx + xx [/pro] */ + + default: + ctx.sql(" ").keyword("alter"); + break; + } + + ctx.sql(" ") .qualify(false) .visit(alter) .qualify(true); if (alterType != null) { - if (asList(POSTGRES).contains(family)) { - ctx.sql(" ").keyword("type"); + switch (family) { + /* [pro] xx + xxxx xxxx + xxxxxxxxx xxxxxxxxxxxxxxx xxxx xxxxxxx + xxxxxx + xx [/pro] */ + + case POSTGRES: + ctx.sql(" ").keyword("type"); + break; } - /* [pro] xx - xxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x - xxxxxxxxx xxxxxxxxxxxxxxx xxxx xxxxxxx - x - xx [/pro] */ ctx.sql(" ").keyword(alterType.getCastTypeName(ctx.configuration())); @@ -213,16 +226,42 @@ class AlterTableImpl extends AbstractQuery implements } } else if (alterDefault != null) { - ctx.start(ALTER_TABLE_ALTER_DEFAULT) - .sql(" ").keyword("set default").sql(" ").visit(alterDefault) + ctx.start(ALTER_TABLE_ALTER_DEFAULT); + + switch (family) { + /* [pro] xx + xxxx xxxxxxx + xxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx + xxxxxx + xx [/pro] */ + + default: + ctx.sql(" ").keyword("set default"); + break; + } + + ctx.sql(" ").visit(alterDefault) .end(ALTER_TABLE_ALTER_DEFAULT); } ctx.end(ALTER_TABLE_ALTER); } else if (drop != null) { - ctx.start(ALTER_TABLE_DROP) - .sql(" ").keyword("drop").sql(" ") + ctx.start(ALTER_TABLE_DROP); + + switch (family) { + /* [pro] xx + xxxx xxxxxxx + xxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx + xxxxxx + xx [/pro] */ + + default: + ctx.sql(" ").keyword("drop"); + break; + } + + ctx.sql(" ") .qualify(false) .visit(drop) .qualify(true);