Skip to content

Commit

Permalink
fixes #221
Browse files Browse the repository at this point in the history
  • Loading branch information
wumpz committed Feb 4, 2016
1 parent 0cc809e commit 4a12dc1
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 14 deletions.
16 changes: 8 additions & 8 deletions src/main/java/net/sf/jsqlparser/statement/alter/Alter.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.StatementVisitor;
import net.sf.jsqlparser.statement.create.table.ColDataType;
import net.sf.jsqlparser.statement.create.table.ForeignKeyIndex;
import net.sf.jsqlparser.statement.create.table.Index;
import net.sf.jsqlparser.statement.select.PlainSelect;

/**
Expand All @@ -41,7 +41,7 @@ public class Alter implements Statement {
private List<String> pkColumns;
private List<String> ukColumns;
private String ukName;
private ForeignKeyIndex fkIndex = null;
private Index index = null;
private String operation;
private String constraintName;
private boolean onDeleteRestrict;
Expand Down Expand Up @@ -168,12 +168,12 @@ public void accept(StatementVisitor statementVisitor) {
statementVisitor.visit(this);
}

public ForeignKeyIndex getFkIndex() {
return fkIndex;
public Index getIndex() {
return index;
}

public void setFkIndex(ForeignKeyIndex fkIndex) {
this.fkIndex = fkIndex;
public void setIndex(Index index) {
this.index = index;
}

@Override
Expand Down Expand Up @@ -201,8 +201,8 @@ public String toString() {
} else if (isOnDeleteSetNull()) {
b.append(" ON DELETE SET NULL");
}
} else if (fkIndex != null) {
b.append(fkIndex);
} else if (index != null) {
b.append(index);
}
return b.toString();
}
Expand Down
25 changes: 19 additions & 6 deletions src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
Original file line number Diff line number Diff line change
Expand Up @@ -2855,6 +2855,7 @@ Alter Alter():
ColDataType dataType;
List<String> columnNames = null;
ForeignKeyIndex fkIndex = null;
NamedConstraint index = null;
Table fkTable = null;
Token alterDrop = null;
}
Expand Down Expand Up @@ -2889,22 +2890,34 @@ Alter Alter():
)
|
(
{
fkIndex = new ForeignKeyIndex();
}
<K_CONSTRAINT> sk3=RelObjectName() {fkIndex.setName(sk3);}
tk=<K_FOREIGN> tk2=<K_KEY>
<K_CONSTRAINT> sk3=RelObjectName()

( ( tk=<K_FOREIGN> tk2=<K_KEY>
columnNames=ColumnsNamesList()
{
fkIndex = new ForeignKeyIndex();
fkIndex.setName(sk3);
fkIndex.setType(tk.image + " " + tk2.image);
fkIndex.setColumnsNames(columnNames);
}
<K_REFERENCES> fkTable=Table() columnNames=ColumnsNamesList()
{
fkIndex.setTable(fkTable);
fkIndex.setReferencedColumnNames(columnNames);
alter.setFkIndex(fkIndex);
alter.setIndex(fkIndex);
}
)
|
( tk=<K_PRIMARY> tk2=<K_KEY>
columnNames=ColumnsNamesList()
{
index = new NamedConstraint();
index.setName(sk3);
index.setType(tk.image + " " + tk2.image);
index.setColumnsNames(columnNames);
alter.setIndex(index);
}
) )
)
)
)
Expand Down
7 changes: 7 additions & 0 deletions src/test/java/net/sf/jsqlparser/test/alter/AlterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.alter.Alter;
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;

public class AlterTest extends TestCase {

Expand Down Expand Up @@ -58,4 +61,8 @@ public void testAlterTableDropColumn() throws JSQLParserException {
public void testAlterTableDropConstraint() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP CONSTRAINT YYY");
}

public void testAlterTablePK() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("ALTER TABLE `Author` ADD CONSTRAINT `AuthorPK` PRIMARY KEY (`ID`)");
}
}

0 comments on commit 4a12dc1

Please sign in to comment.