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();
|
||||
tableEditor.addColumn(column);
|
||||
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) {
|
||||
tableEditor.reorderColumn(newColumnName, null);
|
||||
|
@ -1514,6 +1514,31 @@ public void parsePartitionWithEngine() {
|
||||
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
|
||||
public void parseDefaultValue() {
|
||||
String ddl = "CREATE TABLE tmp (id INT NOT NULL, " +
|
||||
|
Loading…
Reference in New Issue
Block a user