DBZ-767 Column should not be renamed when name is not changed
This commit is contained in:
parent
b27421ddd0
commit
84f8bfb070
@ -161,7 +161,9 @@ public void exitAlterByChangeColumn(MySqlParser.AlterByChangeColumnContext ctx)
|
|||||||
Column column = columnDefinitionListener.getColumn();
|
Column column = columnDefinitionListener.getColumn();
|
||||||
tableEditor.addColumn(column);
|
tableEditor.addColumn(column);
|
||||||
String newColumnName = parser.parseName(ctx.newColumn);
|
String newColumnName = parser.parseName(ctx.newColumn);
|
||||||
tableEditor.renameColumn(column.name(), newColumnName);
|
if (newColumnName != null && !column.name().equals(newColumnName)) {
|
||||||
|
tableEditor.renameColumn(column.name(), newColumnName);
|
||||||
|
}
|
||||||
|
|
||||||
if (ctx.FIRST() != null) {
|
if (ctx.FIRST() != null) {
|
||||||
tableEditor.reorderColumn(newColumnName, null);
|
tableEditor.reorderColumn(newColumnName, null);
|
||||||
|
@ -1514,6 +1514,31 @@ public void parsePartitionWithEngine() {
|
|||||||
assertThat(tables.forTable(new TableId(null, null, "flat_view_request_log"))).isNotNull();
|
assertThat(tables.forTable(new TableId(null, null, "flat_view_request_log"))).isNotNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@FixFor("DBZ-767")
|
||||||
|
public void shouldParseChangeColumnAndKeepName() {
|
||||||
|
final String create =
|
||||||
|
"CREATE TABLE test (" +
|
||||||
|
" id INT NOT NULL, myvalue ENUM('Foo','Bar','Baz') NOT NULL DEFAULT 'Foo'," +
|
||||||
|
" PRIMARY KEY (`id`)" +
|
||||||
|
");";
|
||||||
|
final String alter =
|
||||||
|
"ALTER TABLE test " +
|
||||||
|
" CHANGE myvalue myvalue INT;";
|
||||||
|
|
||||||
|
parser.parse(create, tables);
|
||||||
|
assertThat(tables.size()).isEqualTo(1);
|
||||||
|
Table table = tables.forTable(new TableId(null, null, "test"));
|
||||||
|
assertThat(table).isNotNull();
|
||||||
|
assertThat(table.columns().size()).isEqualTo(2);
|
||||||
|
parser.parse(alter, tables);
|
||||||
|
table = tables.forTable(new TableId(null, null, "test"));
|
||||||
|
assertThat(table.columns().size()).isEqualTo(2);
|
||||||
|
final Column col = table.columns().get(1);
|
||||||
|
assertThat(col.name()).isEqualTo("myvalue");
|
||||||
|
assertThat(col.typeName()).isEqualTo("INT");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void parseDefaultValue() {
|
public void parseDefaultValue() {
|
||||||
String ddl = "CREATE TABLE tmp (id INT NOT NULL, " +
|
String ddl = "CREATE TABLE tmp (id INT NOT NULL, " +
|
||||||
|
Loading…
Reference in New Issue
Block a user