Skip to content

Commit 0a88503

Browse files
committed
Add support CREATE SEQUENCE AS data type
1 parent 59dfc3b commit 0a88503

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class Sequence extends ASTNodeAccessImpl implements MultiPartName {
2929
private List<String> partItems = new ArrayList<>();
3030

3131
private List<Parameter> parameters;
32+
private String dataType;
3233

3334
public Sequence() {}
3435

@@ -45,6 +46,19 @@ public void setParameters(List<Parameter> parameters) {
4546
this.parameters = parameters;
4647
}
4748

49+
public String getDataType() {
50+
return dataType;
51+
}
52+
53+
public void setDataType(String dataType) {
54+
this.dataType = dataType;
55+
}
56+
57+
public Sequence withDataType(String dataType) {
58+
this.setDataType(dataType);
59+
return this;
60+
}
61+
4862
public Database getDatabase() {
4963
return new Database(getIndex(DATABASE_IDX));
5064
}
@@ -129,6 +143,9 @@ public String getUnquotedName() {
129143
@Override
130144
public String toString() {
131145
StringBuilder sql = new StringBuilder(getFullyQualifiedName());
146+
if (dataType != null) {
147+
sql.append(" AS ").append(dataType);
148+
}
132149
if (parameters != null) {
133150
for (Sequence.Parameter parameter : parameters) {
134151
sql.append(" ").append(parameter.formatParameter());

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11500,9 +11500,11 @@ CreateSequence CreateSequence():
1150011500
CreateSequence createSequence = new CreateSequence();
1150111501
Sequence sequence;
1150211502
List<Sequence.Parameter> sequenceParameters;
11503+
Token dataType = null;
1150311504
}
1150411505
{
1150511506
<K_SEQUENCE> sequence=Sequence() { createSequence.setSequence(sequence); }
11507+
[ <K_AS> ( dataType=<S_IDENTIFIER> | dataType=<DATA_TYPE> ) { sequence.setDataType(dataType.image); } ]
1150611508
sequenceParameters = SequenceParameters()
1150711509
{
1150811510
sequence.setParameters(sequenceParameters);

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,4 +143,19 @@ public void testCreateSequence_preservesParamOrder() throws JSQLParserException
143143
statement);
144144
}
145145

146+
@Test
147+
public void testCreateSequence_withAsDataType() throws JSQLParserException {
148+
String statement = "CREATE SEQUENCE public.activites_activite_id_seq AS integer START WITH 1 INCREMENT BY 1 NOMINVALUE NOMAXVALUE CACHE 1";
149+
assertSqlCanBeParsedAndDeparsed(statement);
150+
}
151+
152+
@Test
153+
public void testCreateSequence_withAsDataTypeSimple() throws JSQLParserException {
154+
String statement = "CREATE SEQUENCE my_seq AS integer";
155+
assertSqlCanBeParsedAndDeparsed(statement);
156+
assertDeparse(new CreateSequence().withSequence(
157+
new Sequence().withName("my_seq").withDataType("integer")),
158+
statement);
159+
}
160+
146161
}

0 commit comments

Comments
 (0)