This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang 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 3f79e257db6 support traffic for execute batch (#18334)
3f79e257db6 is described below

commit 3f79e257db6aeb8ae242f622625af69b2b2f3fc8
Author: Chuxin Chen <[email protected]>
AuthorDate: Mon Jun 13 18:56:41 2022 +0800

    support traffic for execute batch (#18334)
---
 .../jdbc/core/statement/ShardingSpherePreparedStatement.java     | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

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 a23074762c0..193271f6a1a 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
@@ -474,6 +474,11 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
         return result;
     }
     
+    private ExecutionContext createExecutionContext(final LogicSQL logicSQL, 
final TrafficContext trafficContext) {
+        ExecutionUnit executionUnit = new 
ExecutionUnit(trafficContext.getInstanceId(), new SQLUnit(logicSQL.getSql(), 
logicSQL.getParameters()));
+        return new ExecutionContext(logicSQL, 
Collections.singletonList(executionUnit), trafficContext.getRouteContext());
+    }
+    
     private LogicSQL createLogicSQL() {
         List<Object> parameters = new ArrayList<>(getParameters());
         if (sqlStatementContext instanceof ParameterAware) {
@@ -540,7 +545,9 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     @Override
     public void addBatch() {
         try {
-            executionContext = createExecutionContext(createLogicSQL());
+            LogicSQL logicSQL = createLogicSQL();
+            trafficContext = getTrafficContext(logicSQL);
+            executionContext = trafficContext.isMatchTraffic() ? 
createExecutionContext(logicSQL, trafficContext) : 
createExecutionContext(logicSQL);
             
batchPreparedStatementExecutor.addBatchForExecutionUnits(executionContext.getExecutionUnits());
         } finally {
             currentResultSet = null;

Reply via email to