Skip to content

Commit d5e7148

Browse files
committed
Support PostgreSQL-specific [CREATE SEQUENCE … INCREMENT n ...]
I.e. no `INCREMENT BY` Fixes #2347
1 parent 1d27f93 commit d5e7148

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

src/main/java/net/sf/jsqlparser/schema/Sequence.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public Sequence addParameters(Collection<? extends Parameter> parameters) {
158158
* The available parameters to a sequence
159159
*/
160160
public enum ParameterType {
161-
INCREMENT_BY, START_WITH, START, RESTART_WITH, MAXVALUE, NOMAXVALUE, MINVALUE, NOMINVALUE, CYCLE, NOCYCLE, CACHE, NOCACHE, ORDER, NOORDER, KEEP, NOKEEP, SESSION, GLOBAL;
161+
INCREMENT_BY, INCREMENT, START_WITH, START, RESTART_WITH, MAXVALUE, NOMAXVALUE, MINVALUE, NOMINVALUE, CYCLE, NOCYCLE, CACHE, NOCACHE, ORDER, NOORDER, KEEP, NOKEEP, SESSION, GLOBAL;
162162

163163
public static ParameterType from(String type) {
164164
return Enum.valueOf(ParameterType.class, type.toUpperCase());
@@ -189,6 +189,8 @@ public String formatParameter() {
189189
switch (option) {
190190
case INCREMENT_BY:
191191
return prefix("INCREMENT BY");
192+
case INCREMENT:
193+
return prefix("INCREMENT");
192194
case START_WITH:
193195
return prefix("START WITH");
194196
case START:

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10209,15 +10209,20 @@ List<Sequence.Parameter> SequenceParameters():
1020910209
List<Sequence.Parameter> sequenceParameters = new ArrayList<Sequence.Parameter>();
1021010210
Sequence.Parameter parameter = null;
1021110211
Token token = null;
10212+
Token byToken = null;
1021210213
Token withToken = null;
1021310214
}
1021410215
{
1021510216
(
1021610217
LOOKAHEAD(2) (
1021710218
(
10218-
<K_INCREMENT> <K_BY> token=<S_LONG>
10219+
<K_INCREMENT> [ byToken=<K_BY> ] token=<S_LONG>
1021910220
{
10220-
parameter = new Sequence.Parameter(Sequence.ParameterType.INCREMENT_BY);
10221+
if (byToken != null) {
10222+
parameter = new Sequence.Parameter(Sequence.ParameterType.INCREMENT_BY);
10223+
} else {
10224+
parameter = new Sequence.Parameter(Sequence.ParameterType.INCREMENT);
10225+
}
1022110226
parameter.setValue(Long.parseLong(token.image));
1022210227
sequenceParameters.add(parameter);
1022310228
}

src/test/java/net/sf/jsqlparser/statement/create/CreateSequenceTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ public void testCreateSequence_withIncrement() throws JSQLParserException {
3939
statement);
4040
}
4141

42+
@Test
43+
public void testCreateSequence_withIncrementPostres() throws JSQLParserException {
44+
assertSqlCanBeParsedAndDeparsed("CREATE SEQUENCE db.schema.my_seq INCREMENT 1");
45+
}
46+
4247
@Test
4348
public void testCreateSequence_withStart() throws JSQLParserException {
4449
assertSqlCanBeParsedAndDeparsed("CREATE SEQUENCE my_seq START WITH 10");

0 commit comments

Comments
 (0)