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 <[email protected]>
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"})

Reply via email to