This is an automated email from the ASF dual-hosted git repository.
panjuan 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 20ebec9 Refactor KernelProcessor (#8715)
20ebec9 is described below
commit 20ebec9f7af020c883d52296b9a47d2224fd58cd
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Dec 22 14:52:46 2020 +0800
Refactor KernelProcessor (#8715)
---
.../infra/context/kernel/KernelProcessor.java | 34 +++++++++++++---------
1 file changed, 21 insertions(+), 13 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
index eda1c25..d336713 100644
---
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
+++
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/kernel/KernelProcessor.java
@@ -19,22 +19,18 @@ package org.apache.shardingsphere.infra.context.kernel;
import org.apache.shardingsphere.infra.audit.SQLAuditEngine;
import org.apache.shardingsphere.infra.binder.LogicSQL;
-import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
import
org.apache.shardingsphere.infra.executor.sql.context.ExecutionContextBuilder;
-import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import org.apache.shardingsphere.infra.executor.sql.log.SQLLogger;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.rewrite.SQLRewriteEntry;
import org.apache.shardingsphere.infra.rewrite.engine.result.SQLRewriteResult;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.engine.SQLRouteEngine;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import java.sql.SQLException;
-import java.util.Collection;
/**
* Kernel processor.
@@ -51,19 +47,31 @@ public final class KernelProcessor {
* @throws SQLException SQL exception
*/
public ExecutionContext generateExecutionContext(final LogicSQL logicSQL,
final ShardingSphereMetaData metaData, final ConfigurationProperties props)
throws SQLException {
- Collection<ShardingSphereRule> rules =
metaData.getRuleMetaData().getRules();
- new
SQLAuditEngine().audit(logicSQL.getSqlStatementContext().getSqlStatement(),
logicSQL.getParameters(), metaData.getName(), rules);
- SQLRouteEngine sqlRouteEngine = new SQLRouteEngine(rules, props);
- SQLStatementContext<?> sqlStatementContext =
logicSQL.getSqlStatementContext();
- RouteContext routeContext = sqlRouteEngine.route(logicSQL, metaData);
- SQLRewriteEntry rewriteEntry = new
SQLRewriteEntry(metaData.getSchema(), props, rules);
- SQLRewriteResult rewriteResult =
rewriteEntry.rewrite(logicSQL.getSql(), logicSQL.getParameters(),
sqlStatementContext, routeContext);
- Collection<ExecutionUnit> executionUnits =
ExecutionContextBuilder.build(metaData, rewriteResult, sqlStatementContext);
- ExecutionContext result = new ExecutionContext(sqlStatementContext,
executionUnits, routeContext);
+ audit(logicSQL, metaData);
+ RouteContext routeContext = route(logicSQL, metaData, props);
+ SQLRewriteResult rewriteResult = rewrite(logicSQL, metaData, props,
routeContext);
+ ExecutionContext result = createExecutionContext(logicSQL, metaData,
routeContext, rewriteResult);
logSQL(logicSQL, props, result);
return result;
}
+ private void audit(final LogicSQL logicSQL, final ShardingSphereMetaData
metaData) throws SQLException {
+ new
SQLAuditEngine().audit(logicSQL.getSqlStatementContext().getSqlStatement(),
logicSQL.getParameters(), metaData.getName(),
metaData.getRuleMetaData().getRules());
+ }
+
+ private RouteContext route(final LogicSQL logicSQL, final
ShardingSphereMetaData metaData, final ConfigurationProperties props) {
+ return new SQLRouteEngine(metaData.getRuleMetaData().getRules(),
props).route(logicSQL, metaData);
+ }
+
+ private SQLRewriteResult rewrite(final LogicSQL logicSQL, final
ShardingSphereMetaData metaData, final ConfigurationProperties props, final
RouteContext routeContext) {
+ return new SQLRewriteEntry(
+ metaData.getSchema(), props,
metaData.getRuleMetaData().getRules()).rewrite(logicSQL.getSql(),
logicSQL.getParameters(), logicSQL.getSqlStatementContext(), routeContext);
+ }
+
+ private ExecutionContext createExecutionContext(final LogicSQL logicSQL,
final ShardingSphereMetaData metaData, final RouteContext routeContext, final
SQLRewriteResult rewriteResult) {
+ return new ExecutionContext(logicSQL.getSqlStatementContext(),
ExecutionContextBuilder.build(metaData, rewriteResult,
logicSQL.getSqlStatementContext()), routeContext);
+ }
+
private void logSQL(final LogicSQL logicSQL, final ConfigurationProperties
props, final ExecutionContext executionContext) {
if (props.<Boolean>getValue(ConfigurationPropertyKey.SQL_SHOW)) {
SQLLogger.logSQL(logicSQL,
props.<Boolean>getValue(ConfigurationPropertyKey.SQL_SIMPLE), executionContext);