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()) {