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));
}
}