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 c038bdd  Refactor the constructor of RawSQLExecutorCallback, adding an 
ShardingSphereMetaData argument to the constructor and passing the argument to 
the RAW executor (#8305)
c038bdd is described below

commit c038bddaa6806812c05824ff596f4cc4d72fb6cf
Author: AlphaPo <[email protected]>
AuthorDate: Mon Nov 23 18:48:40 2020 +0800

    Refactor the constructor of RawSQLExecutorCallback, adding an 
ShardingSphereMetaData argument to the constructor and passing the argument to 
the RAW executor (#8305)
---
 .../engine/raw/callback/RawSQLExecutorCallback.java    |  9 ++++++++-
 .../statement/ShardingSpherePreparedStatement.java     |  6 +++---
 .../jdbc/core/statement/ShardingSphereStatement.java   | 18 +++++++++---------
 .../jdbc/execute/engine/jdbc/JDBCExecuteEngine.java    |  6 ++++--
 4 files changed, 24 insertions(+), 15 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/callback/RawSQLExecutorCallback.java
 
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/callback/RawSQLExecutorCallback.java
index 6979441..16184bd 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/callback/RawSQLExecutorCallback.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/execute/engine/raw/callback/RawSQLExecutorCallback.java
@@ -22,10 +22,12 @@ import 
org.apache.shardingsphere.infra.exception.ShardingSphereException;
 import org.apache.shardingsphere.infra.executor.kernel.model.ExecutorCallback;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.RawSQLExecutionUnit;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 
 import java.sql.SQLException;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Map;
 
 /**
@@ -39,16 +41,21 @@ public final class RawSQLExecutorCallback implements 
ExecutorCallback<RawSQLExec
     }
     
     private final Collection<RawExecutorCallback> rawExecutorCallbacks;
+
+    private final ShardingSphereMetaData shardingSphereMetaData;
     
-    public RawSQLExecutorCallback() {
+    public RawSQLExecutorCallback(final ShardingSphereMetaData 
shardingSphereMetaData) {
         rawExecutorCallbacks = 
ShardingSphereServiceLoader.newServiceInstances(RawExecutorCallback.class);
         if (null == rawExecutorCallbacks || rawExecutorCallbacks.isEmpty()) {
             throw new ShardingSphereException("not found raw executor callback 
impl");
         }
+        this.shardingSphereMetaData = shardingSphereMetaData;
     }
     
     @Override
     public Collection<ExecuteResult> execute(final 
Collection<RawSQLExecutionUnit> inputs, final boolean isTrunkThread, final 
Map<String, Object> dataMap) throws SQLException {
+        Map<String, Object> currDataMap = null == dataMap ? 
Collections.emptyMap() : dataMap;
+        currDataMap.put(ShardingSphereMetaData.class.getCanonicalName(), 
this.shardingSphereMetaData);
         return rawExecutorCallbacks.iterator().next().execute(inputs, 
isTrunkThread, dataMap);
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 2878aea..fae1a48 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -162,7 +162,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
                 reply();
                 queryResults = 
preparedStatementExecutor.executeQuery(executionGroups);
             } else {
-                queryResults = 
rawExecutor.executeQuery(createRawExecutionGroups(), new 
RawSQLExecutorCallback());
+                queryResults = 
rawExecutor.executeQuery(createRawExecutionGroups(), new 
RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
             MergedResult mergedResult = mergeQuery(queryResults);
             result = new 
ShardingSphereResultSet(statements.stream().map(this::getResultSet).collect(Collectors.toList()),
 mergedResult, this, executionContext);
@@ -184,7 +184,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
                 reply();
                 return 
preparedStatementExecutor.executeUpdate(executionGroups, 
executionContext.getSqlStatementContext(), 
executionContext.getRouteContext().getRouteUnits());
             } else {
-                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback());
+                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             clearBatch();
@@ -203,7 +203,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
                 return preparedStatementExecutor.execute(executionGroups, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getRouteContext().getRouteUnits());
             } else {
                 // TODO process getStatement
-                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback());
+                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             clearBatch();
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 43382a3..fd1c243 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -130,7 +130,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 cacheStatements(executionGroups);
                 queryResults = statementExecutor.executeQuery(executionGroups);
             } else {
-                queryResults = 
rawExecutor.executeQuery(createRawExecutionGroups(), new 
RawSQLExecutorCallback());
+                queryResults = 
rawExecutor.executeQuery(createRawExecutionGroups(), new 
RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
             MergedResult mergedResult = mergeQuery(queryResults);
             result = new 
ShardingSphereResultSet(statements.stream().map(this::getResultSet).collect(Collectors.toList()),
 mergedResult, this, executionContext);
@@ -150,7 +150,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 cacheStatements(executionGroups);
                 return statementExecutor.executeUpdate(executionGroups, 
executionContext.getSqlStatementContext(), 
executionContext.getRouteContext().getRouteUnits());
             } else {
-                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback());
+                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             currentResultSet = null;
@@ -169,7 +169,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 cacheStatements(executionGroups);
                 return statementExecutor.executeUpdate(executionGroups, 
executionContext.getSqlStatementContext(), 
executionContext.getRouteContext().getRouteUnits(), autoGeneratedKeys);
             } else {
-                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback());
+                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             currentResultSet = null;
@@ -186,7 +186,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 cacheStatements(executionGroups);
                 return statementExecutor.executeUpdate(executionGroups, 
executionContext.getSqlStatementContext(), 
executionContext.getRouteContext().getRouteUnits(), columnIndexes);
             } else {
-                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback());
+                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             currentResultSet = null;
@@ -203,7 +203,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 cacheStatements(executionGroups);
                 return statementExecutor.executeUpdate(executionGroups, 
executionContext.getSqlStatementContext(), 
executionContext.getRouteContext().getRouteUnits(), columnNames);
             } else {
-                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback());
+                return rawExecutor.executeUpdate(createRawExecutionGroups(), 
new RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             currentResultSet = null;
@@ -220,7 +220,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 return statementExecutor.execute(executionGroups, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getRouteContext().getRouteUnits());
             } else {
                 // TODO process getStatement
-                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback());
+                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             currentResultSet = null;
@@ -240,7 +240,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 return statementExecutor.execute(executionGroups, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getRouteContext().getRouteUnits(), autoGeneratedKeys);
             } else {
                 // TODO process getStatement
-                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback());
+                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             currentResultSet = null;
@@ -258,7 +258,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 return statementExecutor.execute(executionGroups, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getRouteContext().getRouteUnits(), columnIndexes);
             } else {
                 // TODO process getStatement
-                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback());
+                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             currentResultSet = null;
@@ -276,7 +276,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
                 return statementExecutor.execute(executionGroups, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getRouteContext().getRouteUnits(), columnNames);
             } else {
                 // TODO process getStatement
-                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback());
+                return rawExecutor.execute(createRawExecutionGroups(), new 
RawSQLExecutorCallback(metaDataContexts.getDefaultMetaData()));
             }
         } finally {
             currentResultSet = null;
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/JDBCExecuteEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/JDBCExecuteEngine.java
index 2304e2e..09c0a93 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/JDBCExecuteEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/execute/engine/jdbc/JDBCExecuteEngine.java
@@ -34,6 +34,7 @@ import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.ExecutorExceptionHandler;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
 import 
org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.StatementOption;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
@@ -141,11 +142,12 @@ public final class JDBCExecuteEngine implements 
SQLExecuteEngine {
     }
     
     private Collection<ExecuteResult> executeWithRaw(final ExecutionContext 
executionContext, final int maxConnectionsSizePerQuery) throws SQLException {
-        Collection<ShardingSphereRule> rules = 
ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName()).getRuleMetaData().getRules();
+        ShardingSphereMetaData shardingSphereMetaData = 
ProxyContext.getInstance().getMetaData(backendConnection.getSchemaName());
+        Collection<ShardingSphereRule> rules = 
shardingSphereMetaData.getRuleMetaData().getRules();
         Collection<ExecutionGroup<RawSQLExecutionUnit>> executionGroups = new 
RawExecutionPrepareEngine(maxConnectionsSizePerQuery, 
rules).prepare(executionContext.getRouteContext(),
                 executionContext.getExecutionUnits());
         // TODO handle query header
-        return rawExecutor.execute(executionGroups, new 
RawSQLExecutorCallback());
+        return rawExecutor.execute(executionGroups, new 
RawSQLExecutorCallback(shardingSphereMetaData));
     }
     
     private BackendResponse getExecuteQueryResponse(final List<QueryHeader> 
queryHeaders, final Collection<ExecuteResult> executeResults) {

Reply via email to