Skip to content

Commit 6afbc06

Browse files
feeblefakieKodaiD
andauthored
Backport to branch(3.16) : Fix Oracle engine to support multiple Oracle users for index operations (#2889)
Co-authored-by: Kodai Doki <[email protected]>
1 parent 0a521bb commit 6afbc06

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
@@ -849,14 +849,7 @@ public Set<String> getNamespaceNames() throws ExecutionException {
849849
private void createIndex(Connection connection, String schema, String table, String indexedColumn)
850850
throws SQLException {
851851
String indexName = getIndexName(schema, table, indexedColumn);
852-
String createIndexStatement =
853-
"CREATE INDEX "
854-
+ enclose(indexName)
855-
+ " ON "
856-
+ encloseFullTableName(schema, table)
857-
+ " ("
858-
+ enclose(indexedColumn)
859-
+ ")";
852+
String createIndexStatement = rdbEngine.createIndexSql(schema, table, indexName, indexedColumn);
860853
execute(connection, createIndexStatement);
861854
}
862855

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

105105
String tableExistsInternalTableCheckSql(String fullTableName);
106106

107+
default String createIndexSql(
108+
String schema, String table, String indexName, String indexedColumn) {
109+
return "CREATE INDEX "
110+
+ enclose(indexName)
111+
+ " ON "
112+
+ encloseFullTableName(schema, table)
113+
+ " ("
114+
+ enclose(indexedColumn)
115+
+ ")";
116+
}
117+
107118
String dropIndexSql(String schema, String table, String indexName);
108119

109120
/**

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
@@ -612,8 +612,8 @@ public void createTable_forOracle_shouldExecuteCreateTableStatement()
612612
+ "\".\"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\"))",
613613
"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",
614614
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
615-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
616-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
615+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
616+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
617617
"INSERT INTO \""
618618
+ tableMetadataSchemaName
619619
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -650,8 +650,8 @@ public void createTable_forOracleWithModifiedKeyColumnSize_shouldExecuteCreateTa
650650
+ "\".\"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\"))",
651651
"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",
652652
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
653-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
654-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
653+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
654+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
655655
"INSERT INTO \""
656656
+ tableMetadataSchemaName
657657
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -1034,8 +1034,8 @@ public void createTable_WithClusteringOrderForOracle_shouldExecuteCreateTableSta
10341034
"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",
10351035
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
10361036
"CREATE UNIQUE INDEX \"my_ns.foo_table_clustering_order_idx\" ON \"my_ns\".\"foo_table\" (\"c3\" ASC,\"c1\" DESC,\"c4\" ASC)",
1037-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
1038-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
1037+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
1038+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")",
10391039
"INSERT INTO \""
10401040
+ tableMetadataSchemaName
10411041
+ "\".\"metadata\" VALUES ('my_ns.foo_table','c3','BOOLEAN','PARTITION',NULL,0,1)",
@@ -1869,7 +1869,7 @@ public void createIndex_ForColumnTypeWithoutRequiredAlterationForMysql_ShouldCre
18691869
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
18701870
+ tableMetadataSchemaName
18711871
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
1872-
"CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
1872+
"CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
18731873
"UPDATE \""
18741874
+ tableMetadataSchemaName
18751875
+ "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -1988,7 +1988,7 @@ private void createIndex_ForColumnTypeWithoutRequiredAlterationForX_ShouldCreate
19881988
+ tableMetadataSchemaName
19891989
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
19901990
"ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(128) )",
1991-
"CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
1991+
"CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
19921992
"UPDATE \""
19931993
+ tableMetadataSchemaName
19941994
+ "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -2113,7 +2113,7 @@ public void dropIndex_forColumnTypeWithoutRequiredAlterationForOracle_ShouldDrop
21132113
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
21142114
+ tableMetadataSchemaName
21152115
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
2116-
"DROP INDEX \"index_my_ns_my_tbl_my_column\"",
2116+
"DROP INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\"",
21172117
"UPDATE \""
21182118
+ tableMetadataSchemaName
21192119
+ "\".\"metadata\" SET \"indexed\"=0 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -2227,7 +2227,7 @@ public void dropIndex_forColumnTypeWithRequiredAlterationForOracle_ShouldDropInd
22272227
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
22282228
+ tableMetadataSchemaName
22292229
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
2230-
"DROP INDEX \"index_my_ns_my_tbl_my_column\"",
2230+
"DROP INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\"",
22312231
"ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(4000) )",
22322232
"UPDATE \""
22332233
+ tableMetadataSchemaName

0 commit comments

Comments
 (0)