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;