Skip to content

Commit c03c49e

Browse files
committed
Fix to handle an issue where Cassandra does not support renaming non-primary key columns
1 parent a63f5d8 commit c03c49e

File tree

7 files changed

+68
-11
lines changed

7 files changed

+68
-11
lines changed

core/src/integration-test/java/com/scalar/db/storage/cassandra/CassandraAdminCaseSensitivityIntegrationTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Collections;
66
import java.util.Map;
77
import java.util.Properties;
8+
import org.junit.jupiter.api.Disabled;
89

910
public class CassandraAdminCaseSensitivityIntegrationTest
1011
extends DistributedStorageAdminCaseSensitivityIntegrationTestBase {
@@ -27,4 +28,12 @@ protected AdminTestUtils getAdminTestUtils(String testName) {
2728
protected boolean isTimestampTypeSupported() {
2829
return false;
2930
}
31+
32+
@Override
33+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
34+
public void renameColumn_ShouldRenameColumnCorrectly() {}
35+
36+
@Override
37+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
38+
public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly() {}
3039
}

core/src/integration-test/java/com/scalar/db/storage/cassandra/CassandraAdminIntegrationTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Collections;
66
import java.util.Map;
77
import java.util.Properties;
8+
import org.junit.jupiter.api.Disabled;
89

910
public class CassandraAdminIntegrationTest extends DistributedStorageAdminIntegrationTestBase {
1011
@Override
@@ -26,4 +27,12 @@ protected AdminTestUtils getAdminTestUtils(String testName) {
2627
protected boolean isTimestampTypeSupported() {
2728
return false;
2829
}
30+
31+
@Override
32+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
33+
public void renameColumn_ShouldRenameColumnCorrectly() {}
34+
35+
@Override
36+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
37+
public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly() {}
2938
}

core/src/integration-test/java/com/scalar/db/storage/cassandra/CassandraAdminPermissionIntegrationTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import static com.scalar.db.storage.cassandra.CassandraPermissionTestUtils.MAX_RETRY_COUNT;
44
import static com.scalar.db.storage.cassandra.CassandraPermissionTestUtils.SLEEP_BETWEEN_RETRIES_SECONDS;
5+
import static org.assertj.core.api.Assertions.assertThatCode;
56

67
import com.google.common.util.concurrent.Uninterruptibles;
78
import com.scalar.db.api.DistributedStorageAdminPermissionIntegrationTestBase;
9+
import com.scalar.db.exception.storage.ExecutionException;
810
import com.scalar.db.util.AdminTestUtils;
911
import com.scalar.db.util.PermissionTestUtils;
1012
import java.util.Collections;
@@ -138,4 +140,17 @@ public void addRawColumnToTable_WithSufficientPermission_ShouldSucceed() {}
138140
@Override
139141
@Disabled("Import-related functionality is not supported in Cassandra")
140142
public void importTable_WithSufficientPermission_ShouldSucceed() {}
143+
144+
@Test
145+
@Override
146+
public void renameColumn_WithSufficientPermission_ShouldSucceed() throws ExecutionException {
147+
// Arrange
148+
createNamespaceByRoot();
149+
createTableByRoot();
150+
151+
// Act Assert
152+
// Cassandra does not support renaming non-primary key columns
153+
assertThatCode(() -> adminForNormalUser.renameColumn(NAMESPACE, TABLE, COL_NAME1, NEW_COL_NAME))
154+
.doesNotThrowAnyException();
155+
}
141156
}

core/src/integration-test/java/com/scalar/db/storage/cassandra/ConsensusCommitAdminIntegrationTestWithCassandra.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Collections;
66
import java.util.Map;
77
import java.util.Properties;
8+
import org.junit.jupiter.api.Disabled;
89

910
public class ConsensusCommitAdminIntegrationTestWithCassandra
1011
extends ConsensusCommitAdminIntegrationTestBase {
@@ -27,4 +28,12 @@ protected AdminTestUtils getAdminTestUtils(String testName) {
2728
protected boolean isTimestampTypeSupported() {
2829
return false;
2930
}
31+
32+
@Override
33+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
34+
public void renameColumn_ShouldRenameColumnCorrectly() {}
35+
36+
@Override
37+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
38+
public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly() {}
3039
}

core/src/integration-test/java/com/scalar/db/storage/cassandra/SingleCrudOperationTransactionAdminIntegrationTestWithCassandra.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.Collections;
55
import java.util.Map;
66
import java.util.Properties;
7+
import org.junit.jupiter.api.Disabled;
78

89
public class SingleCrudOperationTransactionAdminIntegrationTestWithCassandra
910
extends SingleCrudOperationTransactionAdminIntegrationTestBase {
@@ -22,4 +23,12 @@ protected Map<String, String> getCreationOptions() {
2223
protected boolean isTimestampTypeSupported() {
2324
return false;
2425
}
26+
27+
@Override
28+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
29+
public void renameColumn_ShouldRenameColumnCorrectly() {}
30+
31+
@Override
32+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
33+
public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly() {}
2534
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,12 @@ public enum CoreError implements ScalarDbError {
706706
""),
707707
DYNAMO_RENAME_COLUMN_NOT_SUPPORTED(
708708
Category.USER_ERROR, "0221", "DynamoDB does not support the renaming column feature", "", ""),
709+
CASSANDRA_RENAME_NON_PRIMARY_KEY_COLUMN_NOT_SUPPORTED(
710+
Category.USER_ERROR,
711+
"0222",
712+
"Cassandra does not support renaming non-primary key columns",
713+
"",
714+
""),
709715

710716
//
711717
// Errors for the concurrency error category

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ public abstract class DistributedStorageAdminPermissionIntegrationTestBase {
2828

2929
private static final Logger logger =
3030
LoggerFactory.getLogger(DistributedStorageAdminPermissionIntegrationTestBase.class);
31-
private static final String COL_NAME1 = "c1";
32-
private static final String COL_NAME2 = "c2";
33-
private static final String COL_NAME3 = "c3";
34-
private static final String COL_NAME4 = "c4";
35-
private static final String RAW_COL_NAME = "raw_col";
36-
private static final String NEW_COL_NAME = "new_col";
37-
private static final TableMetadata TABLE_METADATA =
31+
protected static final String COL_NAME1 = "c1";
32+
protected static final String COL_NAME2 = "c2";
33+
protected static final String COL_NAME3 = "c3";
34+
protected static final String COL_NAME4 = "c4";
35+
protected static final String RAW_COL_NAME = "raw_col";
36+
protected static final String NEW_COL_NAME = "new_col";
37+
protected static final TableMetadata TABLE_METADATA =
3838
TableMetadata.newBuilder()
3939
.addColumn(COL_NAME1, DataType.INT)
4040
.addColumn(COL_NAME2, DataType.TEXT)
@@ -45,8 +45,8 @@ public abstract class DistributedStorageAdminPermissionIntegrationTestBase {
4545
.addSecondaryIndex(COL_NAME4)
4646
.build();
4747

48-
private DistributedStorageAdmin adminForRootUser;
49-
private DistributedStorageAdmin adminForNormalUser;
48+
protected DistributedStorageAdmin adminForRootUser;
49+
protected DistributedStorageAdmin adminForNormalUser;
5050
private String normalUserName;
5151
private String normalUserPassword;
5252

@@ -424,12 +424,12 @@ protected void sleepBetweenTests() {
424424
// Default do nothing
425425
}
426426

427-
private void createNamespaceByRoot() throws ExecutionException {
427+
protected void createNamespaceByRoot() throws ExecutionException {
428428
adminForRootUser.createNamespace(NAMESPACE, getCreationOptions());
429429
waitForNamespaceCreation();
430430
}
431431

432-
private void createTableByRoot() throws ExecutionException {
432+
protected void createTableByRoot() throws ExecutionException {
433433
adminForRootUser.createTable(NAMESPACE, TABLE, TABLE_METADATA, getCreationOptions());
434434
waitForTableCreation();
435435
}

0 commit comments

Comments
 (0)