Skip to content

Commit d1542ba

Browse files
committed
Fix to handle renaming a primary key column specified as an index key
1 parent 5ef1a03 commit d1542ba

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

core/src/main/java/com/scalar/db/storage/jdbc/JdbcAdmin.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -895,9 +895,11 @@ public void renameColumn(
895895
TableMetadata.newBuilder(currentTableMetadata).renameColumn(oldColumnName, newColumnName);
896896
if (currentTableMetadata.getPartitionKeyNames().contains(oldColumnName)) {
897897
tableMetadataBuilder.renamePartitionKey(oldColumnName, newColumnName);
898-
} else if (currentTableMetadata.getClusteringKeyNames().contains(oldColumnName)) {
898+
}
899+
if (currentTableMetadata.getClusteringKeyNames().contains(oldColumnName)) {
899900
tableMetadataBuilder.renameClusteringKey(oldColumnName, newColumnName);
900-
} else if (currentTableMetadata.getSecondaryIndexNames().contains(oldColumnName)) {
901+
}
902+
if (currentTableMetadata.getSecondaryIndexNames().contains(oldColumnName)) {
901903
tableMetadataBuilder.renameSecondaryIndex(oldColumnName, newColumnName);
902904
}
903905
TableMetadata updatedTableMetadata = tableMetadataBuilder.build();

integration-test/src/main/java/com/scalar/db/api/DistributedStorageAdminIntegrationTestBase.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,23 +1266,28 @@ public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly()
12661266
.addColumn(getColumnName2(), DataType.INT)
12671267
.addColumn(getColumnName3(), DataType.TEXT)
12681268
.addPartitionKey(getColumnName1())
1269+
.addSecondaryIndex(getColumnName1())
12691270
.addSecondaryIndex(getColumnName3())
12701271
.build();
12711272
admin.createTable(namespace1, getTable4(), currentTableMetadata, options);
12721273

12731274
// Act
1275+
admin.renameColumn(namespace1, getTable4(), getColumnName1(), getColumnName5());
12741276
admin.renameColumn(namespace1, getTable4(), getColumnName3(), getColumnName4());
12751277

12761278
// Assert
12771279
TableMetadata expectedTableMetadata =
12781280
TableMetadata.newBuilder()
1279-
.addColumn(getColumnName1(), DataType.INT)
1281+
.addColumn(getColumnName5(), DataType.INT)
12801282
.addColumn(getColumnName2(), DataType.INT)
12811283
.addColumn(getColumnName4(), DataType.TEXT)
1282-
.addPartitionKey(getColumnName1())
1284+
.addPartitionKey(getColumnName5())
12831285
.addSecondaryIndex(getColumnName4())
1286+
.addSecondaryIndex(getColumnName5())
12841287
.build();
12851288
assertThat(admin.getTableMetadata(namespace1, getTable4())).isEqualTo(expectedTableMetadata);
1289+
assertThat(admin.indexExists(namespace1, getTable4(), getColumnName1())).isFalse();
1290+
assertThat(admin.indexExists(namespace1, getTable4(), getColumnName5())).isTrue();
12861291
assertThat(admin.indexExists(namespace1, getTable4(), getColumnName3())).isFalse();
12871292
assertThat(admin.indexExists(namespace1, getTable4(), getColumnName4())).isTrue();
12881293
} finally {

0 commit comments

Comments
 (0)