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 2020/11/23 10:48:57 UTC

[shardingsphere] branch master updated: Refactor the constructor of RawSQLExecutorCallback, adding an ShardingSphereMetaData argument to the constructor and passing the argument to the RAW executor (#8305)

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 <ju...@163.com>
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) {