Skip to content

Commit 209e173

Browse files
committed
Fix
1 parent a410236 commit 209e173

File tree

7 files changed

+32
-9
lines changed

7 files changed

+32
-9
lines changed

core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminCaseSensitivityIntegrationTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@ private boolean isWideningColumnTypeConversionNotFullySupported() {
8383
return JdbcTestUtils.isOracle(rdbEngine) || JdbcTestUtils.isSqlite(rdbEngine);
8484
}
8585

86+
@Test
87+
@Override
88+
@DisabledIf("isSqlite")
89+
public void
90+
dropNamespace_ForNamespaceWithNonScalarDBManagedTables_ShouldThrowIllegalArgumentException() {}
91+
8692
@Test
8793
@Override
8894
@DisabledIf("isDb2")

core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminIntegrationTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ private boolean isWideningColumnTypeConversionNotFullySupported() {
8484
return JdbcTestUtils.isOracle(rdbEngine) || JdbcTestUtils.isSqlite(rdbEngine);
8585
}
8686

87+
@Test
88+
@Override
89+
@DisabledIf("isSqlite")
90+
public void
91+
dropNamespace_ForNamespaceWithNonScalarDBManagedTables_ShouldThrowIllegalArgumentException() {}
92+
8793
@Test
8894
@Override
8995
@DisabledIf("isDb2")

core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminTestUtils.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,13 @@ public void deleteMetadata(String namespace, String table) throws Exception {
7171
+ rdbEngine.encloseFullTableName(metadataSchema, JdbcAdmin.METADATA_TABLE)
7272
+ " WHERE "
7373
+ rdbEngine.enclose(JdbcAdmin.METADATA_COL_FULL_TABLE_NAME)
74-
+ " = '"
75-
+ getFullTableName(namespace, table)
76-
+ "'";
77-
execute(deleteMetadataStatement);
74+
+ " = ?";
75+
try (Connection connection = dataSource.getConnection();
76+
PreparedStatement preparedStatement =
77+
connection.prepareStatement(deleteMetadataStatement)) {
78+
preparedStatement.setString(1, getFullTableName(namespace, table));
79+
preparedStatement.executeUpdate();
80+
}
7881
}
7982

8083
private void execute(String sql) throws SQLException {

core/src/integration-test/java/com/scalar/db/storage/multistorage/MultiStorageAdminTestUtils.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,13 @@ public void deleteMetadata(String namespace, String table) throws Exception {
126126
+ rdbEngine.encloseFullTableName(jdbcMetadataSchema, JdbcAdmin.METADATA_TABLE)
127127
+ " WHERE "
128128
+ rdbEngine.enclose(JdbcAdmin.METADATA_COL_FULL_TABLE_NAME)
129-
+ " = '"
130-
+ getFullTableName(namespace, table)
131-
+ "'";
132-
execute(deleteMetadataStatement);
129+
+ " = ?";
130+
try (Connection connection = dataSource.getConnection();
131+
PreparedStatement preparedStatement =
132+
connection.prepareStatement(deleteMetadataStatement)) {
133+
preparedStatement.setString(1, getFullTableName(namespace, table));
134+
preparedStatement.executeUpdate();
135+
}
133136
}
134137

135138
@Override

core/src/main/java/com/scalar/db/storage/cosmos/CosmosAdmin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ public void dropNamespace(String namespace) throws ExecutionException {
355355
.deleteItem(new CosmosNamespace(namespace), new CosmosItemRequestOptions());
356356
deleteMetadataDatabaseIfEmpty();
357357
} catch (RuntimeException e) {
358+
e.printStackTrace();
358359
throw new ExecutionException(String.format("Deleting the %s database failed", namespace), e);
359360
}
360361
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,9 @@ public Set<String> getNamespaceTableNames(String namespace) throws ExecutionExce
712712
private Set<String> getNamespaceTableNamesInternal(Connection connection, String namespace)
713713
throws SQLException {
714714
String sql = rdbEngine.getTableNamesInNamespaceSql();
715+
if (Strings.isNullOrEmpty(sql)) {
716+
return Collections.emptySet();
717+
}
715718
Set<String> tableNames = new HashSet<>();
716719
try (PreparedStatement statement = connection.prepareStatement(sql)) {
717720
statement.setString(1, namespace);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,7 @@ public void setConnectionToReadOnly(Connection connection, boolean readOnly) {
370370

371371
@Override
372372
public String getTableNamesInNamespaceSql() {
373-
return "SELECT name FROM sqlite_master WHERE type='table' AND name LIKE ?";
373+
// Do nothing. Namespace is just a table prefix in the SQLite implementation.
374+
return null;
374375
}
375376
}

0 commit comments

Comments
 (0)