Skip to content

Commit 1f94250

Browse files
committed
Fix
1 parent 617c57f commit 1f94250

File tree

3 files changed

+27
-12
lines changed

3 files changed

+27
-12
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,6 +1042,12 @@ public enum CoreError implements ScalarDbError {
10421042
"Renaming a column failed. Table: %s; Old column name: %s; New column name: %s",
10431043
"",
10441044
""),
1045+
RENAMING_TABLE_FAILED(
1046+
Category.INTERNAL_ERROR,
1047+
"0061",
1048+
"Renaming a table failed. Old table name: %s; New table name: %s",
1049+
"",
1050+
""),
10451051

10461052
//
10471053
// Errors for the unknown transaction status error category

core/src/test/java/com/scalar/db/storage/jdbc/JdbcAdminTest.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3242,6 +3242,7 @@ public void renameTable_ForMysql_ShouldWorkProperly() throws SQLException, Execu
32423242
+ "`.`metadata` WHERE `full_table_name`=? ORDER BY `ordinal_position` ASC",
32433243
"ALTER TABLE `ns`.`table` RENAME TO `ns`.`table_new`",
32443244
"DELETE FROM `" + METADATA_SCHEMA + "`.`metadata` WHERE `full_table_name` = 'ns.table'",
3245+
"SELECT DISTINCT `full_table_name` FROM `" + METADATA_SCHEMA + "`.`metadata`",
32453246
"INSERT INTO `"
32463247
+ METADATA_SCHEMA
32473248
+ "`.`metadata` VALUES ('ns.table_new','c1','TEXT','PARTITION',NULL,false,1)",
@@ -3261,6 +3262,7 @@ public void renameTable_ForOracle_ShouldWorkProperly() throws SQLException, Exec
32613262
"DELETE FROM \""
32623263
+ METADATA_SCHEMA
32633264
+ "\".\"metadata\" WHERE \"full_table_name\" = 'ns.table'",
3265+
"SELECT DISTINCT \"full_table_name\" FROM \"" + METADATA_SCHEMA + "\".\"metadata\"",
32643266
"INSERT INTO \""
32653267
+ METADATA_SCHEMA
32663268
+ "\".\"metadata\" VALUES ('ns.table_new','c1','TEXT','PARTITION',NULL,0,1)",
@@ -3281,6 +3283,7 @@ public void renameTable_ForPostgresql_ShouldWorkProperly()
32813283
"DELETE FROM \""
32823284
+ METADATA_SCHEMA
32833285
+ "\".\"metadata\" WHERE \"full_table_name\" = 'ns.table'",
3286+
"SELECT DISTINCT \"full_table_name\" FROM \"" + METADATA_SCHEMA + "\".\"metadata\"",
32843287
"INSERT INTO \""
32853288
+ METADATA_SCHEMA
32863289
+ "\".\"metadata\" VALUES ('ns.table_new','c1','TEXT','PARTITION',NULL,false,1)",
@@ -3299,6 +3302,7 @@ public void renameTable_ForSqlServer_ShouldWorkProperly()
32993302
+ "].[metadata] WHERE [full_table_name]=? ORDER BY [ordinal_position] ASC",
33003303
"EXEC sp_rename '[ns].[table]', 'table_new'",
33013304
"DELETE FROM [" + METADATA_SCHEMA + "].[metadata] WHERE [full_table_name] = 'ns.table'",
3305+
"SELECT DISTINCT [full_table_name] FROM [" + METADATA_SCHEMA + "].[metadata]",
33023306
"INSERT INTO ["
33033307
+ METADATA_SCHEMA
33043308
+ "].[metadata] VALUES ('ns.table_new','c1','TEXT','PARTITION',NULL,0,1)",
@@ -3316,6 +3320,7 @@ public void renameTable_ForSqlite_ShouldWorkProperly() throws SQLException, Exec
33163320
+ "$metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
33173321
"ALTER TABLE \"ns$table\" RENAME TO \"ns$table_new\"",
33183322
"DELETE FROM \"" + METADATA_SCHEMA + "$metadata\" WHERE \"full_table_name\" = 'ns.table'",
3323+
"SELECT DISTINCT \"full_table_name\" FROM \"" + METADATA_SCHEMA + "$metadata\"",
33193324
"INSERT INTO \""
33203325
+ METADATA_SCHEMA
33213326
+ "$metadata\" VALUES ('ns.table_new','c1','TEXT','PARTITION',NULL,FALSE,1)",
@@ -3335,6 +3340,7 @@ public void renameTable_ForDb2_ShouldWorkProperly() throws SQLException, Executi
33353340
"DELETE FROM \""
33363341
+ METADATA_SCHEMA
33373342
+ "\".\"metadata\" WHERE \"full_table_name\" = 'ns.table'",
3343+
"SELECT DISTINCT \"full_table_name\" FROM \"" + METADATA_SCHEMA + "\".\"metadata\"",
33383344
"INSERT INTO \""
33393345
+ METADATA_SCHEMA
33403346
+ "\".\"metadata\" VALUES ('ns.table_new','c1','TEXT','PARTITION',NULL,false,1)",
@@ -3353,19 +3359,23 @@ private void renameTable_ForX_ShouldWorkProperly(
33533359
String columnName2 = "c2";
33543360

33553361
PreparedStatement selectStatement = mock(PreparedStatement.class);
3356-
ResultSet resultSet =
3362+
ResultSet resultSet1 =
33573363
mockResultSet(
33583364
new SelectAllFromMetadataTableResultSetMocker.Row(
33593365
columnName1, DataType.TEXT.toString(), "PARTITION", null, false),
33603366
new SelectAllFromMetadataTableResultSetMocker.Row(
33613367
columnName2, DataType.INT.toString(), null, null, false));
3362-
when(selectStatement.executeQuery()).thenReturn(resultSet);
3363-
3368+
when(selectStatement.executeQuery()).thenReturn(resultSet1);
33643369
when(connection.prepareStatement(any())).thenReturn(selectStatement);
33653370
List<Statement> expectedStatements = new ArrayList<>();
3366-
for (int i = 0; i < expectedSqlStatements.length; i++) {
3367-
Statement expectedStatement = mock(Statement.class);
3368-
expectedStatements.add(expectedStatement);
3371+
for (String expectedSqlStatement : expectedSqlStatements) {
3372+
Statement mock = mock(Statement.class);
3373+
expectedStatements.add(mock);
3374+
if (expectedSqlStatement.startsWith("SELECT DISTINCT ")) {
3375+
ResultSet resultSet2 = mock(ResultSet.class);
3376+
when(resultSet2.next()).thenReturn(true);
3377+
when(mock.executeQuery(any())).thenReturn(resultSet2);
3378+
}
33693379
}
33703380
when(connection.createStatement())
33713381
.thenReturn(
@@ -3382,7 +3392,11 @@ private void renameTable_ForX_ShouldWorkProperly(
33823392
verify(selectStatement).setString(1, getFullTableName(namespace, table));
33833393
verify(connection).prepareStatement(expectedGetMetadataStatement);
33843394
for (int i = 0; i < expectedSqlStatements.length; i++) {
3385-
verify(expectedStatements.get(i)).execute(expectedSqlStatements[i]);
3395+
if (expectedSqlStatements[i].startsWith("SELECT DISTINCT ")) {
3396+
verify(expectedStatements.get(i)).executeQuery(expectedSqlStatements[i]);
3397+
} else {
3398+
verify(expectedStatements.get(i)).execute(expectedSqlStatements[i]);
3399+
}
33863400
}
33873401
}
33883402

core/src/test/java/com/scalar/db/transaction/consensuscommit/ConsensusCommitAdminTestBase.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -659,16 +659,11 @@ public void renameTable_ShouldCallJdbcAdminProperly() throws ExecutionException
659659
// Arrange
660660
String existingTableName = "tbl1";
661661
String newTableName = "tbl2";
662-
TableMetadata tableMetadata =
663-
TableMetadata.newBuilder().addColumn("col1", DataType.INT).addPartitionKey("col1").build();
664-
when(distributedStorageAdmin.getTableMetadata(NAMESPACE, existingTableName))
665-
.thenReturn(ConsensusCommitUtils.buildTransactionTableMetadata(tableMetadata));
666662

667663
// Act
668664
admin.renameTable(NAMESPACE, existingTableName, newTableName);
669665

670666
// Assert
671-
verify(distributedStorageAdmin).getTableMetadata(NAMESPACE, existingTableName);
672667
verify(distributedStorageAdmin).renameTable(NAMESPACE, existingTableName, newTableName);
673668
}
674669

0 commit comments

Comments
 (0)