Skip to content

Commit a3c95d4

Browse files
committed
fixes #929
1 parent 0bae629 commit a3c95d4

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ Also I would like to know about needed examples or documentation stuff.
6868

6969
* allow **ON** as a value in a set statement (`SET myvalue = ON`)
7070
* support for **ALTER TABLE ONLY mytable ... **
71+
* allow foreign key definition in alter statements without referenced columns specification
7172

7273
## Extensions of JSqlParser releases
7374

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4224,8 +4224,8 @@ AlterExpression AlterExpression():
42244224
[<K_USING> sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }])
42254225
|
42264226
//following two choices regarding foreign keys should be merged
4227-
( <K_FOREIGN> <K_KEY> columnNames=ColumnsNamesList() { alterExp.setFkColumns(columnNames); }
4228-
<K_REFERENCES> tk=<S_IDENTIFIER> columnNames=ColumnsNamesList()
4227+
( <K_FOREIGN> <K_KEY> columnNames=ColumnsNamesList() { alterExp.setFkColumns(columnNames); columnNames = null; }
4228+
<K_REFERENCES> tk=<S_IDENTIFIER> [ columnNames=ColumnsNamesList() ]
42294229
{ alterExp.setFkSourceTable(tk.image); alterExp.setFkSourceColumns(columnNames); }
42304230
[<K_ON> <K_DELETE>
42314231
(<K_CASCADE> { alterExp.setOnDeleteCascade(true); }
@@ -4243,8 +4243,9 @@ AlterExpression AlterExpression():
42434243
fkIndex.setName(sk3);
42444244
fkIndex.setType(tk.image + " " + tk2.image);
42454245
fkIndex.setColumnsNames(columnNames);
4246+
columnNames = null;
42464247
}
4247-
<K_REFERENCES> fkTable=Table() columnNames=ColumnsNamesList()
4248+
<K_REFERENCES> fkTable=Table() [ columnNames=ColumnsNamesList() ]
42484249
{
42494250
fkIndex.setTable(fkTable);
42504251
fkIndex.setReferencedColumnNames(columnNames);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,4 +393,9 @@ public void testIssue633_2() throws JSQLParserException {
393393
public void testAlterOnlyIssue928() throws JSQLParserException {
394394
assertSqlCanBeParsedAndDeparsed("ALTER TABLE ONLY categories ADD CONSTRAINT pk_categories PRIMARY KEY (category_id)");
395395
}
396+
397+
@Test
398+
public void testAlterConstraintWithoutFKSourceColumnsIssue929() throws JSQLParserException {
399+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id) REFERENCES customers");
400+
}
396401
}

0 commit comments

Comments
 (0)