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

chengzhang 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 b5ca7fa4162 Minor refactor for AbstractExecutionPrepareEngine (#37205)
b5ca7fa4162 is described below

commit b5ca7fa4162d2515e9e3fdd3296234ba3f2a50b4
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Fri Nov 28 13:55:47 2025 +0800

    Minor refactor for AbstractExecutionPrepareEngine (#37205)
---
 .../sql/prepare/AbstractExecutionPrepareEngine.java        |  9 +++++----
 .../infra/executor/sql/prepare/ExecutionPrepareEngine.java | 10 +++++-----
 .../infra/rewrite/engine/RouteSQLRewriteEngine.java        | 14 ++++++++------
 .../shardingsphere/infra/rewrite/SQLRewriteEntryTest.java  |  2 +-
 .../infra/rewrite/engine/RouteSQLRewriteEngineTest.java    |  4 ++--
 .../preparedstatement/DriverExecuteBatchExecutor.java      |  2 +-
 .../pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java   |  2 +-
 .../jdbc/DriverJDBCPushDownExecuteQueryExecutor.java       |  2 +-
 .../jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java      |  2 +-
 .../pushdown/raw/DriverRawPushDownExecuteExecutor.java     |  2 +-
 .../raw/DriverRawPushDownExecuteQueryExecutor.java         |  2 +-
 .../raw/DriverRawPushDownExecuteUpdateExecutor.java        |  2 +-
 .../enumerable/implementor/EnumerableScanImplementor.java  |  2 +-
 .../proxy/backend/connector/ProxySQLExecutor.java          |  4 ++--
 .../query/MySQLMultiStatementsProxyBackendHandler.java     |  2 +-
 .../extended/PostgreSQLBatchedStatementsExecutor.java      |  2 +-
 16 files changed, 33 insertions(+), 30 deletions(-)

diff --git 
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/AbstractExecutionPrepareEngine.java
 
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/AbstractExecutionPrepareEngine.java
index 63f0416ebfd..e187dd79c62 100644
--- 
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/AbstractExecutionPrepareEngine.java
+++ 
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/AbstractExecutionPrepareEngine.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
 import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
 import 
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
 import 
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
+import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
@@ -57,13 +58,13 @@ public abstract class AbstractExecutionPrepareEngine<T> 
implements ExecutionPrep
     }
     
     @Override
-    public final ExecutionGroupContext<T> prepare(final String databaseName, 
final RouteContext routeContext, final Collection<ExecutionUnit> executionUnits,
+    public final ExecutionGroupContext<T> prepare(final String databaseName, 
final ExecutionContext executionContext, final Collection<ExecutionUnit> 
executionUnits,
                                                   final 
ExecutionGroupReportContext reportContext) throws SQLException {
-        return prepare(databaseName, routeContext, Collections.emptyMap(), 
executionUnits, reportContext);
+        return prepare(databaseName, executionContext, Collections.emptyMap(), 
executionUnits, reportContext);
     }
     
     @Override
-    public final ExecutionGroupContext<T> prepare(final String databaseName, 
final RouteContext routeContext, final Map<String, Integer> connectionOffsets,
+    public final ExecutionGroupContext<T> prepare(final String databaseName, 
final ExecutionContext executionContext, final Map<String, Integer> 
connectionOffsets,
                                                   final 
Collection<ExecutionUnit> executionUnits, final ExecutionGroupReportContext 
reportContext) throws SQLException {
         Collection<ExecutionGroup<T>> result = new LinkedList<>();
         for (Entry<String, List<ExecutionUnit>> entry : 
aggregateExecutionUnitGroups(executionUnits).entrySet()) {
@@ -73,7 +74,7 @@ public abstract class AbstractExecutionPrepareEngine<T> 
implements ExecutionPrep
             ConnectionMode connectionMode = maxConnectionsSizePerQuery < 
groupedExecutionUnits.size() ? ConnectionMode.CONNECTION_STRICTLY : 
ConnectionMode.MEMORY_STRICTLY;
             result.addAll(group(databaseName, dataSourceName, 
connectionOffsets.getOrDefault(dataSourceName, 0), executionUnitGroups, 
connectionMode));
         }
-        return decorate(routeContext, result, reportContext);
+        return decorate(executionContext.getRouteContext(), result, 
reportContext);
     }
     
     private List<List<ExecutionUnit>> group(final List<ExecutionUnit> 
sqlUnits) {
diff --git 
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/ExecutionPrepareEngine.java
 
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/ExecutionPrepareEngine.java
index 5d8e3e46e3e..22d258bd8ae 100644
--- 
a/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/ExecutionPrepareEngine.java
+++ 
b/infra/executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/prepare/ExecutionPrepareEngine.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.infra.executor.sql.prepare;
 
 import 
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
 import 
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupReportContext;
+import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
-import org.apache.shardingsphere.infra.route.context.RouteContext;
 
 import java.sql.SQLException;
 import java.util.Collection;
@@ -37,25 +37,25 @@ public interface ExecutionPrepareEngine<T> {
      * Prepare to execute.
      *
      * @param databaseName database name
-     * @param routeContext route context
+     * @param executionContext execution context
      * @param executionUnits execution units
      * @param reportContext report context
      * @return execution group context
      * @throws SQLException SQL exception
      */
-    ExecutionGroupContext<T> prepare(String databaseName, RouteContext 
routeContext, Collection<ExecutionUnit> executionUnits, 
ExecutionGroupReportContext reportContext) throws SQLException;
+    ExecutionGroupContext<T> prepare(String databaseName, ExecutionContext 
executionContext, Collection<ExecutionUnit> executionUnits, 
ExecutionGroupReportContext reportContext) throws SQLException;
     
     /**
      * Prepare to execute.
      *
      * @param databaseName database name
-     * @param routeContext route context
+     * @param executionContext execution context
      * @param connectionOffsets execution offsets
      * @param executionUnits execution units
      * @param reportContext report context
      * @return execution group context
      * @throws SQLException SQL exception
      */
-    ExecutionGroupContext<T> prepare(String databaseName, RouteContext 
routeContext, Map<String, Integer> connectionOffsets, Collection<ExecutionUnit> 
executionUnits,
+    ExecutionGroupContext<T> prepare(String databaseName, ExecutionContext 
executionContext, Map<String, Integer> connectionOffsets, 
Collection<ExecutionUnit> executionUnits,
                                      ExecutionGroupReportContext 
reportContext) throws SQLException;
 }
diff --git 
a/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
 
b/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
index 0c7b3248cad..17e03cc1a55 100644
--- 
a/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
+++ 
b/infra/rewrite/core/src/main/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngine.java
@@ -40,6 +40,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.util.SQLUtils;
 import org.apache.shardingsphere.sqltranslator.context.SQLTranslatorContext;
 import org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashMap;
@@ -48,6 +49,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
+import java.util.concurrent.ThreadLocalRandom;
 
 /**
  * Route SQL rewrite engine.
@@ -76,10 +78,10 @@ public final class RouteSQLRewriteEngine {
     
     private Map<RouteUnit, SQLRewriteUnit> createSQLRewriteUnits(final 
SQLRewriteContext sqlRewriteContext, final RouteContext routeContext) {
         Map<RouteUnit, SQLRewriteUnit> result = new 
LinkedHashMap<>(routeContext.getRouteUnits().size(), 1F);
-        for (Entry<String, Collection<RouteUnit>> entry : 
aggregateRouteUnitGroups(routeContext.getRouteUnits()).entrySet()) {
-            Collection<RouteUnit> routeUnits = entry.getValue();
+        for (Entry<String, List<RouteUnit>> entry : 
aggregateRouteUnitGroups(routeContext.getRouteUnits()).entrySet()) {
+            List<RouteUnit> routeUnits = entry.getValue();
             if 
(isNeedAggregateRewrite(sqlRewriteContext.getSqlStatementContext(), 
routeUnits)) {
-                result.put(routeUnits.iterator().next(), 
createSQLRewriteUnit(sqlRewriteContext, routeContext, routeUnits));
+                
result.put(routeUnits.get(ThreadLocalRandom.current().nextInt(routeUnits.size())),
 createSQLRewriteUnit(sqlRewriteContext, routeContext, routeUnits));
             } else {
                 for (RouteUnit each : routeUnits) {
                     result.put(each, createSQLRewriteUnit(sqlRewriteContext, 
routeContext, each));
@@ -89,10 +91,10 @@ public final class RouteSQLRewriteEngine {
         return result;
     }
     
-    private Map<String, Collection<RouteUnit>> aggregateRouteUnitGroups(final 
Collection<RouteUnit> routeUnits) {
-        Map<String, Collection<RouteUnit>> result = new 
LinkedHashMap<>(routeUnits.size(), 1F);
+    private Map<String, List<RouteUnit>> aggregateRouteUnitGroups(final 
Collection<RouteUnit> routeUnits) {
+        Map<String, List<RouteUnit>> result = new 
LinkedHashMap<>(routeUnits.size(), 1F);
         for (RouteUnit each : routeUnits) {
-            result.computeIfAbsent(each.getDataSourceMapper().getActualName(), 
unused -> new LinkedList<>()).add(each);
+            result.computeIfAbsent(each.getDataSourceMapper().getActualName(), 
unused -> new ArrayList<>()).add(each);
         }
         return result;
     }
diff --git 
a/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntryTest.java
 
b/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntryTest.java
index b170f3b46d3..d39b68f4754 100644
--- 
a/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntryTest.java
+++ 
b/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntryTest.java
@@ -71,7 +71,7 @@ class SQLRewriteEntryTest {
     }
     
     private QueryContext createQueryContext() {
-        QueryContext result = mock(QueryContext.class);
+        QueryContext result = mock(QueryContext.class, RETURNS_DEEP_STUBS);
         when(result.getSql()).thenReturn("SELECT ?");
         when(result.getParameters()).thenReturn(Collections.singletonList(1));
         SQLStatementContext sqlStatementContext = 
mock(SQLStatementContext.class, RETURNS_DEEP_STUBS);
diff --git 
a/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
 
b/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
index 1f3fd3b7eb0..a7b263423d9 100644
--- 
a/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
+++ 
b/infra/rewrite/core/src/test/java/org/apache/shardingsphere/infra/rewrite/engine/RouteSQLRewriteEngineTest.java
@@ -106,8 +106,8 @@ class RouteSQLRewriteEngineTest {
         RouteSQLRewriteResult actual = new RouteSQLRewriteEngine(
                 new SQLTranslatorRule(new 
DefaultSQLTranslatorRuleConfigurationBuilder().build()), database, 
mock(RuleMetaData.class)).rewrite(sqlRewriteContext, routeContext, 
queryContext);
         assertThat(actual.getSqlRewriteUnits().size(), is(1));
-        assertThat(actual.getSqlRewriteUnits().get(firstRouteUnit).getSql(), 
is("SELECT ? UNION ALL SELECT ?"));
-        
assertThat(actual.getSqlRewriteUnits().get(firstRouteUnit).getParameters(), 
is(Arrays.asList(1, 1)));
+        
assertThat(actual.getSqlRewriteUnits().values().iterator().next().getSql(), 
is("SELECT ? UNION ALL SELECT ?"));
+        
assertThat(actual.getSqlRewriteUnits().values().iterator().next().getParameters(),
 is(Arrays.asList(1, 1)));
     }
     
     @Test
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/batch/preparedstatement/DriverExecuteBatchExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/batch/preparedstatement/DriverExecuteBatchExecutor.java
index 959b6613b38..5fb522bfd5a 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/batch/preparedstatement/DriverExecuteBatchExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/batch/preparedstatement/DriverExecuteBatchExecutor.java
@@ -140,7 +140,7 @@ public final class DriverExecuteBatchExecutor {
             executionUnits.add(executionUnit);
         }
         batchExecutor.init(prepareEngine
-                .prepare(database.getName(), 
executionContext.getRouteContext(), executionUnits, new 
ExecutionGroupReportContext(connection.getProcessId(), database.getName())));
+                .prepare(database.getName(), executionContext, executionUnits, 
new ExecutionGroupReportContext(connection.getProcessId(), 
database.getName())));
         setBatchParameters(replayCallback);
     }
     
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 f735bfd13b9..1397284475a 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
@@ -95,7 +95,7 @@ public final class DriverJDBCPushDownExecuteExecutor {
     @SuppressWarnings({"rawtypes", "unchecked"})
     private boolean doExecute(final ShardingSphereDatabase database, final 
ExecutionContext executionContext, final 
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine,
                               final StatementExecuteCallback executeCallback, 
final StatementAddCallback addCallback, final StatementReplayCallback 
replayCallback) throws SQLException {
-        ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = 
prepareEngine.prepare(database.getName(), executionContext.getRouteContext(), 
executionContext.getExecutionUnits(),
+        ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = 
prepareEngine.prepare(database.getName(), executionContext, 
executionContext.getExecutionUnits(),
                 new ExecutionGroupReportContext(connection.getProcessId(), 
database.getName(), 
connection.getDatabaseConnectionManager().getConnectionContext().getGrantee()));
         for (ExecutionGroup<JDBCExecutionUnit> each : 
executionGroupContext.getInputGroups()) {
             addCallback.add(getStatements(each), 
JDBCDriverType.PREPARED_STATEMENT == prepareEngine.getType() ? 
getParameterSets(each) : Collections.emptyList());
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteQueryExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteQueryExecutor.java
index 823f7d0f2c9..73ccd45fd1d 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteQueryExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteQueryExecutor.java
@@ -102,7 +102,7 @@ public final class DriverJDBCPushDownExecuteQueryExecutor {
                                               final StatementAddCallback 
addCallback, final StatementReplayCallback replayCallback) throws SQLException {
         statements.clear();
         ExecutionContext executionContext = new 
KernelProcessor().generateExecutionContext(queryContext, 
metaData.getGlobalRuleMetaData(), props);
-        ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = 
prepareEngine.prepare(database.getName(), executionContext.getRouteContext(), 
executionContext.getExecutionUnits(),
+        ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = 
prepareEngine.prepare(database.getName(), executionContext, 
executionContext.getExecutionUnits(),
                 new ExecutionGroupReportContext(processId, database.getName(), 
connectionContext.getGrantee()));
         for (ExecutionGroup<JDBCExecutionUnit> each : 
executionGroupContext.getInputGroups()) {
             Collection<Statement> statements = getStatements(each);
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java
index 84264722dca..b17b38ddc8f 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java
@@ -96,7 +96,7 @@ public final class DriverJDBCPushDownExecuteUpdateExecutor {
     @SuppressWarnings({"rawtypes", "unchecked"})
     private int doExecuteUpdate(final ShardingSphereDatabase database, final 
ExecutionContext executionContext, final 
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine,
                                 final StatementExecuteUpdateCallback 
updateCallback, final StatementAddCallback addCallback, final 
StatementReplayCallback replayCallback) throws SQLException {
-        ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = 
prepareEngine.prepare(database.getName(), executionContext.getRouteContext(), 
executionContext.getExecutionUnits(),
+        ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = 
prepareEngine.prepare(database.getName(), executionContext, 
executionContext.getExecutionUnits(),
                 new ExecutionGroupReportContext(processId, database.getName(), 
connection.getDatabaseConnectionManager().getConnectionContext().getGrantee()));
         for (ExecutionGroup<JDBCExecutionUnit> each : 
executionGroupContext.getInputGroups()) {
             addCallback.add(getStatements(each), 
JDBCDriverType.PREPARED_STATEMENT == prepareEngine.getType() ? 
getParameterSets(each) : Collections.emptyList());
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteExecutor.java
index 9c36058add1..bc0d1f97904 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteExecutor.java
@@ -56,7 +56,7 @@ public final class DriverRawPushDownExecuteExecutor {
     public boolean execute(final ShardingSphereDatabase database, final 
ExecutionContext executionContext) throws SQLException {
         int maxConnectionsSizePerQuery = 
metaData.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
         ExecutionGroupContext<RawSQLExecutionUnit> executionGroupContext = new 
RawExecutionPrepareEngine(maxConnectionsSizePerQuery, 
database.getRuleMetaData().getRules())
-                .prepare(database.getName(), 
executionContext.getRouteContext(), executionContext.getExecutionUnits(),
+                .prepare(database.getName(), executionContext, 
executionContext.getExecutionUnits(),
                         new 
ExecutionGroupReportContext(connection.getProcessId(), database.getName(), 
connection.getDatabaseConnectionManager().getConnectionContext().getGrantee()));
         return rawExecutor.execute(executionGroupContext, 
executionContext.getQueryContext(), new 
RawSQLExecutorCallback()).iterator().next() instanceof QueryResult;
     }
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteQueryExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteQueryExecutor.java
index a115f340f22..0d339edfedd 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteQueryExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteQueryExecutor.java
@@ -92,6 +92,6 @@ public final class DriverRawPushDownExecuteQueryExecutor {
     private ExecutionGroupContext<RawSQLExecutionUnit> 
createRawExecutionGroupContext(final ShardingSphereDatabase database, final 
ExecutionContext executionContext) throws SQLException {
         int maxConnectionsSizePerQuery = 
props.<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
         return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery, 
database.getRuleMetaData().getRules()).prepare(database.getName(),
-                executionContext.getRouteContext(), 
executionContext.getExecutionUnits(), new 
ExecutionGroupReportContext(processId, database.getName(), 
connectionContext.getGrantee()));
+                executionContext, executionContext.getExecutionUnits(), new 
ExecutionGroupReportContext(processId, database.getName(), 
connectionContext.getGrantee()));
     }
 }
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteUpdateExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteUpdateExecutor.java
index 21db977e713..9e28d261589 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteUpdateExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/raw/DriverRawPushDownExecuteUpdateExecutor.java
@@ -77,7 +77,7 @@ public final class DriverRawPushDownExecuteUpdateExecutor {
     
     private ExecutionGroupContext<RawSQLExecutionUnit> 
createRawExecutionGroupContext(final ShardingSphereDatabase database, final 
ExecutionContext executionContext) throws SQLException {
         int maxConnectionsSizePerQuery = 
props.<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
-        return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery, 
database.getRuleMetaData().getRules()).prepare(database.getName(), 
executionContext.getRouteContext(),
+        return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery, 
database.getRuleMetaData().getRules()).prepare(database.getName(), 
executionContext,
                 executionContext.getExecutionUnits(), new 
ExecutionGroupReportContext(processId, database.getName(), 
connection.getDatabaseConnectionManager().getConnectionContext().getGrantee()));
     }
 }
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 a0b1c32ab57..fadc6b6b123 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
@@ -132,7 +132,7 @@ public final class EnumerableScanImplementor implements 
ScanImplementor {
     
     private ExecutionGroupContext<JDBCExecutionUnit> prepare(final 
ShardingSphereDatabase database, final ExecutionContext executionContext) 
throws SQLException {
         // TODO pass grantee from proxy and jdbc adapter
-        return executorContext.getPrepareEngine().prepare(database.getName(), 
executionContext.getRouteContext(), executorContext.getConnectionOffsets(), 
executionContext.getExecutionUnits(),
+        return executorContext.getPrepareEngine().prepare(database.getName(), 
executionContext, executorContext.getConnectionOffsets(), 
executionContext.getExecutionUnits(),
                 new 
ExecutionGroupReportContext(executorContext.getProcessId(), 
database.getName()));
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
index ab53b6b9ee6..9c6fa638906 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
@@ -205,7 +205,7 @@ public final class ProxySQLExecutor {
         ExecutionGroupContext<RawSQLExecutionUnit> executionGroupContext;
         try {
             String databaseName = 
databaseConnectionManager.getConnectionSession().getUsedDatabaseName();
-            executionGroupContext = prepareEngine.prepare(databaseName, 
executionContext.getRouteContext(), executionContext.getExecutionUnits(),
+            executionGroupContext = prepareEngine.prepare(databaseName, 
executionContext, executionContext.getExecutionUnits(),
                     new 
ExecutionGroupReportContext(databaseConnectionManager.getConnectionSession().getProcessId(),
                             databaseName, 
databaseConnectionManager.getConnectionSession().getConnectionContext().getGrantee()));
         } catch (final SQLException ex) {
@@ -224,7 +224,7 @@ public final class ProxySQLExecutor {
                 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData());
         ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext;
         try {
-            executionGroupContext = prepareEngine.prepare(databaseName, 
executionContext.getRouteContext(), executionContext.getExecutionUnits(),
+            executionGroupContext = prepareEngine.prepare(databaseName, 
executionContext, executionContext.getExecutionUnits(),
                     new 
ExecutionGroupReportContext(databaseConnectionManager.getConnectionSession().getProcessId(),
                             databaseName, 
databaseConnectionManager.getConnectionSession().getConnectionContext().getGrantee()));
         } catch (final SQLException ex) {
diff --git 
a/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsProxyBackendHandler.java
 
b/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsProxyBackendHandler.java
index 9088b6fc117..0e8301e94fc 100644
--- 
a/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsProxyBackendHandler.java
+++ 
b/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsProxyBackendHandler.java
@@ -120,7 +120,7 @@ public final class MySQLMultiStatementsProxyBackendHandler 
implements ProxyBacke
     private ResponseHeader executeMultiStatements(final 
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine) 
throws SQLException {
         Collection<ExecutionContext> executionContexts = 
createExecutionContexts();
         ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext =
-                prepareEngine.prepare(connectionSession.getUsedDatabaseName(), 
executionContexts.iterator().next().getRouteContext(), createExecutionUnits(),
+                prepareEngine.prepare(connectionSession.getUsedDatabaseName(), 
executionContexts.iterator().next(), createExecutionUnits(),
                         new 
ExecutionGroupReportContext(connectionSession.getProcessId(), 
connectionSession.getUsedDatabaseName(), 
connectionSession.getConnectionContext().getGrantee()));
         batchExecutor.init(executionGroupContext);
         executeAddBatch(executionGroupContext);
diff --git 
a/proxy/frontend/dialect/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
 
b/proxy/frontend/dialect/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
index 998b594ac2e..0bd37546e66 100644
--- 
a/proxy/frontend/dialect/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
+++ 
b/proxy/frontend/dialect/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutor.java
@@ -154,7 +154,7 @@ public final class PostgreSQLBatchedStatementsExecutor {
         int maxConnectionsSizePerQuery = 
metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
         DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> 
prepareEngine = new 
DriverExecutionPrepareEngine<>(JDBCDriverType.PREPARED_STATEMENT, 
maxConnectionsSizePerQuery,
                 connectionSession.getDatabaseConnectionManager(), 
(JDBCBackendStatement) connectionSession.getStatementManager(), new 
StatementOption(false), rules, metaDataContexts.getMetaData());
-        executionGroupContext = 
prepareEngine.prepare(connectionSession.getUsedDatabaseName(), 
anyExecutionContext.getRouteContext(), executionUnitParams.keySet(),
+        executionGroupContext = 
prepareEngine.prepare(connectionSession.getUsedDatabaseName(), 
anyExecutionContext, executionUnitParams.keySet(),
                 new 
ExecutionGroupReportContext(connectionSession.getProcessId(), 
connectionSession.getUsedDatabaseName(), 
connectionSession.getConnectionContext().getGrantee()));
         for (ExecutionGroup<JDBCExecutionUnit> eachGroup : 
executionGroupContext.getInputGroups()) {
             for (JDBCExecutionUnit each : eachGroup.getInputs()) {

Reply via email to