Skip to content

Commit

Permalink
[apache#2450] add RenameColumn support for spark-connector
Browse files Browse the repository at this point in the history
  • Loading branch information
ryan02.yang committed Mar 12, 2024
1 parent a9c6d2b commit d4c1815
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,26 @@ void testAlterTableAddAndDeleteColumn() {
checkTableColumns(tableName, simpleTableColumns, getTableInfo(tableName));
}

@Test
void testAlterTableRenameColumn() {
String tableName = "test_rename_column";
dropTableIfExists(tableName);
List<SparkColumnInfo> simpleTableColumns = getSimpleTableColumn();
createSimpleTable(tableName);
checkTableColumns(tableName, simpleTableColumns, getTableInfo(tableName));

String oldColumnName = "age";
String newColumnName = "newAge";

sql(
String.format(
"ALTER TABLE %S RENAME COLUMNS %S TO %S", tableName, oldColumnName, newColumnName));
ArrayList<SparkColumnInfo> renameColumns = new ArrayList<>(simpleTableColumns);
renameColumns.remove(SparkColumnInfo.of("age", DataTypes.IntegerType, null));
renameColumns.add(SparkColumnInfo.of("newAge", DataTypes.IntegerType, null));
checkTableColumns(tableName, renameColumns, getTableInfo(tableName));
}

private void checkTableColumns(
String tableName, List<SparkColumnInfo> columnInfos, SparkTableInfo tableInfo) {
SparkTableInfoChecker.create()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,10 @@ static com.datastrato.gravitino.rel.TableChange transformTableChange(TableChange
TableChange.DeleteColumn deleteColumn = (TableChange.DeleteColumn) change;
return com.datastrato.gravitino.rel.TableChange.deleteColumn(
deleteColumn.fieldNames(), deleteColumn.ifExists());
} else if (change instanceof TableChange.RenameColumn) {
TableChange.RenameColumn renameColumn = (TableChange.RenameColumn) change;
return com.datastrato.gravitino.rel.TableChange.renameColumn(
renameColumn.fieldNames(), renameColumn.newName());
} else {
throw new UnsupportedOperationException(
String.format("Unsupported table change %s", change.getClass().getName()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,25 @@ void testTransformRemoveProperty() {
Assertions.assertEquals("key", gravitinoRemoveProperty.getProperty());
}

@Test
void testTransformRenameColumn() {
String[] oldFiledsName = new String[] {"default_name"};
String newFiledName = "new_name";

TableChange.RenameColumn sparkRenameColumn =
(TableChange.RenameColumn) TableChange.renameColumn(oldFiledsName, newFiledName);
com.datastrato.gravitino.rel.TableChange gravitinoChange =
GravitinoCatalog.transformTableChange(sparkRenameColumn);

Assertions.assertTrue(
gravitinoChange instanceof com.datastrato.gravitino.rel.TableChange.RenameColumn);
com.datastrato.gravitino.rel.TableChange.RenameColumn gravitinoRenameColumn =
(com.datastrato.gravitino.rel.TableChange.RenameColumn) gravitinoChange;

Assertions.assertEquals(oldFiledsName, gravitinoRenameCeolumn.getFieldName());
Assertions.assertEquals(newFiledName, gravitinoRenameColumn.getNewName());
}

@Test
void testTransformAddColumn() {

Expand Down

0 comments on commit d4c1815

Please sign in to comment.