Skip to content

Commit 16a06bb

Browse files
committed
Apply suggestions
1 parent c03a8e0 commit 16a06bb

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

core/src/main/java/com/scalar/db/common/CoreError.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ public enum CoreError implements ScalarDbError {
706706
"Cassandra does not support renaming non-primary key columns",
707707
"",
708708
""),
709-
DB2_RENAME_PRIMARY_OR_INDEX_KEY_COLUMN_NOT_SUPPORTED(
709+
JDBC_DB2_RENAME_PRIMARY_OR_INDEX_KEY_COLUMN_NOT_SUPPORTED(
710710
Category.USER_ERROR,
711711
"0222",
712712
"Db2 does not support renaming primary key or index key columns",

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

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -890,28 +890,17 @@ public void renameColumn(
890890
throws ExecutionException {
891891
try {
892892
TableMetadata currentTableMetadata = getTableMetadata(namespace, table);
893+
rdbEngine.throwIfRenameColumnNotSupported(oldColumnName, currentTableMetadata);
893894
assert currentTableMetadata != null;
894895
TableMetadata.Builder tableMetadataBuilder =
895896
TableMetadata.newBuilder(currentTableMetadata).renameColumn(oldColumnName, newColumnName);
896897
if (currentTableMetadata.getPartitionKeyNames().contains(oldColumnName)) {
897-
if (rdbEngine instanceof RdbEngineDb2) {
898-
throw new UnsupportedOperationException(
899-
CoreError.DB2_RENAME_PRIMARY_OR_INDEX_KEY_COLUMN_NOT_SUPPORTED.buildMessage());
900-
}
901898
tableMetadataBuilder.renamePartitionKey(oldColumnName, newColumnName);
902899
}
903900
if (currentTableMetadata.getClusteringKeyNames().contains(oldColumnName)) {
904-
if (rdbEngine instanceof RdbEngineDb2) {
905-
throw new UnsupportedOperationException(
906-
CoreError.DB2_RENAME_PRIMARY_OR_INDEX_KEY_COLUMN_NOT_SUPPORTED.buildMessage());
907-
}
908901
tableMetadataBuilder.renameClusteringKey(oldColumnName, newColumnName);
909902
}
910903
if (currentTableMetadata.getSecondaryIndexNames().contains(oldColumnName)) {
911-
if (rdbEngine instanceof RdbEngineDb2) {
912-
throw new UnsupportedOperationException(
913-
CoreError.DB2_RENAME_PRIMARY_OR_INDEX_KEY_COLUMN_NOT_SUPPORTED.buildMessage());
914-
}
915904
tableMetadataBuilder.renameSecondaryIndex(oldColumnName, newColumnName);
916905
}
917906
TableMetadata updatedTableMetadata = tableMetadataBuilder.build();

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,16 @@ public String getProjectionsSqlForSelectQuery(
527527
.collect(Collectors.joining(","));
528528
}
529529

530+
@Override
531+
public void throwIfRenameColumnNotSupported(String columnName, TableMetadata tableMetadata) {
532+
if (tableMetadata.getPartitionKeyNames().contains(columnName)
533+
|| tableMetadata.getClusteringKeyNames().contains(columnName)
534+
|| tableMetadata.getSecondaryIndexNames().contains(columnName)) {
535+
throw new UnsupportedOperationException(
536+
CoreError.JDBC_DB2_RENAME_PRIMARY_OR_INDEX_KEY_COLUMN_NOT_SUPPORTED.buildMessage());
537+
}
538+
}
539+
530540
private String getProjection(String columnName, DataType dataType) {
531541
if (dataType == DataType.DATE) {
532542
// Selecting a DATE column requires special handling. We need to cast the DATE column values

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,15 @@ default void throwIfDuplicatedIndexWarning(SQLWarning warning) throws SQLExcepti
272272
// Do nothing
273273
}
274274

275+
/**
276+
* Throws an exception if renaming columns is not supported in the underlying database.
277+
*
278+
* @param columnName the current name of the column to rename
279+
* @param tableMetadata the current table metadata
280+
* @throws UnsupportedOperationException if renaming the column is not supported
281+
*/
282+
default void throwIfRenameColumnNotSupported(String columnName, TableMetadata tableMetadata) {}
283+
275284
default void setConnectionToReadOnly(Connection connection, boolean readOnly)
276285
throws SQLException {
277286
connection.setReadOnly(readOnly);

0 commit comments

Comments
 (0)