This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 6277a1eb2eb Remove unreached codes on OracleMetaDataLoader (#38133)
6277a1eb2eb is described below

commit 6277a1eb2ebfad6fc3e73e9cefab873d1a455e62
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Feb 22 13:39:25 2026 +0800

    Remove unreached codes on OracleMetaDataLoader (#38133)
---
 .../metadata/data/loader/OracleMetaDataLoader.java | 10 ++-----
 .../data/loader/OracleMetaDataLoaderTest.java      | 33 ++++++++++++++++++++++
 2 files changed, 36 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 e6500ba2aca..da11d340197 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
@@ -59,8 +59,6 @@ public final class OracleMetaDataLoader implements 
DialectMetaDataLoader {
     
     private static final String ORDER_BY_COLUMN_ID = " ORDER BY COLUMN_ID";
     
-    private static final String TABLE_META_DATA_SQL = 
TABLE_META_DATA_SQL_NO_ORDER + ORDER_BY_COLUMN_ID;
-    
     private static final String TABLE_META_DATA_SQL_IN_TABLES = 
TABLE_META_DATA_SQL_NO_ORDER + " AND TABLE_NAME IN (%s)" + ORDER_BY_COLUMN_ID;
     
     private static final String VIEW_META_DATA_SQL = "SELECT VIEW_NAME FROM 
ALL_VIEWS WHERE OWNER = ? AND VIEW_NAME IN (%s)";
@@ -174,8 +172,7 @@ public final class OracleMetaDataLoader implements 
DialectMetaDataLoader {
             stringBuilder.append(", COLLATION");
         }
         String collation = stringBuilder.toString();
-        return tables.isEmpty() ? String.format(TABLE_META_DATA_SQL, collation)
-                : String.format(TABLE_META_DATA_SQL_IN_TABLES, collation, 
tables.stream().map(each -> String.format("'%s'", 
each)).collect(Collectors.joining(",")));
+        return String.format(TABLE_META_DATA_SQL_IN_TABLES, collation, 
tables.stream().map(each -> String.format("'%s'", 
each)).collect(Collectors.joining(",")));
     }
     
     private boolean versionContainsCollation(final DatabaseMetaData 
databaseMetaData) throws SQLException {
@@ -211,7 +208,7 @@ public final class OracleMetaDataLoader implements 
DialectMetaDataLoader {
     private void loadIndexColumnNames(final Connection connection, final 
Map<String, Collection<IndexMetaData>> tableIndexMetaDataMap) throws 
SQLException {
         List<String> quotedIndexNames =
                 
tableIndexMetaDataMap.values().stream().flatMap(Collection::stream).map(IndexMetaData::getName).map(QuoteCharacter.SINGLE_QUOTE::wrap).collect(Collectors.toList());
-        if (!quotedIndexNames.isEmpty()) {
+        if (quotedIndexNames.isEmpty()) {
             return;
         }
         Map<String, Collection<String>> indexColumnsMap = new HashMap<>();
@@ -252,8 +249,7 @@ public final class OracleMetaDataLoader implements 
DialectMetaDataLoader {
     }
     
     private String getPrimaryKeyMetaDataSQL(final String schemaName, final 
Collection<String> tables) {
-        return tables.isEmpty() ? String.format(PRIMARY_KEY_META_DATA_SQL, 
schemaName)
-                : String.format(PRIMARY_KEY_META_DATA_SQL_IN_TABLES, 
schemaName, tables.stream().map(each -> String.format("'%s'", 
each)).collect(Collectors.joining(",")));
+        return String.format(PRIMARY_KEY_META_DATA_SQL_IN_TABLES, schemaName, 
tables.stream().map(each -> String.format("'%s'", 
each)).collect(Collectors.joining(",")));
     }
     
     @Override
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 21ee8c62975..4fcb6adc933 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
@@ -55,6 +55,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 = "SELECT INDEX_NAME, 
COLUMN_NAME FROM ALL_IND_COLUMNS WHERE INDEX_OWNER = ? AND INDEX_NAME IN 
('id')";
+    
     private static final String ALL_TAB_COLUMNS_SQL_CONDITION1 = "SELECT OWNER 
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, NULLABLE, DATA_TYPE, COLUMN_ID, 
HIDDEN_COLUMN , IDENTITY_COLUMN, COLLATION"
             + " FROM ALL_TAB_COLS WHERE OWNER = ? AND TABLE_NAME IN ('tbl') 
ORDER BY COLUMN_ID";
     
@@ -237,6 +239,29 @@ class OracleMetaDataLoaderTest {
         assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("address", Types.VARCHAR, false, false, false, false, false, 
true));
     }
     
+    @SuppressWarnings("JDBCResourceOpenedButNotSafelyClosed")
+    @Test
+    void assertLoadIndexColumns() throws SQLException {
+        DataSource dataSource = mockDataSource();
+        ResultSet resultSet = mockTableMetaDataResultSet();
+        
when(dataSource.getConnection().prepareStatement(ALL_TAB_COLUMNS_SQL_CONDITION4).executeQuery()).thenReturn(resultSet);
+        ResultSet indexResultSet = mockIndexMetaDataResultSet();
+        
when(dataSource.getConnection().prepareStatement(ALL_INDEXES_SQL).executeQuery()).thenReturn(indexResultSet);
+        
when(dataSource.getConnection().getMetaData().getUserName()).thenReturn("TEST");
+        ResultSet primaryKeys = mockPrimaryKeysMetaDataResultSet();
+        
when(dataSource.getConnection().prepareStatement(ALL_CONSTRAINTS_SQL_WITH_TABLES).executeQuery()).thenReturn(primaryKeys);
+        ResultSet indexColumnResultSet = mockIndexColumnMetaDataResultSet();
+        
when(dataSource.getConnection().prepareStatement(ALL_INDEX_COLUMNS_SQL).executeQuery()).thenReturn(indexColumnResultSet);
+        
when(dataSource.getConnection().getMetaData().getDatabaseMajorVersion()).thenReturn(12);
+        
when(dataSource.getConnection().getMetaData().getDatabaseMinorVersion()).thenReturn(2);
+        DataTypeRegistry.load(dataSource, "Oracle");
+        Collection<SchemaMetaData> actual = 
getDialectTableMetaDataLoader().load(
+                new MetaDataLoaderMaterial(Collections.singleton("tbl"), 
"foo_ds", dataSource, databaseType, "sharding_db"));
+        TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
+        IndexMetaData actualIndexMetaData = 
actualTableMetaData.getIndexes().iterator().next();
+        assertThat(actualIndexMetaData.getColumns(), 
is(Collections.singletonList("id")));
+    }
+    
     @SuppressWarnings("JDBCResourceOpenedButNotSafelyClosed")
     private DataSource mockDataSource() throws SQLException {
         DataSource result = mock(DataSource.class, RETURNS_DEEP_STUBS);
@@ -288,6 +313,14 @@ class OracleMetaDataLoaderTest {
         return result;
     }
     
+    private ResultSet mockIndexColumnMetaDataResultSet() throws SQLException {
+        ResultSet result = mock(ResultSet.class);
+        when(result.next()).thenReturn(true, false);
+        when(result.getString("INDEX_NAME")).thenReturn("id");
+        when(result.getString("COLUMN_NAME")).thenReturn("id");
+        return result;
+    }
+    
     private ResultSet mockPrimaryKeysMetaDataResultSet() throws SQLException {
         ResultSet result = mock(ResultSet.class);
         when(result.next()).thenReturn(true, false);

Reply via email to