This is an automated email from the ASF dual-hosted git repository.
terrymanu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new f05ee36c6bf Fix Oracle composite index column order (#39839)
f05ee36c6bf is described below
commit f05ee36c6bf62b7fb13225f90f8e59fbd8bbee45
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Sep 14 00:39:12 2026 +0800
Fix Oracle composite index column order (#39839)
---
.../oracle/metadata/data/loader/OracleMetaDataLoader.java | 4 ++--
.../oracle/metadata/data/loader/OracleMetaDataLoaderTest.java | 11 ++++++-----
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git
a/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/metadata/data/loader/OracleMetaDataLoader.java
b/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/metadata/data/loader/OracleMetaDataLoader.java
index 392daedc724..5d1e2c2f018 100644
---
a/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/metadata/data/loader/OracleMetaDataLoader.java
+++
b/database/connector/dialect/oracle/src/main/java/org/apache/shardingsphere/database/connector/oracle/metadata/data/loader/OracleMetaDataLoader.java
@@ -76,7 +76,8 @@ public final class OracleMetaDataLoader implements
DialectMetaDataLoader {
private static final String PRIMARY_KEY_COLUMN_META_DATA_SQL =
"SELECT OWNER AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM
ALL_CONS_COLUMNS WHERE OWNER = ? AND TABLE_NAME IN (%s) AND CONSTRAINT_NAME IN
(%s)";
- private static final String INDEX_COLUMN_META_DATA_SQL = "SELECT
INDEX_NAME, COLUMN_NAME FROM ALL_IND_COLUMNS WHERE INDEX_OWNER = ? AND
INDEX_NAME IN (%s)";
+ private static final String INDEX_COLUMN_META_DATA_SQL =
+ "SELECT INDEX_NAME, COLUMN_NAME FROM ALL_IND_COLUMNS WHERE
INDEX_OWNER = ? AND INDEX_NAME IN (%s) ORDER BY INDEX_NAME, COLUMN_POSITION";
private static final int COLLATION_START_MAJOR_VERSION = 12;
@@ -166,7 +167,6 @@ public final class OracleMetaDataLoader implements
DialectMetaDataLoader {
}
private boolean isCaseSensitive(final int dataType, final String
collation, final boolean collationSupported) {
- // TODO Resolve case sensitivity from session parameters for Oracle
versions earlier than 12.2 and session-dependent collations.
return collationSupported ? null != collation &&
isCaseSensitive(collation) : dataTypeOption.isStringDataType(dataType);
}
diff --git
a/database/connector/dialect/oracle/src/test/java/org/apache/shardingsphere/database/connector/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
b/database/connector/dialect/oracle/src/test/java/org/apache/shardingsphere/database/connector/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
index c98a3fde429..adc5635babf 100644
---
a/database/connector/dialect/oracle/src/test/java/org/apache/shardingsphere/database/connector/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
+++
b/database/connector/dialect/oracle/src/test/java/org/apache/shardingsphere/database/connector/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
@@ -71,7 +71,8 @@ class OracleMetaDataLoaderTest {
private static final String ALL_INDEXES_SQL = "SELECT OWNER AS
TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, UNIQUENESS FROM ALL_INDEXES WHERE OWNER =
? AND TABLE_NAME IN ('tbl')";
- private static final String ALL_INDEX_COLUMNS_SQL_WITH_MULTIPLE_INDEXES =
"SELECT INDEX_NAME, COLUMN_NAME FROM ALL_IND_COLUMNS WHERE INDEX_OWNER = ? AND
INDEX_NAME IN ('id','id_2')";
+ private static final String ALL_INDEX_COLUMNS_SQL_WITH_MULTIPLE_INDEXES =
+ "SELECT INDEX_NAME, COLUMN_NAME FROM ALL_IND_COLUMNS WHERE
INDEX_OWNER = ? AND INDEX_NAME IN ('id','id_2') ORDER BY INDEX_NAME,
COLUMN_POSITION";
private static final String ALL_VIEWS_SQL = "SELECT VIEW_NAME FROM
ALL_VIEWS WHERE OWNER = ? AND VIEW_NAME IN ('tbl')";
@@ -186,7 +187,7 @@ class OracleMetaDataLoaderTest {
assertThat(actualTableMetaData.getIndexes().size(), is(2));
List<IndexMetaData> actualIndexes = new
ArrayList<>(actualTableMetaData.getIndexes());
assertIndexMetaData(actualIndexes.get(0), new IndexMetaData("id"),
true, Collections.singletonList("id"));
- assertIndexMetaData(actualIndexes.get(1), new IndexMetaData("id_2"),
false, Collections.singletonList("name"));
+ assertIndexMetaData(actualIndexes.get(1), new IndexMetaData("id_2"),
false, Arrays.asList("name", "creation_time"));
}
@SuppressWarnings({"JDBCResourceOpenedButNotSafelyClosed", "resource"})
@@ -254,9 +255,9 @@ class OracleMetaDataLoaderTest {
private ResultSet mockIndexColumnMetaDataResultSetWithMultipleIndexes()
throws SQLException {
ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, true, false);
- when(result.getString("INDEX_NAME")).thenReturn("id", "id_2");
- when(result.getString("COLUMN_NAME")).thenReturn("id", "name");
+ when(result.next()).thenReturn(true, true, true, false);
+ when(result.getString("INDEX_NAME")).thenReturn("id", "id_2", "id_2");
+ when(result.getString("COLUMN_NAME")).thenReturn("id", "name",
"creation_time");
return result;
}