[#5083] Add support for ALTER SEQUENCE .. RENAME TO ..
This commit is contained in:
parent
a603d745fb
commit
d117a20edc
97
jOOQ/src/main/java/org/jooq/AlterSequenceStep.java
Normal file
97
jOOQ/src/main/java/org/jooq/AlterSequenceStep.java
Normal file
@ -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<T extends Number> extends AlterSequenceRestartStep<T> {
|
||||
|
||||
/**
|
||||
* 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 <code>RENAME TO</code> clause to the <code>ALTER SEQUENCE</code>
|
||||
* statement.
|
||||
*/
|
||||
@Support({ POSTGRES })
|
||||
AlterSequenceFinalStep renameTo(Sequence<?> newName);
|
||||
|
||||
/**
|
||||
* Add a <code>RENAME TO</code> clause to the <code>ALTER SEQUENCE</code>
|
||||
* statement.
|
||||
*/
|
||||
@Support({ POSTGRES })
|
||||
AlterSequenceFinalStep renameTo(Name newName);
|
||||
|
||||
/**
|
||||
* Add a <code>RENAME TO</code> clause to the <code>ALTER SEQUENCE</code>
|
||||
* statement.
|
||||
*/
|
||||
@Support({ POSTGRES })
|
||||
AlterSequenceFinalStep renameTo(String newName);
|
||||
|
||||
}
|
||||
@ -944,6 +944,17 @@ public enum Clause {
|
||||
*/
|
||||
ALTER_SEQUENCE_RESTART,
|
||||
|
||||
/**
|
||||
* A <code>RENAME</code> clause within an {@link #ALTER_SEQUENCE} statement.
|
||||
* <p>
|
||||
* This clause surrounds
|
||||
* <ul>
|
||||
* <li>the <code>RENAME TO</code> keywords</li>
|
||||
* <li>the new sequence name</li>
|
||||
* </ul>
|
||||
*/
|
||||
ALTER_SEQUENCE_RENAME,
|
||||
|
||||
/**
|
||||
* A complete <code>ALTER TABLE</code> statement.
|
||||
*/
|
||||
|
||||
@ -7191,7 +7191,7 @@ public interface DSLContext extends Scope , AutoCloseable {
|
||||
* @see DSL#alterSequence(String)
|
||||
*/
|
||||
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES })
|
||||
AlterSequenceRestartStep<BigInteger> alterSequence(String sequence);
|
||||
AlterSequenceStep<BigInteger> alterSequence(String sequence);
|
||||
|
||||
/**
|
||||
* Create a new DSL <code>ALTER SEQUENCE</code> statement.
|
||||
@ -7199,7 +7199,7 @@ public interface DSLContext extends Scope , AutoCloseable {
|
||||
* @see DSL#alterSequence(Name)
|
||||
*/
|
||||
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES })
|
||||
AlterSequenceRestartStep<BigInteger> alterSequence(Name sequence);
|
||||
AlterSequenceStep<BigInteger> alterSequence(Name sequence);
|
||||
|
||||
/**
|
||||
* Create a new DSL <code>ALTER SEQUENCE</code> statement.
|
||||
@ -7207,7 +7207,7 @@ public interface DSLContext extends Scope , AutoCloseable {
|
||||
* @see DSL#alterSequence(Sequence)
|
||||
*/
|
||||
@Support({ CUBRID, FIREBIRD, H2, HSQLDB, POSTGRES })
|
||||
<T extends Number> AlterSequenceRestartStep<T> alterSequence(Sequence<T> sequence);
|
||||
<T extends Number> AlterSequenceStep<T> alterSequence(Sequence<T> sequence);
|
||||
|
||||
/**
|
||||
* Create a new DSL <code>ALTER TABLE</code> statement.
|
||||
|
||||
@ -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<T extends Number> extends AbstractQuery implements
|
||||
|
||||
// Cascading interface implementations for AlterSequence behaviour
|
||||
AlterSequenceRestartStep<T>,
|
||||
AlterSequenceStep<T>,
|
||||
AlterSequenceFinalStep {
|
||||
|
||||
/**
|
||||
@ -72,6 +74,7 @@ final class AlterSequenceImpl<T extends Number> extends AbstractQuery implements
|
||||
|
||||
private final Sequence<T> sequence;
|
||||
private T restartWith;
|
||||
private Sequence<?> renameTo;
|
||||
|
||||
AlterSequenceImpl(Configuration configuration, Sequence<T> sequence) {
|
||||
super(configuration);
|
||||
@ -94,6 +97,22 @@ final class AlterSequenceImpl<T extends Number> 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<T extends Number> 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
|
||||
|
||||
@ -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<BigInteger> alterSequence(String sequence) {
|
||||
public static AlterSequenceStep<BigInteger> 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<BigInteger> alterSequence(Name sequence) {
|
||||
public static AlterSequenceStep<BigInteger> 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 <T extends Number> AlterSequenceRestartStep<T> alterSequence(Sequence<T> sequence) {
|
||||
public static <T extends Number> AlterSequenceStep<T> alterSequence(Sequence<T> sequence) {
|
||||
return using(new DefaultConfiguration()).alterSequence(sequence);
|
||||
}
|
||||
|
||||
|
||||
@ -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<BigInteger> alterSequence(String sequence) {
|
||||
public AlterSequenceStep<BigInteger> alterSequence(String sequence) {
|
||||
return alterSequence(name(sequence));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AlterSequenceRestartStep<BigInteger> alterSequence(Name sequence) {
|
||||
public AlterSequenceStep<BigInteger> alterSequence(Name sequence) {
|
||||
return alterSequence(sequence(sequence));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Number> AlterSequenceRestartStep<T> alterSequence(Sequence<T> sequence) {
|
||||
public <T extends Number> AlterSequenceStep<T> alterSequence(Sequence<T> sequence) {
|
||||
return new AlterSequenceImpl<T>(configuration(), sequence);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user