diff --git a/jOOQ/src/main/java/org/jooq/AlterSequenceStep.java b/jOOQ/src/main/java/org/jooq/AlterSequenceStep.java new file mode 100644 index 0000000000..dda22644fb --- /dev/null +++ b/jOOQ/src/main/java/org/jooq/AlterSequenceStep.java @@ -0,0 +1,97 @@ +/** + * Copyright (c) 2009-2016, Data Geekery GmbH (http://www.datageekery.com) + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Other licenses: + * ----------------------------------------------------------------------------- + * Commercial licenses for this work are available. These replace the above + * ASL 2.0 and offer limited warranties, support, maintenance, and commercial + * database integrations. + * + * For more information, please visit: http://www.jooq.org/licenses + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ +package org.jooq; + +import static org.jooq.SQLDialect.CUBRID; +// ... +import static org.jooq.SQLDialect.FIREBIRD; +import static org.jooq.SQLDialect.H2; +// ... +import static org.jooq.SQLDialect.HSQLDB; +// ... +// ... +import static org.jooq.SQLDialect.POSTGRES; +// ... +// ... + +/** + * A {@link Query} that can alter sequences. + * + * @author Lukas Eder + */ +public interface AlterSequenceStep extends AlterSequenceRestartStep { + + /** + * Restart the sequence at its initial value. + */ + @Override + @Support({ HSQLDB, POSTGRES }) + AlterSequenceFinalStep restart(); + + /** + * Restart the sequence at a given value. + */ + @Override + @Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES }) + AlterSequenceFinalStep restartWith(T value); + + /** + * Add a RENAME TO clause to the ALTER SEQUENCE + * statement. + */ + @Support({ POSTGRES }) + AlterSequenceFinalStep renameTo(Sequence newName); + + /** + * Add a RENAME TO clause to the ALTER SEQUENCE + * statement. + */ + @Support({ POSTGRES }) + AlterSequenceFinalStep renameTo(Name newName); + + /** + * Add a RENAME TO clause to the ALTER SEQUENCE + * statement. + */ + @Support({ POSTGRES }) + AlterSequenceFinalStep renameTo(String newName); + +} diff --git a/jOOQ/src/main/java/org/jooq/Clause.java b/jOOQ/src/main/java/org/jooq/Clause.java index 6abeb4a0ee..ba7a8c0903 100644 --- a/jOOQ/src/main/java/org/jooq/Clause.java +++ b/jOOQ/src/main/java/org/jooq/Clause.java @@ -944,6 +944,17 @@ public enum Clause { */ ALTER_SEQUENCE_RESTART, + /** + * A RENAME clause within an {@link #ALTER_SEQUENCE} statement. + *

+ * This clause surrounds + *

+ */ + ALTER_SEQUENCE_RENAME, + /** * A complete ALTER TABLE statement. */ diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index dff9fa913c..a2789dea6c 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -7191,7 +7191,7 @@ public interface DSLContext extends Scope , AutoCloseable { * @see DSL#alterSequence(String) */ @Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES }) - AlterSequenceRestartStep alterSequence(String sequence); + AlterSequenceStep alterSequence(String sequence); /** * Create a new DSL ALTER SEQUENCE statement. @@ -7199,7 +7199,7 @@ public interface DSLContext extends Scope , AutoCloseable { * @see DSL#alterSequence(Name) */ @Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES }) - AlterSequenceRestartStep alterSequence(Name sequence); + AlterSequenceStep alterSequence(Name sequence); /** * Create a new DSL ALTER SEQUENCE statement. @@ -7207,7 +7207,7 @@ public interface DSLContext extends Scope , AutoCloseable { * @see DSL#alterSequence(Sequence) */ @Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES }) - AlterSequenceRestartStep alterSequence(Sequence sequence); + AlterSequenceStep alterSequence(Sequence sequence); /** * Create a new DSL ALTER TABLE statement. diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java index 44ae11052c..cebcc6213e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java @@ -42,6 +42,7 @@ package org.jooq.impl; import static java.util.Arrays.asList; import static org.jooq.Clause.ALTER_SEQUENCE; +import static org.jooq.Clause.ALTER_SEQUENCE_RENAME; import static org.jooq.Clause.ALTER_SEQUENCE_RESTART; import static org.jooq.Clause.ALTER_SEQUENCE_SEQUENCE; import static org.jooq.SQLDialect.CUBRID; @@ -49,10 +50,11 @@ import static org.jooq.SQLDialect.CUBRID; // ... import org.jooq.AlterSequenceFinalStep; -import org.jooq.AlterSequenceRestartStep; +import org.jooq.AlterSequenceStep; import org.jooq.Clause; import org.jooq.Configuration; import org.jooq.Context; +import org.jooq.Name; import org.jooq.Sequence; /** @@ -61,7 +63,7 @@ import org.jooq.Sequence; final class AlterSequenceImpl extends AbstractQuery implements // Cascading interface implementations for AlterSequence behaviour - AlterSequenceRestartStep, + AlterSequenceStep, AlterSequenceFinalStep { /** @@ -72,6 +74,7 @@ final class AlterSequenceImpl extends AbstractQuery implements private final Sequence sequence; private T restartWith; + private Sequence renameTo; AlterSequenceImpl(Configuration configuration, Sequence sequence) { super(configuration); @@ -94,6 +97,22 @@ final class AlterSequenceImpl extends AbstractQuery implements return this; } + @Override + public final AlterSequenceFinalStep renameTo(Sequence newName) { + renameTo = newName; + return this; + } + + @Override + public final AlterSequenceFinalStep renameTo(Name newName) { + return renameTo(DSL.sequence(newName)); + } + + @Override + public final AlterSequenceFinalStep renameTo(String newName) { + return renameTo(DSL.name(newName)); + } + // ------------------------------------------------------------------------ // XXX: QueryPart API // ------------------------------------------------------------------------ @@ -125,29 +144,43 @@ final class AlterSequenceImpl extends AbstractQuery implements } } - ctx.end(ALTER_SEQUENCE_SEQUENCE) - .start(ALTER_SEQUENCE_RESTART); + ctx.end(ALTER_SEQUENCE_SEQUENCE); - T with = restartWith; - if (with == null) { + if (renameTo != null) { + boolean qualify = ctx.qualify(); - - - - - - ctx.sql(' ').keyword("restart"); + ctx.start(ALTER_SEQUENCE_RENAME) + .sql(' ').keyword("rename to") + .sql(' ') + .qualify(false) + .visit(renameTo) + .qualify(qualify) + .end(ALTER_SEQUENCE_RENAME); } else { - if (ctx.family() == CUBRID) - ctx.sql(' ').keyword("start with") - .sql(' ').sql(with.toString()); - else - ctx.sql(' ').keyword("restart with") - .sql(' ').sql(with.toString()); - } + ctx.start(ALTER_SEQUENCE_RESTART); - ctx.end(ALTER_SEQUENCE_RESTART); + T with = restartWith; + if (with == null) { + + + + + + + ctx.sql(' ').keyword("restart"); + } + else { + if (ctx.family() == CUBRID) + ctx.sql(' ').keyword("start with") + .sql(' ').sql(with.toString()); + else + ctx.sql(' ').keyword("restart with") + .sql(' ').sql(with.toString()); + } + + ctx.end(ALTER_SEQUENCE_RESTART); + } } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index ac0e21d75a..b7859b407d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -99,7 +99,7 @@ import javax.annotation.Generated; import javax.sql.DataSource; import org.jooq.AggregateFunction; -import org.jooq.AlterSequenceRestartStep; +import org.jooq.AlterSequenceStep; import org.jooq.AlterTableStep; import org.jooq.ArrayAggOrderByStep; // ... @@ -5121,7 +5121,7 @@ public class DSL { * @see DSLContext#alterSequence(String) */ @Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES }) - public static AlterSequenceRestartStep alterSequence(String sequence) { + public static AlterSequenceStep alterSequence(String sequence) { return using(new DefaultConfiguration()).alterSequence(sequence); } @@ -5131,7 +5131,7 @@ public class DSL { * @see DSLContext#alterSequence(Name) */ @Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES }) - public static AlterSequenceRestartStep alterSequence(Name sequence) { + public static AlterSequenceStep alterSequence(Name sequence) { return using(new DefaultConfiguration()).alterSequence(sequence); } @@ -5141,7 +5141,7 @@ public class DSL { * @see DSLContext#alterSequence(Sequence) */ @Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES }) - public static AlterSequenceRestartStep alterSequence(Sequence sequence) { + public static AlterSequenceStep alterSequence(Sequence sequence) { return using(new DefaultConfiguration()).alterSequence(sequence); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java index b7de700cdb..a1d779a62d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java @@ -79,7 +79,7 @@ import java.util.stream.Stream; import javax.annotation.Generated; import javax.sql.DataSource; -import org.jooq.AlterSequenceRestartStep; +import org.jooq.AlterSequenceStep; import org.jooq.AlterTableStep; import org.jooq.Attachable; import org.jooq.Batch; @@ -2510,17 +2510,17 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri } @Override - public AlterSequenceRestartStep alterSequence(String sequence) { + public AlterSequenceStep alterSequence(String sequence) { return alterSequence(name(sequence)); } @Override - public AlterSequenceRestartStep alterSequence(Name sequence) { + public AlterSequenceStep alterSequence(Name sequence) { return alterSequence(sequence(sequence)); } @Override - public AlterSequenceRestartStep alterSequence(Sequence sequence) { + public AlterSequenceStep alterSequence(Sequence sequence) { return new AlterSequenceImpl(configuration(), sequence); }