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) {