Skip to content

Commit 1208a86

Browse files
feeblefakieKodaiD
andauthored
Backport to branch(3.14) : Fix Oracle engine to support multiple Oracle users for index operations (#2891)
Co-authored-by: Kodai Doki <[email protected]>
1 parent c6ffe88 commit 1208a86

File tree

4 files changed

+37
-19
lines changed

4 files changed

+37
-19
lines changed

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

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -824,14 +824,7 @@ public Set<String> getNamespaceNames() throws ExecutionException {
824824
private void createIndex(Connection connection, String schema, String table, String indexedColumn)
825825
throws SQLException {
826826
String indexName = getIndexName(schema, table, indexedColumn);
827-
String createIndexStatement =
828-
"CREATE INDEX "
829-
+ enclose(indexName)
830-
+ " ON "
831-
+ encloseFullTableName(schema, table)
832-
+ " ("
833-
+ enclose(indexedColumn)
834-
+ ")";
827+
String createIndexStatement = rdbEngine.createIndexSql(schema, table, indexName, indexedColumn);
835828
execute(connection, createIndexStatement);
836829
}
837830

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,23 @@ public String tableExistsInternalTableCheckSql(String fullTableName) {
141141
return "SELECT 1 FROM " + fullTableName + " FETCH FIRST 1 ROWS ONLY";
142142
}
143143

144+
@Override
145+
public String createIndexSql(
146+
String schema, String table, String indexName, String indexedColumn) {
147+
return "CREATE INDEX "
148+
+ enclose(schema)
149+
+ "."
150+
+ enclose(indexName)
151+
+ " ON "
152+
+ encloseFullTableName(schema, table)
153+
+ " ("
154+
+ enclose(indexedColumn)
155+
+ ")";
156+
}
157+
144158
@Override
145159
public String dropIndexSql(String schema, String table, String indexName) {
146-
return "DROP INDEX " + enclose(indexName);
160+
return "DROP INDEX " + enclose(schema) + "." + enclose(indexName);
147161
}
148162

149163
@Override

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,17 @@ default String namespaceExistsPlaceholder(String namespace) {
7777

7878
String tableExistsInternalTableCheckSql(String fullTableName);
7979

80+
default String createIndexSql(
81+
String schema, String table, String indexName, String indexedColumn) {
82+
return "CREATE INDEX "
83+
+ enclose(indexName)
84+
+ " ON "
85+
+ encloseFullTableName(schema, table)
86+
+ " ("
87+
+ enclose(indexedColumn)
88+
+ ")";
89+
}
90+
8091
String dropIndexSql(String schema, String table, String indexName);
8192

8293
/**

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -561,8 +561,8 @@ public void createTable_forOracle_shouldExecuteCreateTableStatement()
561561
+ "\".\"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\"))",
562562
"CREATE TABLE \"my_ns\".\"foo_table\"(\"c3\" NUMBER(1),\"c1\" VARCHAR2(128),\"c4\" RAW(128),\"c2\" NUMBER(16),\"c5\" NUMBER(10),\"c6\" BINARY_DOUBLE,\"c7\" BINARY_FLOAT, PRIMARY KEY (\"c3\",\"c1\",\"c4\")) ROWDEPENDENCIES",
563563
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
564-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
565-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
564+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
565+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
566566
"INSERT INTO \""
567567
+ tableMetadataSchemaName
568568
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -599,8 +599,8 @@ public void createTable_forOracleWithModifiedKeyColumnSize_shouldExecuteCreateTa
599599
+ "\".\"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\"))",
600600
"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",
601601
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
602-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
603-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
602+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
603+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
604604
"INSERT INTO \""
605605
+ tableMetadataSchemaName
606606
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -860,8 +860,8 @@ public void createTable_WithClusteringOrderForOracle_shouldExecuteCreateTableSta
860860
"CREATE TABLE \"my_ns\".\"foo_table\"(\"c3\" NUMBER(1),\"c1\" VARCHAR2(128),\"c4\" RAW(128),\"c2\" NUMBER(16),\"c5\" NUMBER(10),\"c6\" BINARY_DOUBLE,\"c7\" BINARY_FLOAT, PRIMARY KEY (\"c3\",\"c1\",\"c4\")) ROWDEPENDENCIES",
861861
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
862862
"CREATE UNIQUE INDEX \"my_ns.foo_table_clustering_order_idx\" ON \"my_ns\".\"foo_table\" (\"c3\" ASC,\"c1\" DESC,\"c4\" ASC)",
863-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
864-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
863+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
864+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
865865
"INSERT INTO \""
866866
+ tableMetadataSchemaName
867867
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -1536,7 +1536,7 @@ public void createIndex_ForColumnTypeWithoutRequiredAlterationForMysql_ShouldCre
15361536
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
15371537
+ tableMetadataSchemaName
15381538
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
1539-
"CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
1539+
"CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
15401540
"UPDATE \""
15411541
+ tableMetadataSchemaName
15421542
+ "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -1641,7 +1641,7 @@ private void createIndex_ForColumnTypeWithoutRequiredAlterationForX_ShouldCreate
16411641
+ tableMetadataSchemaName
16421642
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
16431643
"ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(128) )",
1644-
"CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
1644+
"CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
16451645
"UPDATE \""
16461646
+ tableMetadataSchemaName
16471647
+ "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -1750,7 +1750,7 @@ public void dropIndex_forColumnTypeWithoutRequiredAlterationForOracle_ShouldDrop
17501750
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
17511751
+ tableMetadataSchemaName
17521752
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
1753-
"DROP INDEX \"index_my_ns_my_tbl_my_column\"",
1753+
"DROP INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\"",
17541754
"UPDATE \""
17551755
+ tableMetadataSchemaName
17561756
+ "\".\"metadata\" SET \"indexed\"=0 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -1850,7 +1850,7 @@ public void dropIndex_forColumnTypeWithRequiredAlterationForOracle_ShouldDropInd
18501850
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
18511851
+ tableMetadataSchemaName
18521852
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
1853-
"DROP INDEX \"index_my_ns_my_tbl_my_column\"",
1853+
"DROP INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\"",
18541854
"ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(4000) )",
18551855
"UPDATE \""
18561856
+ tableMetadataSchemaName

0 commit comments

Comments
 (0)