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 b8e05a250bd Refactor passing query context parameters to the merge 
engine (#36881)
b8e05a250bd is described below

commit b8e05a250bda86861e428fb230ae38c12229f53b
Author: ZhangCheng <[email protected]>
AuthorDate: Wed Oct 15 09:55:08 2025 +0800

    Refactor passing query context parameters to the merge engine (#36881)
    
    * Refactor passing query context parameters to the merge engine
    
    * Refactor passing query context parameters to the merge engine
    
    * Refactor passing query context parameters to the merge engine
    
    * Refactor passing query context parameters to the merge engine
    
    * Refactor passing query context parameters to the merge engine
---
 .../merge/dal/EncryptDALResultDecorator.java       |  4 +++-
 .../merge/dql/EncryptDQLResultDecorator.java       |  4 +++-
 .../merge/dal/EncryptDALResultDecoratorTest.java   |  6 +++---
 .../merge/dql/EncryptDQLResultDecoratorTest.java   |  3 ++-
 .../mask/merge/dql/MaskDQLResultDecorator.java     |  4 +++-
 .../mask/merge/dql/MaskDQLResultDecoratorTest.java |  3 ++-
 .../shardingsphere/infra/merge/MergeEngine.java    | 23 ++++++++++++----------
 .../merge/engine/decorator/ResultDecorator.java    |  4 +++-
 .../decorator/impl/TransparentResultDecorator.java |  4 +++-
 .../infra/merge/MergeEngineTest.java               | 10 +++++-----
 .../impl/TransparentResultDecoratorTest.java       |  3 ++-
 .../fixture/decorator/ResultDecoratorFixture.java  |  3 ++-
 .../executor/engine/DriverExecuteExecutor.java     |  9 ++++-----
 .../engine/facade/DriverExecutorFacade.java        |  7 +++----
 .../jdbc/DriverJDBCPushDownExecuteExecutor.java    |  8 +++++---
 .../resultset/ShardingSphereResultSetFactory.java  |  2 +-
 .../statement/ShardingSpherePreparedStatement.java |  8 +++++++-
 .../core/statement/ShardingSphereStatement.java    | 13 ++++++------
 .../driver/jdbc/adapter/StatementAdapterTest.java  |  4 ++--
 .../implementor/EnumerableScanImplementor.java     |  2 +-
 .../connector/StandardDatabaseProxyConnector.java  |  6 +++---
 21 files changed, 77 insertions(+), 53 deletions(-)

diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
index a93e3f2e213..155ac930f54 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecorator.java
@@ -29,6 +29,8 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatemen
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.ColumnInResultSetSQLStatementAttribute;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.TableInResultSetSQLStatementAttribute;
 
+import java.util.List;
+
 /**
  * DAL result decorator for encrypt.
  */
@@ -38,7 +40,7 @@ public final class EncryptDALResultDecorator implements 
ResultDecorator<EncryptR
     private final RuleMetaData globalRuleMetaData;
     
     @Override
-    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final EncryptRule rule) {
+    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final List<Object> parameters, final 
EncryptRule rule) {
         SQLStatement sqlStatement = sqlStatementContext.getSqlStatement();
         if 
(sqlStatement.getAttributes().findAttribute(ColumnInResultSetSQLStatementAttribute.class).isPresent())
 {
             return new EncryptShowColumnsMergedResult(mergedResult, 
sqlStatementContext, rule);
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptDQLResultDecorator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptDQLResultDecorator.java
index 56e46042370..eddd29795f4 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptDQLResultDecorator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptDQLResultDecorator.java
@@ -26,6 +26,8 @@ import 
org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 
+import java.util.List;
+
 /**
  * DQL result decorator for encrypt.
  */
@@ -39,7 +41,7 @@ public final class EncryptDQLResultDecorator implements 
ResultDecorator<EncryptR
     private final SelectStatementContext selectStatementContext;
     
     @Override
-    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final EncryptRule rule) {
+    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final List<Object> parameters, final 
EncryptRule rule) {
         return new EncryptMergedResult(database, metaData, 
selectStatementContext, mergedResult);
     }
 }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
index bddbed1055d..e45505e34e2 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
@@ -61,7 +61,7 @@ class EncryptDALResultDecoratorTest {
     void assertMergedResultWithShowColumnsStatement() {
         sqlStatementContext = 
mockColumnInResultSetSQLStatementAttributeContext();
         EncryptDALResultDecorator decorator = new 
EncryptDALResultDecorator(mock(RuleMetaData.class));
-        assertThat(decorator.decorate(mock(MergedResult.class), 
sqlStatementContext, rule), isA(EncryptShowColumnsMergedResult.class));
+        assertThat(decorator.decorate(mock(MergedResult.class), 
sqlStatementContext, Collections.emptyList(), rule), 
isA(EncryptShowColumnsMergedResult.class));
     }
     
     @Test
@@ -70,14 +70,14 @@ class EncryptDALResultDecoratorTest {
         RuleMetaData ruleMetaData = mock(RuleMetaData.class);
         
when(ruleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(mock(SQLParserRule.class));
         EncryptDALResultDecorator decorator = new 
EncryptDALResultDecorator(ruleMetaData);
-        assertThat(decorator.decorate(mock(MergedResult.class), 
sqlStatementContext, rule), isA(EncryptShowCreateTableMergedResult.class));
+        assertThat(decorator.decorate(mock(MergedResult.class), 
sqlStatementContext, Collections.emptyList(), rule), 
isA(EncryptShowCreateTableMergedResult.class));
     }
     
     @Test
     void assertMergedResultWithOtherStatement() {
         sqlStatementContext = mock(SQLStatementContext.class, 
RETURNS_DEEP_STUBS);
         EncryptDALResultDecorator decorator = new 
EncryptDALResultDecorator(mock(RuleMetaData.class));
-        assertThat(decorator.decorate(mock(MergedResult.class), 
sqlStatementContext, rule), isA(MergedResult.class));
+        assertThat(decorator.decorate(mock(MergedResult.class), 
sqlStatementContext, Collections.emptyList(), rule), isA(MergedResult.class));
     }
     
     private SQLStatementContext 
mockColumnInResultSetSQLStatementAttributeContext() {
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptDQLResultDecoratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptDQLResultDecoratorTest.java
index c7a80321d37..55bb454e064 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptDQLResultDecoratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dql/EncryptDQLResultDecoratorTest.java
@@ -26,6 +26,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.junit.jupiter.api.Test;
 
 import java.sql.SQLException;
+import java.util.Collections;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -40,7 +41,7 @@ class EncryptDQLResultDecoratorTest {
         when(mergedResult.next()).thenReturn(true);
         EncryptDQLResultDecorator decorator =
                 new 
EncryptDQLResultDecorator(mock(ShardingSphereDatabase.class), 
mock(ShardingSphereMetaData.class), mock(SelectStatementContext.class, 
RETURNS_DEEP_STUBS));
-        MergedResult actual = decorator.decorate(mergedResult, 
mock(SQLStatementContext.class), mock(EncryptRule.class));
+        MergedResult actual = decorator.decorate(mergedResult, 
mock(SQLStatementContext.class), Collections.emptyList(), 
mock(EncryptRule.class));
         assertTrue(actual.next());
     }
 }
diff --git 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskDQLResultDecorator.java
 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskDQLResultDecorator.java
index 18c614bbc1b..1b681a9e402 100644
--- 
a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskDQLResultDecorator.java
+++ 
b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/merge/dql/MaskDQLResultDecorator.java
@@ -26,6 +26,8 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.mask.rule.MaskRule;
 
+import java.util.List;
+
 /**
  * DQL result decorator for mask.
  */
@@ -39,7 +41,7 @@ public final class MaskDQLResultDecorator implements 
ResultDecorator<MaskRule> {
     private final SelectStatementContext selectStatementContext;
     
     @Override
-    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final MaskRule rule) {
+    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final List<Object> parameters, final 
MaskRule rule) {
         return new MaskMergedResult(database, metaData, 
selectStatementContext, mergedResult);
     }
 }
diff --git 
a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/dql/MaskDQLResultDecoratorTest.java
 
b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/dql/MaskDQLResultDecoratorTest.java
index f41890abbe7..b4d7a9dbb08 100644
--- 
a/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/dql/MaskDQLResultDecoratorTest.java
+++ 
b/features/mask/core/src/test/java/org/apache/shardingsphere/mask/merge/dql/MaskDQLResultDecoratorTest.java
@@ -26,6 +26,7 @@ import org.apache.shardingsphere.mask.rule.MaskRule;
 import org.junit.jupiter.api.Test;
 
 import java.sql.SQLException;
+import java.util.Collections;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
@@ -38,7 +39,7 @@ class MaskDQLResultDecoratorTest {
         MergedResult mergedResult = mock(MergedResult.class);
         when(mergedResult.next()).thenReturn(true);
         MaskDQLResultDecorator decorator = new 
MaskDQLResultDecorator(mock(ShardingSphereDatabase.class), 
mock(ShardingSphereMetaData.class), mock(SelectStatementContext.class));
-        MergedResult actual = decorator.decorate(mergedResult, 
mock(SQLStatementContext.class), mock(MaskRule.class));
+        MergedResult actual = decorator.decorate(mergedResult, 
mock(SQLStatementContext.class), Collections.emptyList(), mock(MaskRule.class));
         assertTrue(actual.next());
     }
 }
diff --git 
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
 
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
index bcb1802866e..9a1f8d70258 100644
--- 
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
+++ 
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/MergeEngine.java
@@ -33,6 +33,7 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
 import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
 
 import java.sql.SQLException;
@@ -70,33 +71,35 @@ public final class MergeEngine {
      * Merge.
      *
      * @param queryResults query results
-     * @param sqlStatementContext SQL statement context
+     * @param queryContext SQL statement context
      * @return merged result
      * @throws SQLException SQL exception
      */
-    public MergedResult merge(final List<QueryResult> queryResults, final 
SQLStatementContext sqlStatementContext) throws SQLException {
-        MergedResult mergedResult = executeMerge(queryResults, 
sqlStatementContext).orElseGet(() -> new 
TransparentMergedResult(queryResults.get(0)));
-        return decorate(mergedResult, sqlStatementContext);
+    public MergedResult merge(final List<QueryResult> queryResults, final 
QueryContext queryContext) throws SQLException {
+        MergedResult mergedResult = executeMerge(queryResults, 
queryContext).orElseGet(() -> new TransparentMergedResult(queryResults.get(0)));
+        return decorate(mergedResult, queryContext);
     }
     
     @SuppressWarnings({"unchecked", "rawtypes"})
-    private Optional<MergedResult> executeMerge(final List<QueryResult> 
queryResults, final SQLStatementContext sqlStatementContext) throws 
SQLException {
+    private Optional<MergedResult> executeMerge(final List<QueryResult> 
queryResults, final QueryContext queryContext) throws SQLException {
         for (Entry<ShardingSphereRule, ResultProcessEngine> entry : 
engines.entrySet()) {
             if (entry.getValue() instanceof ResultMergerEngine) {
-                ResultMerger resultMerger = ((ResultMergerEngine) 
entry.getValue()).newInstance(database.getName(), database.getProtocolType(), 
entry.getKey(), props, sqlStatementContext);
-                return Optional.of(resultMerger.merge(queryResults, 
sqlStatementContext, database, connectionContext));
+                ResultMerger resultMerger =
+                        ((ResultMergerEngine) 
entry.getValue()).newInstance(database.getName(), database.getProtocolType(), 
entry.getKey(), props, queryContext.getSqlStatementContext());
+                return Optional.of(resultMerger.merge(queryResults, 
queryContext.getSqlStatementContext(), database, connectionContext));
             }
         }
         return Optional.empty();
     }
     
     @SuppressWarnings({"unchecked", "rawtypes"})
-    private MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext) throws SQLException {
+    private MergedResult decorate(final MergedResult mergedResult, final 
QueryContext queryContext) throws SQLException {
         MergedResult result = null;
         for (Entry<ShardingSphereRule, ResultProcessEngine> entry : 
engines.entrySet()) {
             if (entry.getValue() instanceof ResultDecoratorEngine) {
-                ResultDecorator resultDecorator = 
getResultDecorator(sqlStatementContext, entry.getValue());
-                result = null == result ? 
resultDecorator.decorate(mergedResult, sqlStatementContext, entry.getKey()) : 
resultDecorator.decorate(result, sqlStatementContext, entry.getKey());
+                ResultDecorator resultDecorator = 
getResultDecorator(queryContext.getSqlStatementContext(), entry.getValue());
+                result = null == result ? 
resultDecorator.decorate(mergedResult, queryContext.getSqlStatementContext(), 
queryContext.getParameters(), entry.getKey())
+                        : resultDecorator.decorate(result, 
queryContext.getSqlStatementContext(), queryContext.getParameters(), 
entry.getKey());
             }
         }
         return null == result ? mergedResult : result;
diff --git 
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecorator.java
 
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecorator.java
index 93d6e4f8560..03f35c48c22 100644
--- 
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecorator.java
+++ 
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/ResultDecorator.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
 import java.sql.SQLException;
+import java.util.List;
 
 /**
  * Result decorator.
@@ -35,9 +36,10 @@ public interface ResultDecorator<T extends 
ShardingSphereRule> {
      *
      * @param mergedResult merged result
      * @param sqlStatementContext SQL statement context
+     * @param parameters parameters
      * @param rule ShardingSphere rule
      * @return merged result
      * @throws SQLException SQL exception
      */
-    MergedResult decorate(MergedResult mergedResult, SQLStatementContext 
sqlStatementContext, T rule) throws SQLException;
+    MergedResult decorate(MergedResult mergedResult, SQLStatementContext 
sqlStatementContext, List<Object> parameters, T rule) throws SQLException;
 }
diff --git 
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/impl/TransparentResultDecorator.java
 
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/impl/TransparentResultDecorator.java
index 726619bce11..78f46ac92e5 100644
--- 
a/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/impl/TransparentResultDecorator.java
+++ 
b/infra/merge/src/main/java/org/apache/shardingsphere/infra/merge/engine/decorator/impl/TransparentResultDecorator.java
@@ -22,13 +22,15 @@ import 
org.apache.shardingsphere.infra.merge.engine.decorator.ResultDecorator;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
+import java.util.List;
+
 /**
  * Transparent result decorator.
  */
 public final class TransparentResultDecorator implements 
ResultDecorator<ShardingSphereRule> {
     
     @Override
-    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final ShardingSphereRule rule) {
+    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final List<Object> parameters, final 
ShardingSphereRule rule) {
         return mergedResult;
     }
 }
diff --git 
a/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/MergeEngineTest.java
 
b/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/MergeEngineTest.java
index 74a14cfd73a..428b6647fbc 100644
--- 
a/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/MergeEngineTest.java
+++ 
b/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/MergeEngineTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.merge;
 
-import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
 import org.apache.shardingsphere.infra.merge.fixture.rule.DecoratorRuleFixture;
@@ -26,6 +25,7 @@ import 
org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
 import org.apache.shardingsphere.test.infra.fixture.rule.MockedRule;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -62,7 +62,7 @@ class MergeEngineTest {
         MergedResult actual =
                 new MergeEngine(mock(ShardingSphereMetaData.class), database, 
new ConfigurationProperties(new Properties()), 
mock(ConnectionContext.class)).merge(
                         Collections.singletonList(queryResult),
-                        mock(SQLStatementContext.class));
+                        mock(QueryContext.class));
         assertThat(actual.getValue(1, String.class), is("test"));
     }
     
@@ -72,7 +72,7 @@ class MergeEngineTest {
         MergedResult actual =
                 new MergeEngine(mock(ShardingSphereMetaData.class), database, 
new ConfigurationProperties(new Properties()), 
mock(ConnectionContext.class)).merge(
                         Collections.singletonList(queryResult),
-                        mock(SQLStatementContext.class));
+                        mock(QueryContext.class));
         assertThat(actual.getValue(1, String.class), is("merged_value"));
     }
     
@@ -80,7 +80,7 @@ class MergeEngineTest {
     void assertMergeWithDecoratorRuleOnly() throws SQLException {
         
when(database.getRuleMetaData().getRules()).thenReturn(Collections.singleton(new
 DecoratorRuleFixture()));
         MergedResult actual = new 
MergeEngine(mock(ShardingSphereMetaData.class), database, new 
ConfigurationProperties(new Properties()), mock(ConnectionContext.class))
-                .merge(Collections.singletonList(queryResult), 
mock(SQLStatementContext.class));
+                .merge(Collections.singletonList(queryResult), 
mock(QueryContext.class));
         assertThat(actual.getValue(1, String.class), 
is("decorated_merged_value"));
     }
     
@@ -90,7 +90,7 @@ class MergeEngineTest {
         MergedResult actual =
                 new MergeEngine(mock(ShardingSphereMetaData.class), database, 
new ConfigurationProperties(new Properties()), 
mock(ConnectionContext.class)).merge(
                         Collections.singletonList(queryResult),
-                        mock(SQLStatementContext.class));
+                        mock(QueryContext.class));
         assertThat(actual.getValue(1, String.class), 
is("decorated_merged_value"));
     }
 }
diff --git 
a/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/engine/decorator/impl/TransparentResultDecoratorTest.java
 
b/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/engine/decorator/impl/TransparentResultDecoratorTest.java
index cf71f6b7561..861846c8e78 100644
--- 
a/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/engine/decorator/impl/TransparentResultDecoratorTest.java
+++ 
b/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/engine/decorator/impl/TransparentResultDecoratorTest.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.junit.jupiter.api.Test;
 
 import java.sql.SQLException;
+import java.util.Collections;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
@@ -35,6 +36,6 @@ class TransparentResultDecoratorTest {
         MergedResult mergedResult = mock(MergedResult.class);
         when(mergedResult.next()).thenReturn(true);
         TransparentResultDecorator decorator = new 
TransparentResultDecorator();
-        assertTrue(decorator.decorate(mergedResult, 
mock(SQLStatementContext.class), mock(ShardingSphereRule.class)).next());
+        assertTrue(decorator.decorate(mergedResult, 
mock(SQLStatementContext.class), Collections.emptyList(), 
mock(ShardingSphereRule.class)).next());
     }
 }
diff --git 
a/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorFixture.java
 
b/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorFixture.java
index a6baa83d512..b1fc0c5a34c 100644
--- 
a/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorFixture.java
+++ 
b/infra/merge/src/test/java/org/apache/shardingsphere/infra/merge/fixture/decorator/ResultDecoratorFixture.java
@@ -26,6 +26,7 @@ import 
org.apache.shardingsphere.infra.merge.result.impl.transparent.Transparent
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.List;
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -33,7 +34,7 @@ import static org.mockito.Mockito.when;
 public final class ResultDecoratorFixture implements 
ResultDecorator<DecoratorRuleFixture> {
     
     @Override
-    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final DecoratorRuleFixture rule) 
throws SQLException {
+    public MergedResult decorate(final MergedResult mergedResult, final 
SQLStatementContext sqlStatementContext, final List<Object> parameters, final 
DecoratorRuleFixture rule) throws SQLException {
         ResultSet resultSet = mock(ResultSet.class);
         when(resultSet.getString(1)).thenReturn("decorated_merged_value");
         return new TransparentMergedResult(new 
JDBCStreamQueryResult(resultSet));
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteExecutor.java
index 1738872ace4..a93bc6be652 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteExecutor.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.driver.executor.engine.pushdown.jdbc.DriverJDBC
 import 
org.apache.shardingsphere.driver.executor.engine.pushdown.raw.DriverRawPushDownExecuteExecutor;
 import 
org.apache.shardingsphere.driver.executor.engine.transaction.DriverTransactionSQLStatementExecutor;
 import 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
-import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.connection.kernel.KernelProcessor;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
@@ -39,8 +38,8 @@ import 
org.apache.shardingsphere.infra.rule.attribute.raw.RawExecutionRuleAttrib
 import org.apache.shardingsphere.infra.session.query.QueryContext;
 import 
org.apache.shardingsphere.mode.metadata.refresher.federation.FederationMetaDataRefreshEngine;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.TCLStatement;
-import org.apache.shardingsphere.sqlfederation.engine.SQLFederationEngine;
 import org.apache.shardingsphere.sqlfederation.context.SQLFederationContext;
+import org.apache.shardingsphere.sqlfederation.engine.SQLFederationEngine;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
@@ -129,13 +128,13 @@ public final class DriverExecuteExecutor {
      * Get result set.
      *
      * @param database database
-     * @param sqlStatementContext SQL statement context
+     * @param queryContext query context
      * @param statement statement
      * @param statements statements
      * @return result set
      * @throws SQLException SQL exception
      */
-    public Optional<ResultSet> getResultSet(final ShardingSphereDatabase 
database, final SQLStatementContext sqlStatementContext,
+    public Optional<ResultSet> getResultSet(final ShardingSphereDatabase 
database, final QueryContext queryContext,
                                             final Statement statement, final 
List<? extends Statement> statements) throws SQLException {
         if (null == executeType) {
             return Optional.empty();
@@ -144,7 +143,7 @@ public final class DriverExecuteExecutor {
             case FEDERATION:
                 return Optional.of(sqlFederationEngine.getResultSet());
             case JDBC_PUSH_DOWN:
-                return jdbcPushDownExecutor.getResultSet(database, 
sqlStatementContext, statement, statements);
+                return jdbcPushDownExecutor.getResultSet(database, 
queryContext, statement, statements);
             default:
                 return Optional.empty();
         }
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/facade/DriverExecutorFacade.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/facade/DriverExecutorFacade.java
index 8fe2fd67450..a69e742126e 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/facade/DriverExecutorFacade.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/facade/DriverExecutorFacade.java
@@ -28,7 +28,6 @@ import 
org.apache.shardingsphere.driver.executor.engine.DriverExecuteUpdateExecu
 import 
org.apache.shardingsphere.driver.executor.engine.transaction.DriverTransactionSQLStatementExecutor;
 import 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
 import org.apache.shardingsphere.driver.jdbc.core.statement.StatementManager;
-import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.executor.audit.SQLAuditEngine;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
@@ -158,15 +157,15 @@ public final class DriverExecutorFacade implements 
AutoCloseable {
      * Get result set.
      *
      * @param database database
-     * @param sqlStatementContext SQL statement context
+     * @param queryContext query context
      * @param statement statement
      * @param statements statements
      * @return result set
      * @throws SQLException SQL exception
      */
     public Optional<ResultSet> getResultSet(final ShardingSphereDatabase 
database,
-                                            final SQLStatementContext 
sqlStatementContext, final Statement statement, final List<? extends Statement> 
statements) throws SQLException {
-        return executeExecutor.getResultSet(database, sqlStatementContext, 
statement, statements);
+                                            final QueryContext queryContext, 
final Statement statement, final List<? extends Statement> statements) throws 
SQLException {
+        return executeExecutor.getResultSet(database, queryContext, statement, 
statements);
     }
     
     @Override
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java
index f265d796e51..de1169d1088 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java
@@ -44,6 +44,7 @@ import org.apache.shardingsphere.infra.merge.MergeEngine;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
 import 
org.apache.shardingsphere.mode.metadata.refresher.pushdown.PushDownMetaDataRefreshEngine;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.DALStatement;
@@ -141,14 +142,15 @@ public final class DriverJDBCPushDownExecuteExecutor {
      * Get result set.
      *
      * @param database database
-     * @param sqlStatementContext SQL statement context
+     * @param queryContext query context
      * @param statement statement
      * @param statements statements
      * @return result set
      * @throws SQLException SQL exception
      */
-    public Optional<ResultSet> getResultSet(final ShardingSphereDatabase 
database, final SQLStatementContext sqlStatementContext,
+    public Optional<ResultSet> getResultSet(final ShardingSphereDatabase 
database, final QueryContext queryContext,
                                             final Statement statement, final 
List<? extends Statement> statements) throws SQLException {
+        SQLStatementContext sqlStatementContext = 
queryContext.getSqlStatementContext();
         if (sqlStatementContext instanceof SelectStatementContext || 
sqlStatementContext.getSqlStatement() instanceof DALStatement) {
             List<ResultSet> resultSets = getResultSets(statements);
             if (resultSets.isEmpty()) {
@@ -156,7 +158,7 @@ public final class DriverJDBCPushDownExecuteExecutor {
             }
             List<QueryResult> queryResults = getQueryResults(resultSets);
             MergedResult mergedResult = new MergeEngine(metaData, database, 
metaData.getProps(), 
connection.getDatabaseConnectionManager().getConnectionContext())
-                    .merge(queryResults, sqlStatementContext);
+                    .merge(queryResults, queryContext);
             return Optional.of(new ShardingSphereResultSet(resultSets, 
mergedResult, statement, sqlStatementContext));
         }
         return Optional.empty();
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetFactory.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetFactory.java
index d0203277b9b..cbc9a42e7b3 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetFactory.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/resultset/ShardingSphereResultSetFactory.java
@@ -66,7 +66,7 @@ public final class ShardingSphereResultSetFactory {
     public ResultSet newInstance(final ShardingSphereDatabase database, final 
QueryContext queryContext, final List<QueryResult> queryResults,
                                  final Statement statement, final Map<String, 
Integer> columnLabelAndIndexMap) throws SQLException {
         List<ResultSet> resultSets = getResultSets(queryResults);
-        MergedResult mergedResult = new MergeEngine(metaData, database, props, 
connectionContext).merge(queryResults, queryContext.getSqlStatementContext());
+        MergedResult mergedResult = new MergeEngine(metaData, database, props, 
connectionContext).merge(queryResults, queryContext);
         return new ShardingSphereResultSet(resultSets, mergedResult, 
statement, queryContext.getSqlStatementContext(),
                 null == columnLabelAndIndexMap
                         ? 
ShardingSphereResultSetUtils.createColumnLabelAndIndexMap(queryContext.getSqlStatementContext(),
 resultSets.get(0).getMetaData())
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index a60a2f44c0d..bbe803b4f99 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -110,6 +110,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     
     private ResultSet currentBatchGeneratedKeysResultSet;
     
+    private QueryContext queryContext;
+    
     public ShardingSpherePreparedStatement(final ShardingSphereConnection 
connection, final String sql) throws SQLException {
         this(connection, sql, ResultSet.TYPE_FORWARD_ONLY, 
ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT, false, null);
     }
@@ -167,6 +169,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             }
             clearPrevious();
             QueryContext queryContext = createQueryContext();
+            this.queryContext = queryContext;
             
handleAutoCommitBeforeExecution(queryContext.getSqlStatementContext().getSqlStatement(),
 connection);
             findGeneratedKey().ifPresent(optional -> 
generatedValues.addAll(optional.getGeneratedValues()));
             currentResultSet =
@@ -204,6 +207,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             }
             clearPrevious();
             QueryContext queryContext = createQueryContext();
+            this.queryContext = queryContext;
             
handleAutoCommitBeforeExecution(queryContext.getSqlStatementContext().getSqlStatement(),
 connection);
             int result = driverExecutorFacade.executeUpdate(usedDatabase, 
metaData, queryContext,
                     (sql, statement) -> ((PreparedStatement) 
statement).executeUpdate(), (StatementAddCallback<PreparedStatement>) 
this::addStatements, this::replay);
@@ -228,6 +232,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             }
             clearPrevious();
             QueryContext queryContext = createQueryContext();
+            this.queryContext = queryContext;
             
handleAutoCommitBeforeExecution(queryContext.getSqlStatementContext().getSqlStatement(),
 connection);
             boolean result = driverExecutorFacade.execute(usedDatabase, 
metaData, queryContext, (sql, statement) -> ((PreparedStatement) 
statement).execute(),
                     (StatementAddCallback<PreparedStatement>) 
this::addStatements, this::replay);
@@ -248,7 +253,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
         if (null != currentResultSet) {
             return currentResultSet;
         }
-        driverExecutorFacade.getResultSet(usedDatabase, sqlStatementContext, 
this, statements).ifPresent(optional -> currentResultSet = optional);
+        driverExecutorFacade.getResultSet(usedDatabase, queryContext, this, 
statements).ifPresent(optional -> currentResultSet = optional);
         if (null == columnLabelAndIndexMap && currentResultSet instanceof 
ShardingSphereResultSet) {
             columnLabelAndIndexMap = ((ShardingSphereResultSet) 
currentResultSet).getColumnLabelAndIndexMap();
         }
@@ -315,6 +320,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     public void addBatch() {
         currentResultSet = null;
         QueryContext queryContext = createQueryContext();
+        this.queryContext = queryContext;
         executeBatchExecutor.addBatch(queryContext, usedDatabase);
         findGeneratedKey().ifPresent(optional -> 
generatedValues.addAll(optional.getGeneratedValues()));
         clearParameters();
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index e18139b6938..e9a96a18a15 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -82,7 +82,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     
     private String usedDatabaseName;
     
-    private SQLStatementContext sqlStatementContext;
+    private QueryContext queryContext;
     
     private boolean returnGeneratedKeys;
     
@@ -263,9 +263,9 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     
     private void prepareExecute(final QueryContext queryContext) throws 
SQLException {
         
handleAutoCommitBeforeExecution(queryContext.getSqlStatementContext().getSqlStatement(),
 connection);
-        sqlStatementContext = queryContext.getSqlStatementContext();
-        ShardingSpherePreconditions.checkNotNull(sqlStatementContext, () -> 
new IllegalStateException("Statement context can not be null"));
-        usedDatabaseName = 
sqlStatementContext.getTablesContext().getDatabaseName().orElse(connection.getCurrentDatabaseName());
+        this.queryContext = queryContext;
+        ShardingSpherePreconditions.checkNotNull(this.queryContext, () -> new 
IllegalStateException("Query context can not be null"));
+        usedDatabaseName = 
queryContext.getSqlStatementContext().getTablesContext().getDatabaseName().orElse(connection.getCurrentDatabaseName());
         
connection.getDatabaseConnectionManager().getConnectionContext().setCurrentDatabaseName(connection.getCurrentDatabaseName());
         clearStatements();
     }
@@ -303,7 +303,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
         if (null != currentResultSet) {
             return currentResultSet;
         }
-        
driverExecutorFacade.getResultSet(metaData.getDatabase(usedDatabaseName), 
sqlStatementContext, this, statements).ifPresent(optional -> currentResultSet = 
optional);
+        
driverExecutorFacade.getResultSet(metaData.getDatabase(usedDatabaseName), 
queryContext, this, statements).ifPresent(optional -> currentResultSet = 
optional);
         return currentResultSet;
     }
     
@@ -327,7 +327,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     @Override
     public boolean isAccumulate() {
         for (DataNodeRuleAttribute each : 
metaData.getDatabase(usedDatabaseName).getRuleMetaData().getAttributes(DataNodeRuleAttribute.class))
 {
-            if 
(each.isNeedAccumulate(sqlStatementContext.getTablesContext().getTableNames())) 
{
+            if 
(each.isNeedAccumulate(queryContext.getSqlStatementContext().getTablesContext().getTableNames()))
 {
                 return true;
             }
         }
@@ -357,6 +357,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     }
     
     private Optional<GeneratedKeyContext> findGeneratedKey() {
+        SQLStatementContext sqlStatementContext = 
queryContext.getSqlStatementContext();
         return sqlStatementContext instanceof InsertStatementContext ? 
((InsertStatementContext) sqlStatementContext).getGeneratedKeyContext() : 
Optional.empty();
     }
     
diff --git 
a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/StatementAdapterTest.java
 
b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/StatementAdapterTest.java
index 5c97c81e41c..63c16c80780 100644
--- 
a/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/StatementAdapterTest.java
+++ 
b/jdbc/src/test/java/org/apache/shardingsphere/driver/jdbc/adapter/StatementAdapterTest.java
@@ -21,10 +21,10 @@ import lombok.SneakyThrows;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
 import 
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement;
-import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 import 
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
@@ -267,6 +267,6 @@ class StatementAdapterTest {
     
     @SneakyThrows(ReflectiveOperationException.class)
     private void setExecutionContext(final ShardingSphereStatement statement) {
-        
Plugins.getMemberAccessor().set(ShardingSphereStatement.class.getDeclaredField("sqlStatementContext"),
 statement, mock(SQLStatementContext.class));
+        
Plugins.getMemberAccessor().set(ShardingSphereStatement.class.getDeclaredField("queryContext"),
 statement, mock(QueryContext.class));
     }
 }
diff --git 
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/implementor/EnumerableScanImplementor.java
 
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/implementor/EnumerableScanImplementor.java
index f854b5b8ba8..095ecad083f 100644
--- 
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/implementor/EnumerableScanImplementor.java
+++ 
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/implementor/EnumerableScanImplementor.java
@@ -123,7 +123,7 @@ public final class EnumerableScanImplementor implements 
ScanImplementor {
                 List<QueryResult> queryResults =
                         
executorContext.getJdbcExecutor().execute(executionGroupContext, 
executorContext.getCallback()).stream().map(QueryResult.class::cast).collect(Collectors.toList());
                 MergeEngine mergeEngine = new 
MergeEngine(queryContext.getMetaData(), database, 
queryContext.getMetaData().getProps(), queryContext.getConnectionContext());
-                MergedResult mergedResult = mergeEngine.merge(queryResults, 
queryContext.getSqlStatementContext());
+                MergedResult mergedResult = mergeEngine.merge(queryResults, 
queryContext);
                 Collection<Statement> statements = 
getStatements(executionGroupContext.getInputGroups());
                 return new JDBCDataRowEnumerator(mergedResult, 
queryResults.get(0).getMetaData(), statements);
             }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseProxyConnector.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseProxyConnector.java
index 6f9d898d5e9..e1d7575157c 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseProxyConnector.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseProxyConnector.java
@@ -292,7 +292,7 @@ public final class StandardDatabaseProxyConnector 
implements DatabaseProxyConnec
     
     private QueryResponseHeader processExecuteQuery(final SQLStatementContext 
sqlStatementContext, final List<QueryResult> queryResults, final QueryResult 
queryResultSample) throws SQLException {
         queryHeaders = createQueryHeaders(sqlStatementContext, 
queryResultSample);
-        mergedResult = mergeQuery(sqlStatementContext, queryResults);
+        mergedResult = mergeQuery(queryResults);
         return new QueryResponseHeader(queryHeaders);
     }
     
@@ -319,10 +319,10 @@ public final class StandardDatabaseProxyConnector 
implements DatabaseProxyConnec
                 : 
queryHeaderBuilderEngine.build(queryResultSample.getMetaData(), database, 
columnIndex);
     }
     
-    private MergedResult mergeQuery(final SQLStatementContext 
sqlStatementContext, final List<QueryResult> queryResults) throws SQLException {
+    private MergedResult mergeQuery(final List<QueryResult> queryResults) 
throws SQLException {
         MergeEngine mergeEngine = new 
MergeEngine(contextManager.getMetaDataContexts().getMetaData(),
                 database, 
contextManager.getMetaDataContexts().getMetaData().getProps(), 
databaseConnectionManager.getConnectionSession().getConnectionContext());
-        return mergeEngine.merge(queryResults, sqlStatementContext);
+        return mergeEngine.merge(queryResults, queryContext);
     }
     
     private UpdateResponseHeader processExecuteUpdate(final 
Collection<UpdateResult> updateResults) {


Reply via email to