You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2024/06/10 08:49:58 UTC
(shardingsphere) branch master updated: Refactor DriverExecutorFacade (#31646)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 0ebe0907e0a Refactor DriverExecutorFacade (#31646)
0ebe0907e0a is described below
commit 0ebe0907e0a78c8445d570b2545af9327d68e19c
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Jun 10 16:49:51 2024 +0800
Refactor DriverExecutorFacade (#31646)
---
.../driver/executor/engine/DriverExecuteQueryExecutor.java | 6 ++++--
.../driver/executor/engine/DriverExecuteUpdateExecutor.java | 7 ++++---
.../driver/executor/engine/DriverExecutorFacade.java | 7 ++++---
.../engine/pushdown/DriverPushDownExecuteQueryExecutor.java | 10 +++++++---
.../engine/pushdown/DriverPushDownExecuteUpdateExecutor.java | 10 +++++++---
.../jdbc/core/statement/ShardingSpherePreparedStatement.java | 3 ++-
.../driver/jdbc/core/statement/ShardingSphereStatement.java | 3 ++-
7 files changed, 30 insertions(+), 16 deletions(-)
diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteQueryExecutor.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteQueryExecutor.java
index c0d1bf9e555..57d50dcd667 100644
--- a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteQueryExecutor.java
+++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteQueryExecutor.java
@@ -29,6 +29,7 @@ import org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecuti
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.JDBCDriverType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.sqlfederation.engine.SQLFederationEngine;
import org.apache.shardingsphere.sqlfederation.executor.context.SQLFederationContext;
@@ -59,11 +60,12 @@ public final class DriverExecuteQueryExecutor {
private final SQLFederationEngine sqlFederationEngine;
- public DriverExecuteQueryExecutor(final ShardingSphereConnection connection, final ShardingSphereMetaData metaData, final JDBCExecutor jdbcExecutor, final RawExecutor rawExecutor,
+ public DriverExecuteQueryExecutor(final ShardingSphereConnection connection, final ShardingSphereMetaData metaData, final Grantee grantee,
+ final JDBCExecutor jdbcExecutor, final RawExecutor rawExecutor,
final TrafficExecutor trafficExecutor, final SQLFederationEngine sqlFederationEngine) {
this.connection = connection;
this.metaData = metaData;
- pushDownExecuteQueryExecutor = new DriverPushDownExecuteQueryExecutor(connection, metaData, jdbcExecutor, rawExecutor);
+ pushDownExecuteQueryExecutor = new DriverPushDownExecuteQueryExecutor(connection, metaData, grantee, jdbcExecutor, rawExecutor);
this.trafficExecutor = trafficExecutor;
this.sqlFederationEngine = sqlFederationEngine;
}
diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteUpdateExecutor.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteUpdateExecutor.java
index b607dbb70e9..e6af003b241 100644
--- a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteUpdateExecutor.java
+++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecuteUpdateExecutor.java
@@ -31,6 +31,7 @@ import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.RawExecut
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.traffic.executor.TrafficExecutor;
import org.apache.shardingsphere.traffic.rule.TrafficRule;
@@ -53,11 +54,11 @@ public final class DriverExecuteUpdateExecutor {
private final TrafficExecutor trafficExecutor;
- public DriverExecuteUpdateExecutor(final ShardingSphereConnection connection, final ShardingSphereMetaData metaData, final JDBCExecutor jdbcExecutor, final RawExecutor rawExecutor,
- final TrafficExecutor trafficExecutor) {
+ public DriverExecuteUpdateExecutor(final ShardingSphereConnection connection, final ShardingSphereMetaData metaData,
+ final Grantee grantee, final JDBCExecutor jdbcExecutor, final RawExecutor rawExecutor, final TrafficExecutor trafficExecutor) {
this.connection = connection;
this.metaData = metaData;
- pushDownExecuteUpdateExecutor = new DriverPushDownExecuteUpdateExecutor(connection, metaData, jdbcExecutor, rawExecutor);
+ pushDownExecuteUpdateExecutor = new DriverPushDownExecuteUpdateExecutor(connection, metaData, grantee, jdbcExecutor, rawExecutor);
this.trafficExecutor = trafficExecutor;
}
diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecutorFacade.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecutorFacade.java
index 99bb49f915c..eaf50c34251 100644
--- a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecutorFacade.java
+++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/DriverExecutorFacade.java
@@ -33,6 +33,7 @@ import org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecuti
import org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.sqlfederation.engine.SQLFederationEngine;
import org.apache.shardingsphere.traffic.executor.TrafficExecutor;
@@ -68,7 +69,7 @@ public final class DriverExecutorFacade implements AutoCloseable {
private final DriverExecuteExecutor executeExecutor;
public DriverExecutorFacade(final ShardingSphereConnection connection, final StatementOption statementOption, final StatementManager statementManager,
- final JDBCExecutor jdbcExecutor, final String jdbcDriverType) {
+ final JDBCExecutor jdbcExecutor, final String jdbcDriverType, final Grantee grantee) {
this.connection = connection;
this.statementOption = statementOption;
this.statementManager = statementManager;
@@ -78,8 +79,8 @@ public final class DriverExecutorFacade implements AutoCloseable {
ShardingSphereMetaData metaData = connection.getContextManager().getMetaDataContexts().getMetaData();
String schemaName = new DatabaseTypeRegistry(metaData.getDatabase(connection.getDatabaseName()).getProtocolType()).getDefaultSchemaName(connection.getDatabaseName());
sqlFederationEngine = new SQLFederationEngine(connection.getDatabaseName(), schemaName, metaData, connection.getContextManager().getMetaDataContexts().getStatistics(), jdbcExecutor);
- queryExecutor = new DriverExecuteQueryExecutor(connection, metaData, jdbcExecutor, rawExecutor, trafficExecutor, sqlFederationEngine);
- updateExecutor = new DriverExecuteUpdateExecutor(connection, metaData, jdbcExecutor, rawExecutor, trafficExecutor);
+ queryExecutor = new DriverExecuteQueryExecutor(connection, metaData, grantee, jdbcExecutor, rawExecutor, trafficExecutor, sqlFederationEngine);
+ updateExecutor = new DriverExecuteUpdateExecutor(connection, metaData, grantee, jdbcExecutor, rawExecutor, trafficExecutor);
executeExecutor = new DriverExecuteExecutor(connection, metaData, jdbcExecutor, rawExecutor, trafficExecutor, sqlFederationEngine);
}
diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/DriverPushDownExecuteQueryExecutor.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/DriverPushDownExecuteQueryExecutor.java
index 3b13ef7deda..820d0c2bccb 100644
--- a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/DriverPushDownExecuteQueryExecutor.java
+++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/DriverPushDownExecuteQueryExecutor.java
@@ -72,17 +72,21 @@ public final class DriverPushDownExecuteQueryExecutor {
private final ConfigurationProperties props;
+ private final Grantee grantee;
+
private final JDBCExecutor jdbcExecutor;
private final RawExecutor rawExecutor;
private final Collection<Statement> statements;
- public DriverPushDownExecuteQueryExecutor(final ShardingSphereConnection connection, final ShardingSphereMetaData metaData, final JDBCExecutor jdbcExecutor, final RawExecutor rawExecutor) {
+ public DriverPushDownExecuteQueryExecutor(final ShardingSphereConnection connection, final ShardingSphereMetaData metaData, final Grantee grantee,
+ final JDBCExecutor jdbcExecutor, final RawExecutor rawExecutor) {
connectionContext = connection.getDatabaseConnectionManager().getConnectionContext();
processId = connection.getProcessId();
globalRuleMetaData = metaData.getGlobalRuleMetaData();
props = metaData.getProps();
+ this.grantee = grantee;
this.jdbcExecutor = jdbcExecutor;
this.rawExecutor = rawExecutor;
statements = new LinkedList<>();
@@ -129,7 +133,7 @@ public final class DriverPushDownExecuteQueryExecutor {
final StatementAddCallback addCallback, final StatementReplayCallback replayCallback,
final ExecutionContext executionContext) throws SQLException {
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = prepareEngine.prepare(executionContext.getRouteContext(), executionContext.getExecutionUnits(),
- new ExecutionGroupReportContext(processId, database.getName(), new Grantee("", "")));
+ new ExecutionGroupReportContext(processId, database.getName(), grantee));
for (ExecutionGroup<JDBCExecutionUnit> each : executionGroupContext.getInputGroups()) {
Collection<Statement> statements = getStatements(each);
this.statements.addAll(statements);
@@ -169,6 +173,6 @@ public final class DriverPushDownExecuteQueryExecutor {
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(
- executionContext.getRouteContext(), executionContext.getExecutionUnits(), new ExecutionGroupReportContext(processId, database.getName(), new Grantee("", "")));
+ executionContext.getRouteContext(), executionContext.getExecutionUnits(), new ExecutionGroupReportContext(processId, database.getName(), grantee));
}
}
diff --git a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/DriverPushDownExecuteUpdateExecutor.java b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/DriverPushDownExecuteUpdateExecutor.java
index 954b3d91048..d0a0dd0ffc8 100644
--- a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/DriverPushDownExecuteUpdateExecutor.java
+++ b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/engine/pushdown/DriverPushDownExecuteUpdateExecutor.java
@@ -80,15 +80,19 @@ public final class DriverPushDownExecuteUpdateExecutor {
private final ConfigurationProperties props;
+ private final Grantee grantee;
+
private final JDBCExecutor jdbcExecutor;
private final RawExecutor rawExecutor;
- public DriverPushDownExecuteUpdateExecutor(final ShardingSphereConnection connection, final ShardingSphereMetaData metaData, final JDBCExecutor jdbcExecutor, final RawExecutor rawExecutor) {
+ public DriverPushDownExecuteUpdateExecutor(final ShardingSphereConnection connection, final ShardingSphereMetaData metaData, final Grantee grantee,
+ final JDBCExecutor jdbcExecutor, final RawExecutor rawExecutor) {
this.connection = connection;
processId = connection.getProcessId();
globalRuleMetaData = metaData.getGlobalRuleMetaData();
props = metaData.getProps();
+ this.grantee = grantee;
this.jdbcExecutor = jdbcExecutor;
this.rawExecutor = rawExecutor;
}
@@ -127,7 +131,7 @@ public final class DriverPushDownExecuteUpdateExecutor {
private int doExecuteJDBCUpdate(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(
- executionContext.getRouteContext(), executionContext.getExecutionUnits(), new ExecutionGroupReportContext(processId, database.getName(), new Grantee("", "")));
+ executionContext.getRouteContext(), executionContext.getExecutionUnits(), new ExecutionGroupReportContext(processId, database.getName(), grantee));
for (ExecutionGroup<JDBCExecutionUnit> each : executionGroupContext.getInputGroups()) {
addCallback.add(getStatements(each), JDBCDriverType.PREPARED_STATEMENT.equals(prepareEngine.getType()) ? getParameterSets(each) : Collections.emptyList());
}
@@ -229,6 +233,6 @@ public final class DriverPushDownExecuteUpdateExecutor {
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(
- executionContext.getRouteContext(), executionContext.getExecutionUnits(), new ExecutionGroupReportContext(processId, database.getName(), new Grantee("", "")));
+ executionContext.getRouteContext(), executionContext.getExecutionUnits(), new ExecutionGroupReportContext(processId, database.getName(), grantee));
}
}
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 173c3e02706..5a7b1f947fd 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
@@ -54,6 +54,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.metadata.database.rule.RuleMetaData;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.parser.SQLParserEngine;
import org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
import org.apache.shardingsphere.infra.rule.attribute.resoure.StorageConnectorReusableRuleAttribute;
@@ -165,7 +166,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
ShardingSphereDatabase database = metaData.getDatabase(databaseName);
statementManager = new StatementManager();
JDBCExecutor jdbcExecutor = new JDBCExecutor(connection.getContextManager().getExecutorEngine(), connection.getDatabaseConnectionManager().getConnectionContext());
- driverExecutorFacade = new DriverExecutorFacade(connection, statementOption, statementManager, jdbcExecutor, JDBCDriverType.PREPARED_STATEMENT);
+ driverExecutorFacade = new DriverExecutorFacade(connection, statementOption, statementManager, jdbcExecutor, JDBCDriverType.PREPARED_STATEMENT, new Grantee("", ""));
executeBatchExecutor = new DriverExecuteBatchExecutor(connection, metaData, statementOption, statementManager, database, jdbcExecutor);
statementsCacheable = isStatementsCacheable(database.getRuleMetaData());
selectContainsEnhancedTable = sqlStatementContext instanceof SelectStatementContext && ((SelectStatementContext) sqlStatementContext).isContainsEnhancedTable();
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 6dc40c0d474..d738b645cc6 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
@@ -51,6 +51,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.metadata.user.Grantee;
import org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.parser.rule.SQLParserRule;
@@ -113,7 +114,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
statementOption = new StatementOption(resultSetType, resultSetConcurrency, resultSetHoldability);
statementManager = new StatementManager();
JDBCExecutor jdbcExecutor = new JDBCExecutor(connection.getContextManager().getExecutorEngine(), connection.getDatabaseConnectionManager().getConnectionContext());
- driverExecutorFacade = new DriverExecutorFacade(connection, statementOption, statementManager, jdbcExecutor, JDBCDriverType.STATEMENT);
+ driverExecutorFacade = new DriverExecutorFacade(connection, statementOption, statementManager, jdbcExecutor, JDBCDriverType.STATEMENT, new Grantee("", ""));
batchStatementExecutor = new BatchStatementExecutor(this);
databaseName = connection.getDatabaseName();
}