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

duanzhengqiang 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 c8ce79bab7c Avoid throw get index column label exception when single 
table associated query (#26812)
c8ce79bab7c is described below

commit c8ce79bab7c08b6168daeb35ba95705d51964b21
Author: zhaojinchao <[email protected]>
AuthorDate: Fri Jul 7 18:18:58 2023 +0800

    Avoid throw get index column label exception when single table associated 
query (#26812)
    
    * Avoid throw get index column label exception when single table associated 
query
    
    * Fix checkstyle
---
 .../driver/jdbc/core/resultset/ShardingSphereResultSet.java         | 2 +-
 .../driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java    | 6 ++++--
 .../driver/jdbc/core/statement/ShardingSpherePreparedStatement.java | 4 ++--
 .../jdbc/core/resultset/ShardingSphereResultSetUtilsTest.java       | 4 ++--
 4 files changed, 9 insertions(+), 7 deletions(-)

diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSet.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSet.java
index c840181de7f..cc229eca6a7 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSet.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSet.java
@@ -66,7 +66,7 @@ public final class ShardingSphereResultSet extends 
AbstractResultSetAdapter {
                                    final ExecutionContext executionContext) 
throws SQLException {
         super(resultSets, statement, selectContainsEnhancedTable, 
executionContext);
         this.mergeResultSet = mergeResultSet;
-        columnLabelAndIndexMap = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(executionContext.getSqlStatementContext(),
 resultSets.get(0).getMetaData());
+        columnLabelAndIndexMap = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(executionContext.getSqlStatementContext(),
 selectContainsEnhancedTable, resultSets.get(0).getMetaData());
     }
     
     public ShardingSphereResultSet(final List<ResultSet> resultSets, final 
MergedResult mergeResultSet, final Statement statement, final boolean 
selectContainsEnhancedTable,
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java
index ef2bb8b1077..02662aa8230 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtils.java
@@ -40,12 +40,14 @@ public final class ShardingSphereResultSetUtils {
      * Create column label and index map.
      *
      * @param sqlStatementContext SQL statement context
+     * @param selectContainsEnhancedTable select contains enhanced table
      * @param resultSetMetaData meta data of result set
      * @return column label and index map
      * @throws SQLException SQL exception
      */
-    public static Map<String, Integer> createColumnLabelAndIndexMap(final 
SQLStatementContext sqlStatementContext, final ResultSetMetaData 
resultSetMetaData) throws SQLException {
-        if (hasSelectExpandProjections(sqlStatementContext)) {
+    public static Map<String, Integer> createColumnLabelAndIndexMap(final 
SQLStatementContext sqlStatementContext, final boolean 
selectContainsEnhancedTable,
+                                                                    final 
ResultSetMetaData resultSetMetaData) throws SQLException {
+        if (selectContainsEnhancedTable && 
hasSelectExpandProjections(sqlStatementContext)) {
             return 
createColumnLabelAndIndexMapWithExpandProjections((SelectStatementContext) 
sqlStatementContext);
         }
         Map<String, Integer> result = new 
CaseInsensitiveMap<>(resultSetMetaData.getColumnCount(), 1);
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 746c5f6f879..d636d7b5b94 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -239,7 +239,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             MergedResult mergedResult = mergeQuery(queryResults);
             List<ResultSet> resultSets = getResultSets();
             if (null == columnLabelAndIndexMap) {
-                columnLabelAndIndexMap = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(sqlStatementContext, 
resultSets.get(0).getMetaData());
+                columnLabelAndIndexMap = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(sqlStatementContext, 
selectContainsEnhancedTable, resultSets.get(0).getMetaData());
             }
             result = new ShardingSphereResultSet(resultSets, mergedResult, 
this, selectContainsEnhancedTable, executionContext, columnLabelAndIndexMap);
             // CHECKSTYLE:OFF
@@ -511,7 +511,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             }
             MergedResult mergedResult = 
mergeQuery(getQueryResults(resultSets));
             if (null == columnLabelAndIndexMap) {
-                columnLabelAndIndexMap = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(sqlStatementContext, 
resultSets.get(0).getMetaData());
+                columnLabelAndIndexMap = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(sqlStatementContext, 
selectContainsEnhancedTable, resultSets.get(0).getMetaData());
             }
             currentResultSet = new ShardingSphereResultSet(resultSets, 
mergedResult, this, selectContainsEnhancedTable, executionContext, 
columnLabelAndIndexMap);
         }
diff --git 
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtilsTest.java
 
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtilsTest.java
index 4e41f49f4f4..3ab73e7063d 100644
--- 
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtilsTest.java
+++ 
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetUtilsTest.java
@@ -45,7 +45,7 @@ class ShardingSphereResultSetUtilsTest {
         ResultSetMetaData resultSetMetaData = mock(ResultSetMetaData.class);
         when(resultSetMetaData.getColumnCount()).thenReturn(1);
         when(resultSetMetaData.getColumnLabel(1)).thenReturn("label");
-        Map<String, Integer> actual = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(selectStatementContext,
 resultSetMetaData);
+        Map<String, Integer> actual = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(selectStatementContext,
 true, resultSetMetaData);
         assertThat(actual, is(Collections.singletonMap("label", 1)));
     }
     
@@ -59,7 +59,7 @@ class ShardingSphereResultSetUtilsTest {
         Map<String, Integer> expected = new HashMap<>(2, 1F);
         expected.put("col1", 1);
         expected.put("col2", 2);
-        Map<String, Integer> actual = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(selectStatementContext,
 null);
+        Map<String, Integer> actual = 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(selectStatementContext,
 true, null);
         assertThat(actual, is(expected));
     }
 }

Reply via email to