Skip to content

Commit 5a79964

Browse files
author
jthomas
committed
Increase test coverage on AlterExpression.java
getOperation getFkColumns getFkSourceTable getFkSourceColumns getConstraintName tried getPkColumns but it does not behave as I expected. placed TODO in AlterTest.testAlterTablePK for this getIndex().getColumnNames
1 parent 241779b commit 5a79964

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3091,7 +3091,7 @@ AlterExpression AlterExpression():
30913091
(
30923092
((<K_ADD> { alterExp.setOperation(AlterOperation.ADD); } | <K_MODIFY> { alterExp.setOperation(AlterOperation.MODIFY); })
30933093
(
3094-
( (<K_COLUMN>)*
3094+
( (<K_COLUMN>)?
30953095
alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); }
30963096
)
30973097
|

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

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@
44
import java.util.List;
55
import junit.framework.TestCase;
66
import net.sf.jsqlparser.JSQLParserException;
7+
import net.sf.jsqlparser.parser.CCJSqlParser;
78
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
89
import net.sf.jsqlparser.statement.Statement;
910
import net.sf.jsqlparser.statement.alter.Alter;
1011
import net.sf.jsqlparser.statement.alter.AlterExpression;
1112
import net.sf.jsqlparser.statement.alter.AlterExpression.ColumnDataType;
13+
import net.sf.jsqlparser.statement.alter.AlterOperation;
14+
1215
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
1316
import static net.sf.jsqlparser.test.TestUtils.assertStatementCanBeDeparsedAs;
1417

@@ -87,13 +90,35 @@ public void testAlterTableDropColumn2() throws JSQLParserException {
8790
}
8891

8992
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");
9198
}
9299

93100
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`");
95108
}
96109

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+
97122
public void testAlterTableCheckConstraint() throws JSQLParserException {
98123
assertSqlCanBeParsedAndDeparsed("ALTER TABLE `Author` ADD CONSTRAINT name_not_empty CHECK (`NAME` <> '')");
99124
}
@@ -156,6 +181,8 @@ public void testAlterTableModifyColumn2() throws JSQLParserException {
156181

157182
// COLUMN keyword appears in deparsed statement, modify becomes all caps
158183
assertStatementCanBeDeparsedAs(stmt, "ALTER TABLE mytable MODIFY COLUMN col1 timestamp (6)");
184+
185+
assertEquals(AlterOperation.MODIFY, ((Alter) stmt).getAlterExpressions().get(0).getOperation());
159186
}
160187

161188
public void testAlterTableAddColumnWithZone() throws JSQLParserException {

0 commit comments

Comments
 (0)