You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/01/05 01:03:56 UTC
[shardingsphere] branch master updated: support traffic getResultSet method (#14513)
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 8776379 support traffic getResultSet method (#14513)
8776379 is described below
commit 87763798c7fc9df9b71acb7cd6afc232de032c9f
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Wed Jan 5 09:02:56 2022 +0800
support traffic getResultSet method (#14513)
---
.../shardingsphere/driver/executor/DriverExecutor.java | 2 +-
.../core/statement/ShardingSpherePreparedStatement.java | 11 ++++++++---
.../jdbc/core/statement/ShardingSphereStatement.java | 17 +++++++++++------
.../traffic/executor/TrafficExecutorFactory.java | 8 ++++----
.../traffic/executor/jdbc/JDBCTrafficExecutor.java | 10 +++++-----
5 files changed, 29 insertions(+), 19 deletions(-)
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
index 0dcf5fb..9ef2e79 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
@@ -49,7 +49,7 @@ public final class DriverExecutor implements AutoCloseable {
regularExecutor = new DriverJDBCExecutor(connection.getSchema(), metaDataContexts, jdbcExecutor);
rawExecutor = new RawExecutor(metaDataContexts.getExecutorEngine(), connection.isHoldTransaction(), metaDataContexts.getProps());
federationExecutor = FederationExecutorFactory.newInstance(connection.getSchema(), metaDataContexts.getOptimizerContext(), metaDataContexts.getProps(), jdbcExecutor);
- trafficExecutor = TrafficExecutorFactory.newInstance(connection.getContextManager().getMetaDataContexts());
+ trafficExecutor = TrafficExecutorFactory.newInstance(connection.getContextManager());
}
/**
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 2af6e8b..c9b5297 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
@@ -129,6 +129,8 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
private ExecutionContext executionContext;
private ResultSet currentResultSet;
+
+ private TrafficContext trafficContext;
public ShardingSpherePreparedStatement(final ShardingSphereConnection connection, final String sql) throws SQLException {
this(connection, sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT, false);
@@ -185,7 +187,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
}
clearPrevious();
LogicSQL logicSQL = createLogicSQL();
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.PREPARED_STATEMENT);
@@ -257,7 +259,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
}
clearPrevious();
LogicSQL logicSQL = createLogicSQL();
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.PREPARED_STATEMENT);
@@ -310,7 +312,7 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
}
clearPrevious();
LogicSQL logicSQL = createLogicSQL();
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.PREPARED_STATEMENT);
@@ -367,6 +369,9 @@ public final class ShardingSpherePreparedStatement extends AbstractPreparedState
if (null != currentResultSet) {
return currentResultSet;
}
+ if (trafficContext.getDataSourceName().isPresent()) {
+ return executor.getTrafficExecutor().getResultSet();
+ }
if (executionContext.getRouteContext().isFederated()) {
return executor.getFederationExecutor().getResultSet();
}
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 874e489..3e8c681 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
@@ -113,6 +113,8 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
private ResultSet currentResultSet;
+ private TrafficContext trafficContext;
+
public ShardingSphereStatement(final ShardingSphereConnection connection) {
this(connection, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
}
@@ -140,7 +142,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
ResultSet result;
try {
LogicSQL logicSQL = createLogicSQL(sql);
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.STATEMENT);
@@ -198,7 +200,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
public int executeUpdate(final String sql) throws SQLException {
try {
LogicSQL logicSQL = createLogicSQL(sql);
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.STATEMENT);
@@ -224,7 +226,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
}
try {
LogicSQL logicSQL = createLogicSQL(sql);
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.STATEMENT);
@@ -248,7 +250,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
returnGeneratedKeys = true;
try {
LogicSQL logicSQL = createLogicSQL(sql);
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.STATEMENT);
@@ -272,7 +274,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
returnGeneratedKeys = true;
try {
LogicSQL logicSQL = createLogicSQL(sql);
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.STATEMENT);
@@ -366,7 +368,7 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
private boolean execute0(final String sql, final ExecuteCallback callback) throws SQLException {
try {
LogicSQL logicSQL = createLogicSQL(sql);
- TrafficContext trafficContext = createTrafficContext(logicSQL);
+ trafficContext = createTrafficContext(logicSQL);
if (trafficContext.getDataSourceName().isPresent()) {
TrafficExecutor trafficExecutor = executor.getTrafficExecutor();
TrafficExecutorContext<Statement> context = trafficExecutor.prepare(logicSQL, trafficContext.getDataSourceName().get(), JDBCDriverType.STATEMENT);
@@ -448,6 +450,9 @@ public final class ShardingSphereStatement extends AbstractStatementAdapter {
if (null != currentResultSet) {
return currentResultSet;
}
+ if (trafficContext.getDataSourceName().isPresent()) {
+ return executor.getTrafficExecutor().getResultSet();
+ }
if (executionContext.getRouteContext().isFederated()) {
return executor.getFederationExecutor().getResultSet();
}
diff --git a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/executor/TrafficExecutorFactory.java b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/executor/TrafficExecutorFactory.java
index 67d3d79..740fcef 100644
--- a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/executor/TrafficExecutorFactory.java
+++ b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/executor/TrafficExecutorFactory.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.traffic.executor;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.traffic.executor.jdbc.JDBCTrafficExecutor;
/**
@@ -31,10 +31,10 @@ public final class TrafficExecutorFactory {
/**
* Create new instance of traffic executor factory.
*
- * @param metaDataContexts meta data context map
+ * @param contextManager context manager
* @return new instance of traffic executor
*/
- public static TrafficExecutor newInstance(final MetaDataContexts metaDataContexts) {
- return new JDBCTrafficExecutor(metaDataContexts);
+ public static TrafficExecutor newInstance(final ContextManager contextManager) {
+ return new JDBCTrafficExecutor(contextManager);
}
}
diff --git a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/executor/jdbc/JDBCTrafficExecutor.java b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/executor/jdbc/JDBCTrafficExecutor.java
index 0834d9f..3fd1f86 100644
--- a/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/executor/jdbc/JDBCTrafficExecutor.java
+++ b/shardingsphere-kernel/shardingsphere-traffic/shardingsphere-traffic-core/src/main/java/org/apache/shardingsphere/traffic/executor/jdbc/JDBCTrafficExecutor.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.LogicSQL;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.datasource.pool.creator.DataSourcePoolCreatorUtil;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.spi.typed.TypedSPIRegistry;
import org.apache.shardingsphere.traffic.executor.TrafficExecutor;
@@ -57,13 +57,13 @@ public final class JDBCTrafficExecutor implements TrafficExecutor {
ShardingSphereServiceLoader.register(TrafficExecutorContextBuilder.class);
}
- public JDBCTrafficExecutor(final MetaDataContexts metaDataContexts) {
- dataSources.putAll(DataSourcePoolCreatorUtil.getDataSourceMap(createDataSourceConfigs(metaDataContexts)));
+ public JDBCTrafficExecutor(final ContextManager contextManager) {
+ dataSources.putAll(DataSourcePoolCreatorUtil.getDataSourceMap(createDataSourceConfigs()));
}
- private Map<String, DataSourceConfiguration> createDataSourceConfigs(final MetaDataContexts metaDataContexts) {
+ private Map<String, DataSourceConfiguration> createDataSourceConfigs() {
// TODO Use governance API to create data source configuration
- return Collections.emptyMap();
+ return Collections.emptyMap();
}
@SuppressWarnings({"unchecked", "rawtypes"})