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 b8d09e79833 Adjust SQLAuditEngine.audit on DriverExecuteUpdateExecutor
and DriverExecuteExecutor (#31641)
b8d09e79833 is described below
commit b8d09e798339d32bb9dd302fc93b5cd6e272eb73
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jun 9 18:00:15 2024 +0800
Adjust SQLAuditEngine.audit on DriverExecuteUpdateExecutor and
DriverExecuteExecutor (#31641)
* Adjust SQLAuditEngine.audit on DriverExecuteUpdateExecutor
* Adjust SQLAuditEngine.audit on DriverExecuteExecutor
---
.../driver/executor/engine/DriverExecuteExecutor.java | 17 ++++++-----------
.../executor/engine/DriverExecuteUpdateExecutor.java | 14 +++++---------
2 files changed, 11 insertions(+), 20 deletions(-)
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 b019c9b9067..a9d827c205e 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
@@ -18,13 +18,13 @@
package org.apache.shardingsphere.driver.executor.engine;
import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.driver.executor.callback.execute.StatementExecuteCallback;
+import
org.apache.shardingsphere.driver.executor.callback.add.StatementAddCallback;
import
org.apache.shardingsphere.driver.executor.callback.execute.ExecuteQueryCallback;
+import
org.apache.shardingsphere.driver.executor.callback.execute.StatementExecuteCallback;
import
org.apache.shardingsphere.driver.executor.callback.execute.impl.PreparedStatementExecuteQueryCallback;
import
org.apache.shardingsphere.driver.executor.callback.execute.impl.StatementExecuteQueryCallback;
-import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
-import
org.apache.shardingsphere.driver.executor.callback.add.StatementAddCallback;
import
org.apache.shardingsphere.driver.executor.callback.replay.StatementReplayCallback;
+import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.connection.kernel.KernelProcessor;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
@@ -50,7 +50,6 @@ import
org.apache.shardingsphere.infra.executor.sql.prepare.raw.RawExecutionPrep
import org.apache.shardingsphere.infra.executor.sql.process.ProcessEngine;
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.route.context.RouteUnit;
import
org.apache.shardingsphere.infra.rule.attribute.raw.RawExecutionRuleAttribute;
@@ -113,6 +112,7 @@ public final class DriverExecuteExecutor {
@SuppressWarnings("rawtypes")
public boolean execute(final ShardingSphereDatabase database, final
QueryContext queryContext, final
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine,
final StatementExecuteCallback executeCallback,
final StatementAddCallback addCallback, final StatementReplayCallback
replayCallback) throws SQLException {
+ SQLAuditEngine.audit(queryContext, metaData.getGlobalRuleMetaData(),
database);
Optional<String> trafficInstanceId =
connection.getTrafficInstanceId(metaData.getGlobalRuleMetaData().getSingleRule(TrafficRule.class),
queryContext);
if (trafficInstanceId.isPresent()) {
executeType = ExecuteType.TRAFFIC;
@@ -124,7 +124,8 @@ public final class DriverExecuteExecutor {
prepareEngine, getExecuteQueryCallback(database,
queryContext, prepareEngine.getType()), new SQLFederationContext(false,
queryContext, metaData, connection.getProcessId()));
return null != resultSet;
}
- ExecutionContext executionContext = createExecutionContext(database,
queryContext);
+ ExecutionContext executionContext = new
KernelProcessor().generateExecutionContext(
+ queryContext, database, metaData.getGlobalRuleMetaData(),
metaData.getProps(),
connection.getDatabaseConnectionManager().getConnectionContext());
if (hasRawExecutionRule(database)) {
Collection<ExecuteResult> results =
rawExecutor.execute(createRawExecutionGroupContext(database, executionContext),
queryContext, new RawSQLExecutorCallback());
return results.iterator().next() instanceof QueryResult;
@@ -162,12 +163,6 @@ public final class DriverExecuteExecutor {
return result;
}
- private ExecutionContext createExecutionContext(final
ShardingSphereDatabase database, final QueryContext queryContext) {
- RuleMetaData globalRuleMetaData = metaData.getGlobalRuleMetaData();
- SQLAuditEngine.audit(queryContext, globalRuleMetaData, database);
- return new KernelProcessor().generateExecutionContext(queryContext,
database, globalRuleMetaData, metaData.getProps(),
connection.getDatabaseConnectionManager().getConnectionContext());
- }
-
private ExecutionGroupContext<RawSQLExecutionUnit>
createRawExecutionGroupContext(final ShardingSphereDatabase database, final
ExecutionContext executionContext) throws SQLException {
int maxConnectionsSizePerQuery =
metaData.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery,
database.getRuleMetaData().getRules()).prepare(
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 54f3332af9c..f1519998a7d 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
@@ -18,10 +18,10 @@
package org.apache.shardingsphere.driver.executor.engine;
import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.driver.executor.callback.execute.StatementExecuteUpdateCallback;
-import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
import
org.apache.shardingsphere.driver.executor.callback.add.StatementAddCallback;
+import
org.apache.shardingsphere.driver.executor.callback.execute.StatementExecuteUpdateCallback;
import
org.apache.shardingsphere.driver.executor.callback.replay.StatementReplayCallback;
+import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
@@ -106,11 +106,13 @@ public final class DriverExecuteUpdateExecutor {
@SuppressWarnings("rawtypes")
public int executeUpdate(final ShardingSphereDatabase database, final
QueryContext queryContext, final
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine,
final StatementExecuteUpdateCallback
updateCallback, final StatementAddCallback addCallback, final
StatementReplayCallback replayCallback) throws SQLException {
+ SQLAuditEngine.audit(queryContext, metaData.getGlobalRuleMetaData(),
database);
Optional<String> trafficInstanceId =
connection.getTrafficInstanceId(metaData.getGlobalRuleMetaData().getSingleRule(TrafficRule.class),
queryContext);
if (trafficInstanceId.isPresent()) {
return trafficExecutor.execute(connection.getProcessId(),
database.getName(), trafficInstanceId.get(), queryContext, prepareEngine,
updateCallback::executeUpdate);
}
- ExecutionContext executionContext = createExecutionContext(database,
queryContext);
+ ExecutionContext executionContext = new
KernelProcessor().generateExecutionContext(
+ queryContext, database, metaData.getGlobalRuleMetaData(),
metaData.getProps(),
connection.getDatabaseConnectionManager().getConnectionContext());
return hasRawExecutionRule(database)
?
accumulate(rawExecutor.execute(createRawExecutionGroupContext(database,
executionContext), queryContext, new RawSQLExecutorCallback()))
: executeUpdate(database, updateCallback,
queryContext.getSqlStatementContext(), executionContext, prepareEngine,
isNeedImplicitCommitTransaction(
@@ -147,12 +149,6 @@ public final class DriverExecuteUpdateExecutor {
return result;
}
- private ExecutionContext createExecutionContext(final
ShardingSphereDatabase database, final QueryContext queryContext) {
- SQLAuditEngine.audit(queryContext, metaData.getGlobalRuleMetaData(),
database);
- return new KernelProcessor().generateExecutionContext(
- queryContext, database, metaData.getGlobalRuleMetaData(),
metaData.getProps(),
connection.getDatabaseConnectionManager().getConnectionContext());
- }
-
private ExecutionGroupContext<RawSQLExecutionUnit>
createRawExecutionGroupContext(final ShardingSphereDatabase database, final
ExecutionContext executionContext) throws SQLException {
int maxConnectionsSizePerQuery =
metaData.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
return new RawExecutionPrepareEngine(maxConnectionsSizePerQuery,
database.getRuleMetaData().getRules()).prepare(