Skip to content

Commit 1cb71d7

Browse files
committed
Fix to specify schema when creating or dropping an index in Oracle engine
1 parent ae80dd5 commit 1cb71d7

File tree

9 files changed

+85
-16
lines changed

9 files changed

+85
-16
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
@@ -894,14 +894,7 @@ void createIndex(
894894
Connection connection, String schema, String table, String indexedColumn, boolean ifNotExists)
895895
throws SQLException {
896896
String indexName = getIndexName(schema, table, indexedColumn);
897-
String createIndexStatement =
898-
"CREATE INDEX "
899-
+ enclose(indexName)
900-
+ " ON "
901-
+ encloseFullTableName(schema, table)
902-
+ " ("
903-
+ enclose(indexedColumn)
904-
+ ")";
897+
String createIndexStatement = rdbEngine.createIndexSql(schema, table, indexName, indexedColumn);
905898
if (ifNotExists) {
906899
createIndexStatement = rdbEngine.tryAddIfNotExistsToCreateIndexSql(createIndexStatement);
907900
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,18 @@ public String tableExistsInternalTableCheckSql(String fullTableName) {
262262
return "SELECT 1 FROM " + fullTableName + " LIMIT 1";
263263
}
264264

265+
@Override
266+
public String createIndexSql(
267+
String schema, String table, String indexName, String indexedColumn) {
268+
return "CREATE INDEX "
269+
+ enclose(indexName)
270+
+ " ON "
271+
+ encloseFullTableName(schema, table)
272+
+ " ("
273+
+ enclose(indexedColumn)
274+
+ ")";
275+
}
276+
265277
@Override
266278
public String dropIndexSql(String schema, String table, String indexName) {
267279
return "DROP INDEX " + enclose(indexName);

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,18 @@ public String tableExistsInternalTableCheckSql(String fullTableName) {
130130
return "SELECT 1 FROM " + fullTableName + " LIMIT 1";
131131
}
132132

133+
@Override
134+
public String createIndexSql(
135+
String schema, String table, String indexName, String indexedColumn) {
136+
return "CREATE INDEX "
137+
+ enclose(indexName)
138+
+ " ON "
139+
+ encloseFullTableName(schema, table)
140+
+ " ("
141+
+ enclose(indexedColumn)
142+
+ ")";
143+
}
144+
133145
@Override
134146
public String dropIndexSql(String schema, String table, String indexName) {
135147
return "DROP INDEX " + enclose(indexName) + " ON " + encloseFullTableName(schema, table);

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,20 @@ public String tableExistsInternalTableCheckSql(String fullTableName) {
144144
return "SELECT 1 FROM " + fullTableName + " FETCH FIRST 1 ROWS ONLY";
145145
}
146146

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

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,18 @@ public String tableExistsInternalTableCheckSql(String fullTableName) {
127127
return "SELECT 1 FROM " + fullTableName + " LIMIT 1";
128128
}
129129

130+
@Override
131+
public String createIndexSql(
132+
String schema, String table, String indexName, String indexedColumn) {
133+
return "CREATE INDEX "
134+
+ enclose(indexName)
135+
+ " ON "
136+
+ encloseFullTableName(schema, table)
137+
+ " ("
138+
+ enclose(indexedColumn)
139+
+ ")";
140+
}
141+
130142
@Override
131143
public String dropIndexSql(String schema, String table, String indexName) {
132144
return "DROP INDEX " + enclose(schema) + "." + enclose(indexName);

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,18 @@ public String tableExistsInternalTableCheckSql(String fullTableName) {
113113
return "SELECT TOP 1 1 FROM " + fullTableName;
114114
}
115115

116+
@Override
117+
public String createIndexSql(
118+
String schema, String table, String indexName, String indexedColumn) {
119+
return "CREATE INDEX "
120+
+ enclose(indexName)
121+
+ " ON "
122+
+ encloseFullTableName(schema, table)
123+
+ " ("
124+
+ enclose(indexedColumn)
125+
+ ")";
126+
}
127+
116128
@Override
117129
public String dropIndexSql(String schema, String table, String indexName) {
118130
return "DROP INDEX " + enclose(indexName) + " ON " + encloseFullTableName(schema, table);

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,18 @@ public String tableExistsInternalTableCheckSql(String fullTableName) {
261261
return "SELECT 1 FROM " + fullTableName + " LIMIT 1";
262262
}
263263

264+
@Override
265+
public String createIndexSql(
266+
String schema, String table, String indexName, String indexedColumn) {
267+
return "CREATE INDEX "
268+
+ enclose(indexName)
269+
+ " ON "
270+
+ encloseFullTableName(schema, table)
271+
+ " ("
272+
+ enclose(indexedColumn)
273+
+ ")";
274+
}
275+
264276
@Override
265277
public String dropIndexSql(String schema, String table, String indexName) {
266278
return "DROP INDEX " + enclose(indexName);

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ void dropNamespaceTranslateSQLException(SQLException e, String namespace)
102102

103103
String tableExistsInternalTableCheckSql(String fullTableName);
104104

105+
String createIndexSql(String schema, String table, String indexName, String indexedColumn);
106+
105107
String dropIndexSql(String schema, String table, String indexName);
106108

107109
/**

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -565,8 +565,8 @@ public void createTableInternal_ForOracle_ShouldCreateTableAndIndexes() throws S
565565
"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",
566566
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
567567
"CREATE UNIQUE INDEX \"my_ns.foo_table_clustering_order_idx\" ON \"my_ns\".\"foo_table\" (\"c3\" ASC,\"c1\" DESC,\"c4\" ASC)",
568-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
569-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")");
568+
"CREATE INDEX \"my_ns\"\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
569+
"CREATE INDEX \"my_ns\"\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")");
570570
}
571571

572572
@Test
@@ -579,8 +579,8 @@ public void createTableInternal_ForOracle_ShouldCreateTableAndIndexes() throws S
579579
"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,\"c8\" DATE,\"c9\" TIMESTAMP(6),\"c10\" TIMESTAMP(3),\"c11\" TIMESTAMP(3) WITH TIME ZONE, PRIMARY KEY (\"c3\",\"c1\",\"c4\")) ROWDEPENDENCIES",
580580
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
581581
"CREATE UNIQUE INDEX \"my_ns.foo_table_clustering_order_idx\" ON \"my_ns\".\"foo_table\" (\"c3\" ASC,\"c1\" DESC,\"c4\" ASC)",
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
}
585585

586586
@Test
@@ -706,8 +706,8 @@ public void createTableInternal_IfNotExistsForOracle_ShouldCreateTableAndIndexes
706706
"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",
707707
"ALTER TABLE \"my_ns\".\"foo_table\" INITRANS 3 MAXTRANS 255",
708708
"CREATE UNIQUE INDEX \"my_ns.foo_table_clustering_order_idx\" ON \"my_ns\".\"foo_table\" (\"c3\" ASC,\"c1\" DESC,\"c4\" ASC)",
709-
"CREATE INDEX \"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
710-
"CREATE INDEX \"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")");
709+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c4\" ON \"my_ns\".\"foo_table\" (\"c4\")",
710+
"CREATE INDEX \"my_ns\".\"index_my_ns_foo_table_c1\" ON \"my_ns\".\"foo_table\" (\"c1\")");
711711
}
712712

713713
@Test
@@ -2363,7 +2363,7 @@ public void createIndex_ForColumnTypeWithoutRequiredAlterationForMysql_ShouldCre
23632363
"SELECT \"column_name\",\"data_type\",\"key_type\",\"clustering_order\",\"indexed\" FROM \""
23642364
+ METADATA_SCHEMA
23652365
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
2366-
"CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
2366+
"CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
23672367
"UPDATE \""
23682368
+ METADATA_SCHEMA
23692369
+ "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");
@@ -2480,7 +2480,7 @@ private void createIndex_ForColumnTypeWithoutRequiredAlterationForX_ShouldCreate
24802480
+ METADATA_SCHEMA
24812481
+ "\".\"metadata\" WHERE \"full_table_name\"=? ORDER BY \"ordinal_position\" ASC",
24822482
"ALTER TABLE \"my_ns\".\"my_tbl\" MODIFY ( \"my_column\" VARCHAR2(128) )",
2483-
"CREATE INDEX \"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
2483+
"CREATE INDEX \"my_ns\".\"index_my_ns_my_tbl_my_column\" ON \"my_ns\".\"my_tbl\" (\"my_column\")",
24842484
"UPDATE \""
24852485
+ METADATA_SCHEMA
24862486
+ "\".\"metadata\" SET \"indexed\"=1 WHERE \"full_table_name\"='my_ns.my_tbl' AND \"column_name\"='my_column'");

0 commit comments

Comments
 (0)