[#3189] Add DSL.sequenceByName(String...)
This commit is contained in:
parent
eeb522f16f
commit
c915b67eda
@ -83,6 +83,7 @@ import org.jooq.UpdatableRecord;
|
||||
import org.jooq.UpdateQuery;
|
||||
import org.jooq.conf.Settings;
|
||||
import org.jooq.exception.DetachedException;
|
||||
import org.jooq.impl.DSL;
|
||||
import org.jooq.impl.DefaultConnectionProvider;
|
||||
import org.jooq.impl.DefaultExecuteListener;
|
||||
import org.jooq.test.BaseTest;
|
||||
@ -131,6 +132,19 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, UU, I, IPK, T7
|
||||
|
||||
@Test
|
||||
public void testSequences() throws Exception {
|
||||
testSequences0(SAuthorID());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSequenceByName() throws Exception {
|
||||
Sequence<? extends Number> sequence = SAuthorID();
|
||||
|
||||
if (sequence != null) {
|
||||
testSequences0(DSL.sequenceByName(sequence.getSchema().getName(), sequence.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
private void testSequences0(Sequence<? extends Number> sequence) {
|
||||
if (cSequences() == null) {
|
||||
log.info("SKIPPING", "sequences test");
|
||||
return;
|
||||
@ -138,7 +152,6 @@ extends BaseTest<A, AP, B, S, B2S, BS, L, X, DATE, BOOL, D, T, U, UU, I, IPK, T7
|
||||
|
||||
jOOQAbstractTest.reset = false;
|
||||
|
||||
Sequence<? extends Number> sequence = SAuthorID();
|
||||
Field<? extends Number> nextval = sequence.nextval();
|
||||
Field<? extends Number> currval = null;
|
||||
|
||||
|
||||
@ -1282,6 +1282,11 @@ public abstract class jOOQAbstractTest<
|
||||
new GeneralTests(this).testSequences();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSequenceByName() throws Exception {
|
||||
new GeneralTests(this).testSequenceByName();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSelectSimpleQuery() throws Exception {
|
||||
new SelectTests(this).testSelectSimpleQuery();
|
||||
|
||||
@ -63,6 +63,7 @@ import static org.jooq.impl.Term.ROW_NUMBER;
|
||||
import static org.jooq.impl.Utils.combine;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.sql.Connection;
|
||||
import java.sql.Date;
|
||||
import java.sql.ResultSetMetaData;
|
||||
@ -4992,6 +4993,95 @@ public class DSL {
|
||||
return new SchemaImpl(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a qualified sequence, given its sequence name.
|
||||
* <p>
|
||||
* This constructs a sequence reference given the sequence's qualified name.
|
||||
* jOOQ will render the sequence name according to your
|
||||
* {@link Settings#getRenderNameStyle()} settings. Choose
|
||||
* {@link RenderNameStyle#QUOTED} to prevent syntax errors and/or SQL
|
||||
* injection.
|
||||
* <p>
|
||||
* Example: <code><pre>
|
||||
* // This sequence...
|
||||
* sequenceByName("MY_SCHEMA", "MY_SEQUENCE");
|
||||
*
|
||||
* // ... will render this SQL on SQL Server with RenderNameStyle.QUOTED set
|
||||
* [MY_SCHEMA].[MY_SEQUENCE]
|
||||
* </pre></code>
|
||||
*
|
||||
* @param qualifiedName The various parts making up your sequence's
|
||||
* reference name.
|
||||
* @return A sequence referenced by <code>sequenceName</code>
|
||||
*/
|
||||
@Support
|
||||
public static Sequence<BigInteger> sequenceByName(String... qualifiedName) {
|
||||
return sequenceByName(BigInteger.class, qualifiedName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a qualified sequence, given its sequence name.
|
||||
* <p>
|
||||
* This constructs a sequence reference given the sequence's qualified name.
|
||||
* jOOQ will render the sequence name according to your
|
||||
* {@link Settings#getRenderNameStyle()} settings. Choose
|
||||
* {@link RenderNameStyle#QUOTED} to prevent syntax errors and/or SQL
|
||||
* injection.
|
||||
* <p>
|
||||
* Example: <code><pre>
|
||||
* // This sequence...
|
||||
* sequenceByName("MY_SCHEMA", "MY_SEQUENCE");
|
||||
*
|
||||
* // ... will render this SQL on SQL Server with RenderNameStyle.QUOTED set
|
||||
* [MY_SCHEMA].[MY_SEQUENCE]
|
||||
* </pre></code>
|
||||
*
|
||||
* @param qualifiedName The various parts making up your sequence's
|
||||
* reference name.
|
||||
* @param type The type of the returned field
|
||||
* @return A sequence referenced by <code>sequenceName</code>
|
||||
*/
|
||||
@Support
|
||||
public static <T extends Number> Sequence<T> sequenceByName(Class<T> type, String... qualifiedName) {
|
||||
return sequenceByName(getDataType(type), qualifiedName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a qualified sequence, given its sequence name.
|
||||
* <p>
|
||||
* This constructs a sequence reference given the sequence's qualified name.
|
||||
* jOOQ will render the sequence name according to your
|
||||
* {@link Settings#getRenderNameStyle()} settings. Choose
|
||||
* {@link RenderNameStyle#QUOTED} to prevent syntax errors and/or SQL
|
||||
* injection.
|
||||
* <p>
|
||||
* Example: <code><pre>
|
||||
* // This sequence...
|
||||
* sequenceByName("MY_SCHEMA", "MY_SEQUENCE");
|
||||
*
|
||||
* // ... will render this SQL on SQL Server with RenderNameStyle.QUOTED set
|
||||
* [MY_SCHEMA].[MY_SEQUENCE]
|
||||
* </pre></code>
|
||||
*
|
||||
* @param qualifiedName The various parts making up your sequence's
|
||||
* reference name.
|
||||
* @param type The type of the returned field
|
||||
* @return A sequence referenced by <code>sequenceName</code>
|
||||
*/
|
||||
@Support
|
||||
public static <T extends Number> Sequence<T> sequenceByName(DataType<T> type, String... qualifiedName) {
|
||||
if (qualifiedName == null)
|
||||
throw new NullPointerException();
|
||||
|
||||
if (qualifiedName.length < 1 || qualifiedName.length > 2)
|
||||
throw new IllegalArgumentException("Must provide a qualified name of length 1 or 2 : " + name(qualifiedName));
|
||||
|
||||
String name = qualifiedName[qualifiedName.length - 1];
|
||||
Schema schema = qualifiedName.length == 2 ? schemaByName(qualifiedName[0]) : null;
|
||||
|
||||
return new SequenceImpl<T>(name, schema, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a qualified table, given its table name.
|
||||
* <p>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user