Skip to content

Commit d73103d

Browse files
feeblefakieKodaiD
andauthored
Backport to branch(3.15) : Fix Oracle engine to support multiple Oracle users for index operations (#2890)
Co-authored-by: Kodai Doki <[email protected]>
1 parent 6113e99 commit d73103d

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
@@ -831,14 +831,7 @@ public Set<String> getNamespaceNames() throws ExecutionException {
831831
private void createIndex(Connection connection, String schema, String table, String indexedColumn)
832832
throws SQLException {
833833
String indexName = getIndexName(schema, table, indexedColumn);
834-
String createIndexStatement =
835-
"CREATE INDEX "
836-
+ enclose(indexName)
837-
+ " ON "
838-
+ encloseFullTableName(schema, table)
839-
+ " ("
840-
+ enclose(indexedColumn)
841-
+ ")";
834+
String createIndexStatement = rdbEngine.createIndexSql(schema, table, indexName, indexedColumn);
842835
execute(connection, createIndexStatement);
843836
}
844837

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
@@ -148,9 +148,23 @@ public String tableExistsInternalTableCheckSql(String fullTableName) {
148148
return "SELECT 1 FROM " + fullTableName + " FETCH FIRST 1 ROWS ONLY";
149149
}
150150

151+
@Override
152+
public String createIndexSql(
153+
String schema, String table, String indexName, String indexedColumn) {
154+
return "CREATE INDEX "
155+
+ enclose(schema)
156+
+ "."
157+
+ enclose(indexName)
158+
+ " ON "
159+
+ encloseFullTableName(schema, table)
160+
+ " ("
161+
+ enclose(indexedColumn)
162+
+ ")";
163+
}
164+
151165
@Override
152166
public String dropIndexSql(String schema, String table, String indexName) {
153-
return "DROP INDEX " + enclose(indexName);
167+
return "DROP INDEX " + enclose(schema) + "." + enclose(indexName);
154168
}
155169

156170
@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
@@ -94,6 +94,17 @@ default String namespaceExistsPlaceholder(String namespace) {
9494

9595
String tableExistsInternalTableCheckSql(String fullTableName);
9696

97+
default String createIndexSql(
98+
String schema, String table, String indexName, String indexedColumn) {
99+
return "CREATE INDEX "
100+
+ enclose(indexName)
101+
+ " ON "
102+
+ encloseFullTableName(schema, table)
103+
+ " ("
104+
+ enclose(indexedColumn)
105+
+ ")";
106+
}
107+
97108
String dropIndexSql(String schema, String table, String indexName);
98109

99110
/**

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
@@ -579,8 +579,8 @@ public void createTable_forOracle_shouldExecuteCreateTableStatement()
579579
+ "\".\"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\"))",
580580
"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",
581581
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
582-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
583-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
582+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
583+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
584584
"INSERT INTO \""
585585
+ tableMetadataSchemaName
586586
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -617,8 +617,8 @@ public void createTable_forOracleWithModifiedKeyColumnSize_shouldExecuteCreateTa
617617
+ "\".\"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\"))",
618618
"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",
619619
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
620-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
621-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
620+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
621+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
622622
"INSERT INTO \""
623623
+ tableMetadataSchemaName
624624
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -914,8 +914,8 @@ public void createTable_WithClusteringOrderForOracle_shouldExecuteCreateTableSta
914914
"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,\"c8\" DATE,\"c9\" TIMESTAMP(6),\"c10\" TIMESTAMP(3),\"c11\" TIMESTAMP(3) WITH TIME ZONE, PRIMARY KEY (\"c3\",\"c1\",\"c4\")) ROWDEPENDENCIES",
915915
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
916916
"CREATE UNIQUE INDEX \"my_ns.foo_table_clustering_order_idx\" ON \"my_ns\".\"foo_table\" (\"c3\" ASC,\"c1\" DESC,\"c4\" ASC)",
917-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
918-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
917+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
918+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
919919
"INSERT INTO \""
920920
+ tableMetadataSchemaName
921921
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -1618,7 +1618,7 @@ public void createIndex_ForColumnTypeWithoutRequiredAlterationForMysql_ShouldCre
16181618
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
16191619
+ tableMetadataSchemaName
16201620
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
1621-
"CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
1621+
"CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
16221622
"UPDATE \""
16231623
+ tableMetadataSchemaName
16241624
+ "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -1723,7 +1723,7 @@ private void createIndex_ForColumnTypeWithoutRequiredAlterationForX_ShouldCreate
17231723
+ tableMetadataSchemaName
17241724
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
17251725
"ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(128) )",
1726-
"CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
1726+
"CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
17271727
"UPDATE \""
17281728
+ tableMetadataSchemaName
17291729
+ "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -1832,7 +1832,7 @@ public void dropIndex_forColumnTypeWithoutRequiredAlterationForOracle_ShouldDrop
18321832
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
18331833
+ tableMetadataSchemaName
18341834
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
1835-
"DROP INDEX \"index_my_ns_my_tbl_my_column\"",
1835+
"DROP INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\"",
18361836
"UPDATE \""
18371837
+ tableMetadataSchemaName
18381838
+ "\".\"metadata\" SET \"indexed\"=0 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -1932,7 +1932,7 @@ public void dropIndex_forColumnTypeWithRequiredAlterationForOracle_ShouldDropInd
19321932
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
19331933
+ tableMetadataSchemaName
19341934
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
1935-
"DROP INDEX \"index_my_ns_my_tbl_my_column\"",
1935+
"DROP INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\"",
19361936
"ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(4000) )",
19371937
"UPDATE \""
19381938
+ tableMetadataSchemaName

0 commit comments

Comments
 (0)