From 3e1b89f40ff469736066b50d03dcd22e93162a8c Mon Sep 17 00:00:00 2001 From: Kodai Doki <52027276+KodaiD@users.noreply.github.com> Date: Fri, 18 Jul 2025 06:49:30 +0000 Subject: [PATCH 1/2] Empty commit [skip ci] From bef33b6d7d95931fb706c1c382f1370653183a5c Mon Sep 17 00:00:00 2001 From: Kodai Doki <52027276+KodaiD@users.noreply.github.com> Date: Fri, 18 Jul 2025 15:49:11 +0900 Subject: [PATCH 2/2] Resolve conflicts --- .../com/scalar/db/storage/jdbc/JdbcAdmin.java | 9 +-------- .../scalar/db/storage/jdbc/RdbEngineOracle.java | 16 +++++++++++++++- .../db/storage/jdbc/RdbEngineStrategy.java | 11 +++++++++++ .../db/storage/jdbc/JdbcAdminTestBase.java | 16 ++++++++-------- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/core/src/main/java/com/scalar/db/storage/jdbc/JdbcAdmin.java b/core/src/main/java/com/scalar/db/storage/jdbc/JdbcAdmin.java index 6069f00123..b0ddbabd98 100644 --- a/core/src/main/java/com/scalar/db/storage/jdbc/JdbcAdmin.java +++ b/core/src/main/java/com/scalar/db/storage/jdbc/JdbcAdmin.java @@ -824,14 +824,7 @@ public Set getNamespaceNames() throws ExecutionException { private void createIndex(Connection connection, String schema, String table, String indexedColumn) throws SQLException { String indexName = getIndexName(schema, table, indexedColumn); - String createIndexStatement = - "CREATE INDEX " - + enclose(indexName) - + " ON " - + encloseFullTableName(schema, table) - + " (" - + enclose(indexedColumn) - + ")"; + String createIndexStatement = rdbEngine.createIndexSql(schema, table, indexName, indexedColumn); execute(connection, createIndexStatement); } diff --git a/core/src/main/java/com/scalar/db/storage/jdbc/RdbEngineOracle.java b/core/src/main/java/com/scalar/db/storage/jdbc/RdbEngineOracle.java index 5ea84224e7..d4e6566e4a 100644 --- a/core/src/main/java/com/scalar/db/storage/jdbc/RdbEngineOracle.java +++ b/core/src/main/java/com/scalar/db/storage/jdbc/RdbEngineOracle.java @@ -130,9 +130,23 @@ public String tableExistsInternalTableCheckSql(String fullTableName) { return "SELECT 1 FROM " + fullTableName + " FETCH FIRST 1 ROWS ONLY"; } + @Override + public String createIndexSql( + String schema, String table, String indexName, String indexedColumn) { + return "CREATE INDEX " + + enclose(schema) + + "." + + enclose(indexName) + + " ON " + + encloseFullTableName(schema, table) + + " (" + + enclose(indexedColumn) + + ")"; + } + @Override public String dropIndexSql(String schema, String table, String indexName) { - return "DROP INDEX " + enclose(indexName); + return "DROP INDEX " + enclose(schema) + "." + enclose(indexName); } @Override diff --git a/core/src/main/java/com/scalar/db/storage/jdbc/RdbEngineStrategy.java b/core/src/main/java/com/scalar/db/storage/jdbc/RdbEngineStrategy.java index b61c44046e..0f980de598 100644 --- a/core/src/main/java/com/scalar/db/storage/jdbc/RdbEngineStrategy.java +++ b/core/src/main/java/com/scalar/db/storage/jdbc/RdbEngineStrategy.java @@ -77,6 +77,17 @@ default String namespaceExistsPlaceholder(String namespace) { String tableExistsInternalTableCheckSql(String fullTableName); + default String createIndexSql( + String schema, String table, String indexName, String indexedColumn) { + return "CREATE INDEX " + + enclose(indexName) + + " ON " + + encloseFullTableName(schema, table) + + " (" + + enclose(indexedColumn) + + ")"; + } + String dropIndexSql(String schema, String table, String indexName); /** diff --git a/core/src/test/java/com/scalar/db/storage/jdbc/JdbcAdminTestBase.java b/core/src/test/java/com/scalar/db/storage/jdbc/JdbcAdminTestBase.java index 387eed141b..39b5a83362 100644 --- a/core/src/test/java/com/scalar/db/storage/jdbc/JdbcAdminTestBase.java +++ b/core/src/test/java/com/scalar/db/storage/jdbc/JdbcAdminTestBase.java @@ -501,8 +501,8 @@ public void createTable_forOracle_shouldExecuteCreateTableStatement() + "\".\"metadata\"(\"full_table_name\" VARCHAR2(128),\"column_name\" VARCHAR2(128),\"data_type\" VARCHAR2(20) NOT NULL,\"key_type\" VARCHAR2(20),\"clustering_order\" VARCHAR2(10),\"indexed\" NUMBER(1) NOT NULL,\"ordinal_position\" INTEGER NOT NULL,PRIMARY KEY (\"full_table_name\", \"column_name\"))", "CREATE TABLE \"my_ns\".\"foo_table\"(\"c3\" NUMBER(1),\"c1\" VARCHAR2(64),\"c4\" RAW(64),\"c2\" NUMBER(16),\"c5\" NUMBER(10),\"c6\" BINARY_DOUBLE,\"c7\" BINARY_FLOAT, PRIMARY KEY (\"c3\",\"c1\",\"c4\")) ROWDEPENDENCIES", "ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255", - "CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")", - "CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")", + "CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")", + "CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")", "INSERT INTO \"" + tableMetadataSchemaName + "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)", @@ -755,8 +755,8 @@ public void createTable_WithClusteringOrderForOracle_shouldExecuteCreateTableSta "CREATE TABLE \"my_ns\".\"foo_table\"(\"c3\" NUMBER(1),\"c1\" VARCHAR2(64),\"c4\" RAW(64),\"c2\" NUMBER(16),\"c5\" NUMBER(10),\"c6\" BINARY_DOUBLE,\"c7\" BINARY_FLOAT, PRIMARY KEY (\"c3\",\"c1\",\"c4\")) ROWDEPENDENCIES", "ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255", "CREATE UNIQUE INDEX \"my_ns.foo_table_clustering_order_idx\" ON \"my_ns\".\"foo_table\" (\"c3\" ASC,\"c1\" DESC,\"c4\" ASC)", - "CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")", - "CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")", + "CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")", + "CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")", "INSERT INTO \"" + tableMetadataSchemaName + "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)", @@ -1431,7 +1431,7 @@ public void createIndex_ForColumnTypeWithoutRequiredAlterationForMysql_ShouldCre "SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \"" + tableMetadataSchemaName + "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC", - "CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")", + "CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")", "UPDATE \"" + tableMetadataSchemaName + "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'"); @@ -1536,7 +1536,7 @@ private void createIndex_ForColumnTypeWithoutRequiredAlterationForX_ShouldCreate + tableMetadataSchemaName + "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC", "ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(64) )", - "CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")", + "CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")", "UPDATE \"" + tableMetadataSchemaName + "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'"); @@ -1645,7 +1645,7 @@ public void dropIndex_forColumnTypeWithoutRequiredAlterationForOracle_ShouldDrop "SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \"" + tableMetadataSchemaName + "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC", - "DROP INDEX \"index_my_ns_my_tbl_my_column\"", + "DROP INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\"", "UPDATE \"" + tableMetadataSchemaName + "\".\"metadata\" SET \"indexed\"=0 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'"); @@ -1745,7 +1745,7 @@ public void dropIndex_forColumnTypeWithRequiredAlterationForOracle_ShouldDropInd "SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \"" + tableMetadataSchemaName + "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC", - "DROP INDEX \"index_my_ns_my_tbl_my_column\"", + "DROP INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\"", "ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(4000) )", "UPDATE \"" + tableMetadataSchemaName