Skip to content

Commit f11133c

Browse files
cmoinewumpz
authored andcommitted
#425 ADD CONSTRAINT also support state such as DEFERRABLE, VALIDATE... (#426)
1 parent 0fddc73 commit f11133c

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,6 @@ public String toString() {
205205
b.append("CONSTRAINT ").append(constraintName);
206206
} else if (pkColumns != null) {
207207
b.append("PRIMARY KEY (").append(PlainSelect.getStringList(pkColumns)).append(')');
208-
if (getConstraints() != null && !getConstraints().isEmpty()) {
209-
b.append(' ').append(PlainSelect.getStringList(constraints, false, false));
210-
}
211208
} else if (ukColumns != null) {
212209
b.append("UNIQUE KEY ").append(ukName).append(" (").append(PlainSelect.
213210
getStringList(ukColumns)).append(")");
@@ -225,6 +222,9 @@ public String toString() {
225222
} else if (index != null) {
226223
b.append(index);
227224
}
225+
if (getConstraints() != null && !getConstraints().isEmpty()) {
226+
b.append(' ').append(PlainSelect.getStringList(constraints, false, false));
227+
}
228228

229229
return b.toString();
230230
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3186,6 +3186,7 @@ AlterExpression AlterExpression():
31863186
fkIndex.setReferencedColumnNames(columnNames);
31873187
alterExp.setIndex(fkIndex);
31883188
}
3189+
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
31893190
)
31903191
|
31913192
( tk=<K_PRIMARY> tk2=<K_KEY>
@@ -3197,6 +3198,7 @@ AlterExpression AlterExpression():
31973198
index.setColumnsNames(columnNames);
31983199
alterExp.setIndex(index);
31993200
}
3201+
constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); }
32003202
)
32013203
|
32023204
(

src/test/java/net/sf/jsqlparser/test/alter/AlterTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,14 @@ public void testAlterTableAddConstraint() throws JSQLParserException {
8585
assertSqlCanBeParsedAndDeparsed("ALTER TABLE RESOURCELINKTYPE ADD CONSTRAINT FK_RESOURCELINKTYPE_PARENTTYPE_PRIMARYKEY FOREIGN KEY (PARENTTYPE_PRIMARYKEY) REFERENCES RESOURCETYPE(PRIMARYKEY)");
8686
}
8787

88+
public void testAlterTableAddConstraintWithConstraintState() throws JSQLParserException {
89+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE RESOURCELINKTYPE ADD CONSTRAINT FK_RESOURCELINKTYPE_PARENTTYPE_PRIMARYKEY FOREIGN KEY (PARENTTYPE_PRIMARYKEY) REFERENCES RESOURCETYPE(PRIMARYKEY) DEFERRABLE DISABLE NOVALIDATE");
90+
}
91+
92+
public void testAlterTableAddConstraintWithConstraintState2() throws JSQLParserException {
93+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE RESOURCELINKTYPE ADD CONSTRAINT RESOURCELINKTYPE_PRIMARYKEY PRIMARY KEY (PRIMARYKEY) DEFERRABLE NOVALIDATE");
94+
}
95+
8896
public void testAlterTableForgeignKey2() throws JSQLParserException {
8997
assertSqlCanBeParsedAndDeparsed("ALTER TABLE test ADD FOREIGN KEY (user_id) REFERENCES ra_user (id)");
9098
}

0 commit comments

Comments
 (0)