Skip to content

Commit

Permalink
Merge origin/master
Browse files Browse the repository at this point in the history
  • Loading branch information
wumpz committed Feb 7, 2019
2 parents ff23dde + bfb8023 commit d7e3b55
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 8 deletions.
15 changes: 8 additions & 7 deletions src/main/java/net/sf/jsqlparser/schema/Table.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,19 +51,18 @@ public Table() {
}

public Table(String name) {
setIndex(NAME_IDX, name);
setName(name);
}

public Table(String schemaName, String name) {
setIndex(NAME_IDX, name);
setIndex(SCHEMA_IDX, schemaName);
setName(name);
setSchemaName(schemaName);
}

public Table(Database database, String schemaName, String name) {
setIndex(NAME_IDX, name);
setIndex(SCHEMA_IDX, schemaName);
setIndex(DATABASE_IDX, database.getDatabaseName());
setIndex(SERVER_IDX, database.getServer().getFullyQualifiedName());
setName(name);
setSchemaName(schemaName);
setDatabase(database);
}

public Table(List<String> partItems) {
Expand All @@ -77,6 +76,7 @@ public Database getDatabase() {

public void setDatabase(Database database) {
setIndex(DATABASE_IDX, database.getDatabaseName());
setIndex(SERVER_IDX, database.getServer().getFullyQualifiedName());
}

public String getSchemaName() {
Expand Down Expand Up @@ -173,3 +173,4 @@ public String toString() {
+ ((hint != null) ? hint.toString() : "");
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@
public class AlterExpression {

private AlterOperation operation;
private String optionalSpecifier;
private String columnName;
private String columnOldName;
//private ColDataType dataType;

private List<ColumnDataType> colDataTypeList;
Expand Down Expand Up @@ -66,6 +68,14 @@ public void setOperation(AlterOperation operation) {
this.operation = operation;
}

public String getOptionalSpecifier() {
return optionalSpecifier;
}

public void setOptionalSpecifier(String optionalSpecifier) {
this.optionalSpecifier = optionalSpecifier;
}

public boolean isOnDeleteCascade() {
return onDeleteCascade;
}
Expand Down Expand Up @@ -137,6 +147,14 @@ public void setColumnName(String columnName) {
this.columnName = columnName;
}

public String getColOldName() {
return columnOldName;
}

public void setColOldName(String columnOldName) {
this.columnOldName = columnOldName;
}

public String getConstraintName() {
return this.constraintName;
}
Expand Down Expand Up @@ -214,7 +232,12 @@ public String toString() {
if (columnName != null) {
b.append("COLUMN ").append(columnName);
} else if (getColDataTypeList() != null) {
if (colDataTypeList.size() > 1) {
if(operation == AlterOperation.CHANGE) {
if(optionalSpecifier != null) {
b.append(optionalSpecifier).append(" ");
}
b.append(columnOldName).append(" ");
} else if (colDataTypeList.size() > 1) {
b.append("(");
} else {
b.append("COLUMN ");
Expand Down
19 changes: 19 additions & 0 deletions src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
| <K_CASE:"CASE">
| <K_CAST:"CAST">
| <K_CHARACTER:"CHARACTER">
| <K_CHANGE:"CHANGE">
| <K_CHECK:"CHECK">
| <K_CHAR:"CHAR">
| <K_COLUMN:"COLUMN">
Expand Down Expand Up @@ -3601,6 +3602,8 @@ List<String> CreateParameter():
tk=<K_IN> { param.add(tk.image); }
|
tk=<K_TYPE> { param.add(tk.image); }
|
tk=<K_COMMENT> { param.add(tk.image); }
)
{return param;}
}
Expand Down Expand Up @@ -3881,6 +3884,22 @@ AlterExpression AlterExpression():
)
)
|
(<K_CHANGE>
{
alterExp.setOperation(AlterOperation.CHANGE);
}
(
<K_COLUMN> { alterExp.setOptionalSpecifier("COLUMN"); } | {}
)
(
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>)
alterExpressionColumnDataType = AlterExpressionColumnDataType() {
alterExp.setColOldName(tk.image);
alterExp.addColDataType(alterExpressionColumnDataType);
}
)
)
|
(<K_DROP>
{
alterExp.setOperation(AlterOperation.DROP);
Expand Down
13 changes: 13 additions & 0 deletions src/test/java/net/sf/jsqlparser/parser/CCJSqlParserUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,4 +128,17 @@ public void testParseStatementsIssue691_2() throws Exception {
+ "---test");
assertEquals("SELECT * FROM dual;\n", result.toString());
}

@Test
public void testParseStatementIssue742() throws Exception {
Statements result = CCJSqlParserUtil.parseStatements("CREATE TABLE `table_name` (\n" +
" `id` bigint(20) NOT NULL AUTO_INCREMENT,\n" +
" `another_column_id` bigint(20) NOT NULL COMMENT 'column id as sent by SYSTEM',\n" +
" PRIMARY KEY (`id`),\n" +
" UNIQUE KEY `uk_another_column_id` (`another_column_id`)\n" +
")");
assertEquals("CREATE TABLE `table_name` (`id` bigint (20) NOT NULL AUTO_INCREMENT, `another_column_id` " +
"bigint (20) NOT NULL COMMENT 'column id as sent by SYSTEM', PRIMARY KEY (`id`), UNIQUE KEY `uk_another_column_id` " +
"(`another_column_id`));\n", result.toString());
}
}
28 changes: 28 additions & 0 deletions src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,34 @@ public void testAlterTableAlterColumn() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("ALTER TABLE table_name ALTER COLUMN column_name_1 TYPE TIMESTAMP, ALTER COLUMN column_name_2 TYPE BOOLEAN");
}

@Test
public void testAlterTableChangeColumn1() throws JSQLParserException {
Statement stmt = CCJSqlParserUtil.parse("ALTER TABLE tb_test CHANGE COLUMN c1 c2 INT (10)");
Alter alter = (Alter) stmt;
assertEquals(AlterOperation.CHANGE, alter.getAlterExpressions().get(0).getOperation());
assertEquals("c1", alter.getAlterExpressions().get(0).getColOldName());
assertEquals("COLUMN", alter.getAlterExpressions().get(0).getOptionalSpecifier());
}

@Test
public void testAlterTableChangeColumn2() throws JSQLParserException {
Statement stmt = CCJSqlParserUtil.parse("ALTER TABLE tb_test CHANGE c1 c2 INT (10)");
Alter alter = (Alter) stmt;
assertEquals(AlterOperation.CHANGE, alter.getAlterExpressions().get(0).getOperation());
assertEquals("c1", alter.getAlterExpressions().get(0).getColOldName());
assertNull(alter.getAlterExpressions().get(0).getOptionalSpecifier());
}

@Test
public void testAlterTableChangeColumn3() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("ALTER TABLE tb_test CHANGE COLUMN c1 c2 INT (10)");
}

@Test
public void testAlterTableChangeColumn4() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("ALTER TABLE tb_test CHANGE c1 c2 INT (10)");
}

@Test
public void testAlterTableAddColumnWithZone() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("ALTER TABLE mytable ADD COLUMN col1 timestamp with time zone");
Expand Down

0 comments on commit d7e3b55

Please sign in to comment.