Skip to content

Commit fd7b02c

Browse files
authored
Merge branch 'master' into tidb_support
2 parents e87710e + 02319da commit fd7b02c

File tree

74 files changed

+4342
-164
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+4342
-164
lines changed

build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
plugins {
22
id "com.diffplug.spotless" version "6.13.0"
3-
id "org.jreleaser" version "1.19.0"
3+
id "org.jreleaser" version "1.20.0"
44
}
55

66
ext {
@@ -27,28 +27,28 @@ subprojects {
2727
guavaVersion = '32.1.3-jre'
2828
slf4jVersion = '1.7.36'
2929
cassandraDriverVersion = '3.11.5'
30-
azureCosmosVersion = '4.73.1'
30+
azureCosmosVersion = '4.74.0'
3131
jooqVersion = '3.14.16'
32-
awssdkVersion = '2.33.0'
32+
awssdkVersion = '2.34.0'
3333
commonsDbcp2Version = '2.13.0'
3434
mysqlDriverVersion = '8.4.0'
35-
postgresqlDriverVersion = '42.7.7'
35+
postgresqlDriverVersion = '42.7.8'
3636
oracleDriverVersion = '23.9.0.25.07'
3737
sqlserverDriverVersion = '12.8.1.jre8'
3838
sqliteDriverVersion = '3.50.3.0'
3939
yugabyteDriverVersion = '42.7.3-yb-4'
4040
db2DriverVersion = '12.1.2.0'
41-
mariadDbDriverVersion = '3.5.5'
41+
mariadDbDriverVersion = '3.5.6'
4242
picocliVersion = '4.7.7'
4343
commonsTextVersion = '1.14.0'
4444
junitVersion = '5.13.4'
45-
commonsLangVersion = '3.18.0'
46-
assertjVersion = '3.27.4'
45+
commonsLangVersion = '3.19.0'
46+
assertjVersion = '3.27.6'
4747
mockitoVersion = '4.11.0'
4848
spotbugsVersion = '4.8.6'
4949
errorproneVersion = '2.10.0'
5050
errorproneJavacVersion = '9+181-r4173-1'
51-
gsonVersion = '2.13.1'
51+
gsonVersion = '2.13.2'
5252
stefanbirknerSystemLambdaVersion = '1.2.1'
5353
spotbugsPluginVersion = '5.2.5'
5454
errorpronePluginVersion = '3.1.0'

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

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
package com.scalar.db.storage.cassandra;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
4+
35
import com.scalar.db.api.DistributedStorageAdminCaseSensitivityIntegrationTestBase;
6+
import com.scalar.db.api.TableMetadata;
7+
import com.scalar.db.exception.storage.ExecutionException;
8+
import com.scalar.db.io.DataType;
49
import com.scalar.db.util.AdminTestUtils;
510
import java.util.Collections;
611
import java.util.Map;
712
import java.util.Properties;
13+
import org.junit.jupiter.api.Disabled;
814

915
public class CassandraAdminCaseSensitivityIntegrationTest
1016
extends DistributedStorageAdminCaseSensitivityIntegrationTestBase {
@@ -27,4 +33,63 @@ protected AdminTestUtils getAdminTestUtils(String testName) {
2733
protected boolean isTimestampTypeSupported() {
2834
return false;
2935
}
36+
37+
@Override
38+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
39+
public void renameColumn_ShouldRenameColumnCorrectly() {}
40+
41+
@Override
42+
public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly()
43+
throws ExecutionException {
44+
try {
45+
// Arrange
46+
Map<String, String> options = getCreationOptions();
47+
TableMetadata currentTableMetadata =
48+
TableMetadata.newBuilder()
49+
.addColumn(getColumnName1(), DataType.INT)
50+
.addColumn(getColumnName2(), DataType.INT)
51+
.addColumn(getColumnName3(), DataType.TEXT)
52+
.addPartitionKey(getColumnName1())
53+
.addClusteringKey(getColumnName2())
54+
.addSecondaryIndex(getColumnName1())
55+
.build();
56+
admin.createTable(getNamespace1(), getTable4(), currentTableMetadata, options);
57+
58+
// Act
59+
admin.renameColumn(getNamespace1(), getTable4(), getColumnName1(), getColumnName4());
60+
61+
// Assert
62+
TableMetadata expectedTableMetadata =
63+
TableMetadata.newBuilder()
64+
.addColumn(getColumnName4(), DataType.INT)
65+
.addColumn(getColumnName2(), DataType.INT)
66+
.addColumn(getColumnName3(), DataType.TEXT)
67+
.addPartitionKey(getColumnName4())
68+
.addClusteringKey(getColumnName2())
69+
.addSecondaryIndex(getColumnName4())
70+
.build();
71+
assertThat(admin.getTableMetadata(getNamespace1(), getTable4()))
72+
.isEqualTo(expectedTableMetadata);
73+
assertThat(admin.indexExists(getNamespace1(), getTable4(), getColumnName1())).isFalse();
74+
assertThat(admin.indexExists(getNamespace1(), getTable4(), getColumnName4())).isTrue();
75+
} finally {
76+
admin.dropTable(getNamespace1(), getTable4(), true);
77+
}
78+
}
79+
80+
@Override
81+
@Disabled("Cassandra does not support renaming tables")
82+
public void renameTable_ForExistingTable_ShouldRenameTableCorrectly() {}
83+
84+
@Override
85+
@Disabled("Cassandra does not support renaming tables")
86+
public void renameTable_ForNonExistingTable_ShouldThrowIllegalArgumentException() {}
87+
88+
@Override
89+
@Disabled("Cassandra does not support renaming tables")
90+
public void renameTable_IfNewTableNameAlreadyExists_ShouldThrowIllegalArgumentException() {}
91+
92+
@Override
93+
@Disabled("Cassandra does not support renaming tables")
94+
public void renameTable_ForExistingTableWithIndexes_ShouldRenameTableAndIndexesCorrectly() {}
3095
}

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

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
package com.scalar.db.storage.cassandra;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
4+
35
import com.scalar.db.api.DistributedStorageAdminIntegrationTestBase;
6+
import com.scalar.db.api.TableMetadata;
7+
import com.scalar.db.exception.storage.ExecutionException;
8+
import com.scalar.db.io.DataType;
49
import com.scalar.db.util.AdminTestUtils;
510
import java.util.Collections;
611
import java.util.Map;
712
import java.util.Properties;
13+
import org.junit.jupiter.api.Disabled;
814

915
public class CassandraAdminIntegrationTest extends DistributedStorageAdminIntegrationTestBase {
1016
@Override
@@ -26,4 +32,63 @@ protected AdminTestUtils getAdminTestUtils(String testName) {
2632
protected boolean isTimestampTypeSupported() {
2733
return false;
2834
}
35+
36+
@Override
37+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
38+
public void renameColumn_ShouldRenameColumnCorrectly() {}
39+
40+
@Override
41+
public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly()
42+
throws ExecutionException {
43+
try {
44+
// Arrange
45+
Map<String, String> options = getCreationOptions();
46+
TableMetadata currentTableMetadata =
47+
TableMetadata.newBuilder()
48+
.addColumn(getColumnName1(), DataType.INT)
49+
.addColumn(getColumnName2(), DataType.INT)
50+
.addColumn(getColumnName3(), DataType.TEXT)
51+
.addPartitionKey(getColumnName1())
52+
.addClusteringKey(getColumnName2())
53+
.addSecondaryIndex(getColumnName1())
54+
.build();
55+
admin.createTable(getNamespace1(), getTable4(), currentTableMetadata, options);
56+
57+
// Act
58+
admin.renameColumn(getNamespace1(), getTable4(), getColumnName1(), getColumnName4());
59+
60+
// Assert
61+
TableMetadata expectedTableMetadata =
62+
TableMetadata.newBuilder()
63+
.addColumn(getColumnName4(), DataType.INT)
64+
.addColumn(getColumnName2(), DataType.INT)
65+
.addColumn(getColumnName3(), DataType.TEXT)
66+
.addPartitionKey(getColumnName4())
67+
.addClusteringKey(getColumnName2())
68+
.addSecondaryIndex(getColumnName4())
69+
.build();
70+
assertThat(admin.getTableMetadata(getNamespace1(), getTable4()))
71+
.isEqualTo(expectedTableMetadata);
72+
assertThat(admin.indexExists(getNamespace1(), getTable4(), getColumnName1())).isFalse();
73+
assertThat(admin.indexExists(getNamespace1(), getTable4(), getColumnName4())).isTrue();
74+
} finally {
75+
admin.dropTable(getNamespace1(), getTable4(), true);
76+
}
77+
}
78+
79+
@Override
80+
@Disabled("Cassandra does not support renaming tables")
81+
public void renameTable_ForExistingTable_ShouldRenameTableCorrectly() {}
82+
83+
@Override
84+
@Disabled("Cassandra does not support renaming tables")
85+
public void renameTable_ForNonExistingTable_ShouldThrowIllegalArgumentException() {}
86+
87+
@Override
88+
@Disabled("Cassandra does not support renaming tables")
89+
public void renameTable_IfNewTableNameAlreadyExists_ShouldThrowIllegalArgumentException() {}
90+
91+
@Override
92+
@Disabled("Cassandra does not support renaming tables")
93+
public void renameTable_ForExistingTableWithIndexes_ShouldRenameTableAndIndexesCorrectly() {}
2994
}

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

Lines changed: 20 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,22 @@ 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+
}
156+
157+
@Test
158+
@Override
159+
@Disabled("Cassandra does not support renaming tables")
160+
public void renameTable_WithSufficientPermission_ShouldSucceed() {}
141161
}

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

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
package com.scalar.db.storage.cassandra;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import com.scalar.db.api.TableMetadata;
6+
import com.scalar.db.exception.storage.ExecutionException;
7+
import com.scalar.db.io.DataType;
38
import com.scalar.db.transaction.consensuscommit.ConsensusCommitAdminIntegrationTestBase;
49
import com.scalar.db.util.AdminTestUtils;
510
import java.util.Collections;
611
import java.util.Map;
712
import java.util.Properties;
13+
import org.junit.jupiter.api.Disabled;
814

915
public class ConsensusCommitAdminIntegrationTestWithCassandra
1016
extends ConsensusCommitAdminIntegrationTestBase {
@@ -27,4 +33,62 @@ protected AdminTestUtils getAdminTestUtils(String testName) {
2733
protected boolean isTimestampTypeSupported() {
2834
return false;
2935
}
36+
37+
@Override
38+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
39+
public void renameColumn_ShouldRenameColumnCorrectly() {}
40+
41+
@Override
42+
public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly()
43+
throws ExecutionException {
44+
try {
45+
// Arrange
46+
Map<String, String> options = getCreationOptions();
47+
TableMetadata currentTableMetadata =
48+
TableMetadata.newBuilder()
49+
.addColumn("c1", DataType.INT)
50+
.addColumn("c2", DataType.INT)
51+
.addColumn("c3", DataType.TEXT)
52+
.addPartitionKey("c1")
53+
.addClusteringKey("c2")
54+
.addSecondaryIndex("c1")
55+
.build();
56+
admin.createTable(namespace1, TABLE4, currentTableMetadata, options);
57+
58+
// Act
59+
admin.renameColumn(namespace1, TABLE4, "c1", "c4");
60+
61+
// Assert
62+
TableMetadata expectedTableMetadata =
63+
TableMetadata.newBuilder()
64+
.addColumn("c4", DataType.INT)
65+
.addColumn("c2", DataType.INT)
66+
.addColumn("c3", DataType.TEXT)
67+
.addPartitionKey("c4")
68+
.addClusteringKey("c2")
69+
.addSecondaryIndex("c4")
70+
.build();
71+
assertThat(admin.getTableMetadata(namespace1, TABLE4)).isEqualTo(expectedTableMetadata);
72+
assertThat(admin.indexExists(namespace1, TABLE4, "c1")).isFalse();
73+
assertThat(admin.indexExists(namespace1, TABLE4, "c4")).isTrue();
74+
} finally {
75+
admin.dropTable(namespace1, TABLE4, true);
76+
}
77+
}
78+
79+
@Override
80+
@Disabled("Cassandra does not support renaming tables")
81+
public void renameTable_ForExistingTable_ShouldRenameTableCorrectly() {}
82+
83+
@Override
84+
@Disabled("Cassandra does not support renaming tables")
85+
public void renameTable_ForNonExistingTable_ShouldThrowIllegalArgumentException() {}
86+
87+
@Override
88+
@Disabled("Cassandra does not support renaming tables")
89+
public void renameTable_IfNewTableNameAlreadyExists_ShouldThrowIllegalArgumentException() {}
90+
91+
@Override
92+
@Disabled("Cassandra does not support renaming tables")
93+
public void renameTable_ForExistingTableWithIndexes_ShouldRenameTableAndIndexesCorrectly() {}
3094
}

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

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package com.scalar.db.storage.cassandra;
22

3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import com.scalar.db.api.TableMetadata;
6+
import com.scalar.db.exception.storage.ExecutionException;
7+
import com.scalar.db.io.DataType;
38
import com.scalar.db.transaction.singlecrudoperation.SingleCrudOperationTransactionAdminIntegrationTestBase;
49
import java.util.Collections;
510
import java.util.Map;
611
import java.util.Properties;
12+
import org.junit.jupiter.api.Disabled;
713

814
public class SingleCrudOperationTransactionAdminIntegrationTestWithCassandra
915
extends SingleCrudOperationTransactionAdminIntegrationTestBase {
@@ -22,4 +28,62 @@ protected Map<String, String> getCreationOptions() {
2228
protected boolean isTimestampTypeSupported() {
2329
return false;
2430
}
31+
32+
@Override
33+
@Disabled("Renaming non-primary key columns is not supported in Cassandra")
34+
public void renameColumn_ShouldRenameColumnCorrectly() {}
35+
36+
@Override
37+
public void renameColumn_ForIndexKeyColumn_ShouldRenameColumnAndIndexCorrectly()
38+
throws ExecutionException {
39+
try {
40+
// Arrange
41+
Map<String, String> options = getCreationOptions();
42+
TableMetadata currentTableMetadata =
43+
TableMetadata.newBuilder()
44+
.addColumn("c1", DataType.INT)
45+
.addColumn("c2", DataType.INT)
46+
.addColumn("c3", DataType.TEXT)
47+
.addPartitionKey("c1")
48+
.addClusteringKey("c2")
49+
.addSecondaryIndex("c1")
50+
.build();
51+
admin.createTable(namespace1, TABLE4, currentTableMetadata, options);
52+
53+
// Act
54+
admin.renameColumn(namespace1, TABLE4, "c1", "c4");
55+
56+
// Assert
57+
TableMetadata expectedTableMetadata =
58+
TableMetadata.newBuilder()
59+
.addColumn("c4", DataType.INT)
60+
.addColumn("c2", DataType.INT)
61+
.addColumn("c3", DataType.TEXT)
62+
.addPartitionKey("c4")
63+
.addClusteringKey("c2")
64+
.addSecondaryIndex("c4")
65+
.build();
66+
assertThat(admin.getTableMetadata(namespace1, TABLE4)).isEqualTo(expectedTableMetadata);
67+
assertThat(admin.indexExists(namespace1, TABLE4, "c1")).isFalse();
68+
assertThat(admin.indexExists(namespace1, TABLE4, "c4")).isTrue();
69+
} finally {
70+
admin.dropTable(namespace1, TABLE4, true);
71+
}
72+
}
73+
74+
@Override
75+
@Disabled("Cassandra does not support renaming tables")
76+
public void renameTable_ForExistingTable_ShouldRenameTableCorrectly() {}
77+
78+
@Override
79+
@Disabled("Cassandra does not support renaming tables")
80+
public void renameTable_ForNonExistingTable_ShouldThrowIllegalArgumentException() {}
81+
82+
@Override
83+
@Disabled("Cassandra does not support renaming tables")
84+
public void renameTable_IfNewTableNameAlreadyExists_ShouldThrowIllegalArgumentException() {}
85+
86+
@Override
87+
@Disabled("Cassandra does not support renaming tables")
88+
public void renameTable_ForExistingTableWithIndexes_ShouldRenameTableAndIndexesCorrectly() {}
2589
}

0 commit comments

Comments
 (0)