diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java index 7466d27533..3e88c48d38 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterSequenceImpl.java @@ -140,9 +140,18 @@ final class AlterSequenceImpl extends AbstractRowCountQuery im this.ifExists = ifExists; } - final Sequence $sequence() { return sequence; } - final boolean $ifExists() { return ifExists; } - final Sequence $renameTo() { return renameTo; } + final Sequence $sequence() { return sequence; } + final boolean $ifExists() { return ifExists; } + final Sequence $renameTo() { return renameTo; } + final Field $startWith() { return startWith; } + final Field $incrementBy() { return incrementBy; } + final Field $minvalue() { return minvalue; } + final boolean $noMinvalue() { return noMinvalue; } + final Field $maxvalue() { return maxvalue; } + final boolean $noMaxvalue() { return noMaxvalue; } + final Boolean $cycle() { return cycle; } + final Field $cache() { return cache; } + final boolean $noCache() { return noCache; } // ------------------------------------------------------------------------ // XXX: DSL API diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java index 3cb3d1bb32..8becba1d33 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java @@ -98,18 +98,18 @@ final class CreateSequenceImpl extends AbstractRowCountQuery implements private static final Set OMIT_NO_MINVALUE = SQLDialect.supportedBy(FIREBIRD); private static final Set OMIT_NO_MAXVALUE = SQLDialect.supportedBy(FIREBIRD); - private final Sequence sequence; - private final boolean ifNotExists; - private Field startWith; - private Field incrementBy; - private Field minvalue; - private boolean noMinvalue; - private Field maxvalue; - private boolean noMaxvalue; - private boolean cycle; - private boolean noCycle; - private Field cache; - private boolean noCache; + private final Sequence sequence; + private final boolean ifNotExists; + private Field startWith; + private Field incrementBy; + private Field minvalue; + private boolean noMinvalue; + private Field maxvalue; + private boolean noMaxvalue; + private boolean cycle; + private boolean noCycle; + private Field cache; + private boolean noCache; CreateSequenceImpl(Configuration configuration, Sequence sequence, boolean ifNotExists) { super(configuration); @@ -118,18 +118,18 @@ final class CreateSequenceImpl extends AbstractRowCountQuery implements this.ifNotExists = ifNotExists; } - final Sequence $sequence() { return sequence; } - final boolean $ifNotExists() { return ifNotExists; } - final Field $startWith() { return startWith; } - final Field $incrementBy() { return incrementBy; } - final Field $minvalue() { return minvalue; } - final boolean $noMinvalue() { return noMinvalue; } - final Field $maxvalue() { return maxvalue; } - final boolean $noMaxvalue() { return noMaxvalue; } - final boolean $cycle() { return cycle; } - final boolean $noCycle() { return noCycle; } - final Field $cache() { return cache; } - final boolean $noCache() { return noCache; } + final Sequence $sequence() { return sequence; } + final boolean $ifNotExists() { return ifNotExists; } + final Field $startWith() { return startWith; } + final Field $incrementBy() { return incrementBy; } + final Field $minvalue() { return minvalue; } + final boolean $noMinvalue() { return noMinvalue; } + final Field $maxvalue() { return maxvalue; } + final boolean $noMaxvalue() { return noMaxvalue; } + final boolean $cycle() { return cycle; } + final boolean $noCycle() { return noCycle; } + final Field $cache() { return cache; } + final boolean $noCache() { return noCache; } // ------------------------------------------------------------------------ // XXX: Sequence API diff --git a/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java b/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java index 6ec47d6374..fae01c54de 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java +++ b/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java @@ -724,8 +724,37 @@ final class DDLInterpreter { existing.name = (UnqualifiedName) renameTo.getUnqualifiedName(); } - else - throw unsupportedQuery(query); + else { + Field startWith = query.$startWith(); + if (startWith != null) + existing.startWith = startWith; + + Field incrementBy = query.$incrementBy(); + if (incrementBy != null) + existing.incrementBy = incrementBy; + + Field minvalue = query.$minvalue(); + if (minvalue != null) + existing.minValue = minvalue; + else if (query.$noMinvalue()) + existing.minValue = null; + + Field maxvalue = query.$maxvalue(); + if (maxvalue != null) + existing.maxValue = maxvalue; + else if (query.$noMaxvalue()) + existing.maxValue = null; + + Boolean cycle = query.$cycle(); + if (cycle != null) + existing.cycle = cycle; + + Field cache = query.$cache(); + if (cache != null) + existing.cache = cache; + else if (query.$noCache()) + existing.cache = null; + } } private final void accept0(DropSequenceImpl query) { @@ -1388,13 +1417,13 @@ final class DDLInterpreter { @SuppressWarnings("unused") private static final class MutableSequence extends MutableNamed { - MutableSchema schema; - Field startWith; - Field incrementBy; - Field minValue; - Field maxValue; - boolean cycle; - Field cache; + MutableSchema schema; + Field startWith; + Field incrementBy; + Field minValue; + Field maxValue; + boolean cycle; + Field cache; MutableSequence(UnqualifiedName name, MutableSchema schema) { super(name); @@ -1404,13 +1433,14 @@ final class DDLInterpreter { } private final class InterpretedSequence extends SequenceImpl { - @SuppressWarnings("unchecked") InterpretedSequence(Schema schema) { super(MutableSequence.this.name, schema, BIGINT, false, - (Field) startWith, (Field) incrementBy, (Field) minValue, (Field) maxValue, cycle, (Field) cache); - - // [#7752] TODO: Pass additional flags like START WITH to - // SequenceImpl when this is ready. + startWith != null ? startWith.coerce(Long.class) : null, + incrementBy != null ? incrementBy.coerce(Long.class) : null, + minValue != null ? minValue.coerce(Long.class) : null, + maxValue != null ? maxValue.coerce(Long.class) : null, + cycle, + cache != null ? cache.coerce(Long.class) : null); } } }