|
4 | 4 | import java.util.List;
|
5 | 5 | import junit.framework.TestCase;
|
6 | 6 | import net.sf.jsqlparser.JSQLParserException;
|
| 7 | +import net.sf.jsqlparser.parser.CCJSqlParser; |
7 | 8 | import net.sf.jsqlparser.parser.CCJSqlParserUtil;
|
8 | 9 | import net.sf.jsqlparser.statement.Statement;
|
9 | 10 | import net.sf.jsqlparser.statement.alter.Alter;
|
10 | 11 | import net.sf.jsqlparser.statement.alter.AlterExpression;
|
11 | 12 | import net.sf.jsqlparser.statement.alter.AlterExpression.ColumnDataType;
|
| 13 | +import net.sf.jsqlparser.statement.alter.AlterOperation; |
| 14 | + |
12 | 15 | import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
|
13 | 16 | import static net.sf.jsqlparser.test.TestUtils.assertStatementCanBeDeparsedAs;
|
14 | 17 |
|
@@ -87,13 +90,35 @@ public void testAlterTableDropColumn2() throws JSQLParserException {
|
87 | 90 | }
|
88 | 91 |
|
89 | 92 | public void testAlterTableDropConstraint() throws JSQLParserException {
|
90 |
| - assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP CONSTRAINT YYY"); |
| 93 | + final String sql = "ALTER TABLE test DROP CONSTRAINT YYY"; |
| 94 | + Statement stmt = CCJSqlParserUtil.parse(sql); |
| 95 | + assertStatementCanBeDeparsedAs(stmt, sql); |
| 96 | + AlterExpression alterExpression = ((Alter) stmt).getAlterExpressions().get(0); |
| 97 | + assertEquals(alterExpression.getConstraintName(), "YYY"); |
91 | 98 | }
|
92 | 99 |
|
93 | 100 | public void testAlterTablePK() throws JSQLParserException {
|
94 |
| - assertSqlCanBeParsedAndDeparsed("ALTER TABLE `Author` ADD CONSTRAINT `AuthorPK` PRIMARY KEY (`ID`)"); |
| 101 | + final String sql = "ALTER TABLE `Author` ADD CONSTRAINT `AuthorPK` PRIMARY KEY (`ID`)"; |
| 102 | + Statement stmt = CCJSqlParserUtil.parse(sql); |
| 103 | + assertStatementCanBeDeparsedAs(stmt, sql); |
| 104 | + AlterExpression alterExpression = ((Alter) stmt).getAlterExpressions().get(0); |
| 105 | + assertNull(alterExpression.getConstraintName()); |
| 106 | + // TODO: should this pass? ==> assertEquals(alterExpression.getPkColumns().get(0), "ID"); |
| 107 | + assertEquals(alterExpression.getIndex().getColumnsNames().get(0), "`ID`"); |
95 | 108 | }
|
96 | 109 |
|
| 110 | + public void testAlterTableFK() throws JSQLParserException { |
| 111 | + String sql = "ALTER TABLE `Novels` ADD FOREIGN KEY (AuthorID) REFERENCES Author (ID)"; |
| 112 | + Statement stmt = CCJSqlParserUtil.parse(sql); |
| 113 | + assertStatementCanBeDeparsedAs(stmt, sql); |
| 114 | + AlterExpression alterExpression = ((Alter) stmt).getAlterExpressions().get(0); |
| 115 | + assertEquals(alterExpression.getFkColumns().size(), 1); |
| 116 | + assertEquals(alterExpression.getFkColumns().get(0), "AuthorID"); |
| 117 | + assertEquals(alterExpression.getFkSourceTable(), "Author"); |
| 118 | + assertEquals(alterExpression.getFkSourceColumns().size(), 1); |
| 119 | + assertEquals(alterExpression.getFkSourceColumns().get(0), "ID"); |
| 120 | + } |
| 121 | + |
97 | 122 | public void testAlterTableCheckConstraint() throws JSQLParserException {
|
98 | 123 | assertSqlCanBeParsedAndDeparsed("ALTER TABLE `Author` ADD CONSTRAINT name_not_empty CHECK (`NAME` <> '')");
|
99 | 124 | }
|
@@ -156,6 +181,8 @@ public void testAlterTableModifyColumn2() throws JSQLParserException {
|
156 | 181 |
|
157 | 182 | // COLUMN keyword appears in deparsed statement, modify becomes all caps
|
158 | 183 | assertStatementCanBeDeparsedAs(stmt, "ALTER TABLE mytable MODIFY COLUMN col1 timestamp (6)");
|
| 184 | + |
| 185 | + assertEquals(AlterOperation.MODIFY, ((Alter) stmt).getAlterExpressions().get(0).getOperation()); |
159 | 186 | }
|
160 | 187 |
|
161 | 188 | public void testAlterTableAddColumnWithZone() throws JSQLParserException {
|
|
0 commit comments