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

tuichenchuxin 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 c5ba52079ad Refactor isNeedImplicitCommitTransaction param for code 
reuse (#29937)
c5ba52079ad is described below

commit c5ba52079ad6e468e09bbbd48f179746ad3f29d2
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Jan 31 17:53:01 2024 +0800

    Refactor isNeedImplicitCommitTransaction param for code reuse (#29937)
---
 .../driver/jdbc/adapter/AbstractStatementAdapter.java            | 6 ++----
 .../jdbc/core/statement/ShardingSpherePreparedStatement.java     | 7 +++++--
 .../driver/jdbc/core/statement/ShardingSphereStatement.java      | 5 +++--
 .../proxy/backend/connector/DatabaseConnector.java               | 9 +++++----
 4 files changed, 15 insertions(+), 12 deletions(-)

diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
index b86728c578c..49d465c3e6d 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
@@ -27,7 +27,6 @@ import 
org.apache.shardingsphere.driver.jdbc.unsupported.AbstractUnsupportedOper
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
-import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.DMLStatement;
@@ -57,7 +56,7 @@ public abstract class AbstractStatementAdapter extends 
AbstractUnsupportedOperat
     
     private boolean closed;
     
-    protected final boolean isNeedImplicitCommitTransaction(final 
ShardingSphereConnection connection, final ExecutionContext executionContext) {
+    protected final boolean isNeedImplicitCommitTransaction(final 
ShardingSphereConnection connection, final SQLStatement sqlStatement, final 
boolean multiExecutionUnits) {
         if (connection.getAutoCommit()) {
             return false;
         }
@@ -66,8 +65,7 @@ public abstract class AbstractStatementAdapter extends 
AbstractUnsupportedOperat
         if 
(!TransactionType.isDistributedTransaction(connectionTransaction.getTransactionType())
 || isInTransaction) {
             return false;
         }
-        SQLStatement sqlStatement = 
executionContext.getSqlStatementContext().getSqlStatement();
-        return isWriteDMLStatement(sqlStatement) && 
executionContext.getExecutionUnits().size() > 1;
+        return isWriteDMLStatement(sqlStatement) && multiExecutionUnits;
     }
     
     private boolean isWriteDMLStatement(final SQLStatement sqlStatement) {
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 0d64b5af9c4..b91014c8433 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -454,7 +454,9 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     }
     
     private boolean executeWithExecutionContext(final ExecutionContext 
executionContext) throws SQLException {
-        return isNeedImplicitCommitTransaction(connection, executionContext) ? 
executeWithImplicitCommitTransaction(() -> 
useDriverToExecute(executionContext)) : useDriverToExecute(executionContext);
+        return isNeedImplicitCommitTransaction(connection, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getExecutionUnits().size() > 1)
+                ? executeWithImplicitCommitTransaction(() -> 
useDriverToExecute(executionContext))
+                : useDriverToExecute(executionContext);
     }
     
     private boolean executeWithImplicitCommitTransaction(final 
ImplicitTransactionCallback<Boolean> callback) throws SQLException {
@@ -475,7 +477,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     }
     
     private int executeUpdateWithExecutionContext(final ExecutionContext 
executionContext) throws SQLException {
-        return isNeedImplicitCommitTransaction(connection, executionContext) ? 
executeUpdateWithImplicitCommitTransaction(() -> 
useDriverToExecuteUpdate(executionContext))
+        return isNeedImplicitCommitTransaction(connection, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getExecutionUnits().size() > 1)
+                ? executeUpdateWithImplicitCommitTransaction(() -> 
useDriverToExecuteUpdate(executionContext))
                 : useDriverToExecuteUpdate(executionContext);
     }
     
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 5cacd97385c..9abbba39ce1 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -310,7 +310,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     }
     
     private int executeUpdate(final ExecuteUpdateCallback updateCallback, 
final SQLStatementContext sqlStatementContext, final ExecutionContext 
executionContext) throws SQLException {
-        return isNeedImplicitCommitTransaction(connection, executionContext)
+        return isNeedImplicitCommitTransaction(connection, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getExecutionUnits().size() > 1)
                 ? executeUpdateWithImplicitCommitTransaction(() -> 
useDriverToExecuteUpdate(updateCallback, sqlStatementContext, executionContext))
                 : useDriverToExecuteUpdate(updateCallback, 
sqlStatementContext, executionContext);
     }
@@ -531,7 +531,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     }
     
     private boolean executeWithExecutionContext(final ExecuteCallback 
executeCallback, final ExecutionContext executionContext) throws SQLException {
-        return isNeedImplicitCommitTransaction(connection, executionContext) ? 
executeWithImplicitCommitTransaction(() -> useDriverToExecute(executeCallback, 
executionContext))
+        return isNeedImplicitCommitTransaction(connection, 
executionContext.getSqlStatementContext().getSqlStatement(), 
executionContext.getExecutionUnits().size() > 1)
+                ? executeWithImplicitCommitTransaction(() -> 
useDriverToExecute(executeCallback, executionContext))
                 : useDriverToExecute(executeCallback, executionContext);
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
index 0bf4140c8e3..238a0d73ec9 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java
@@ -168,7 +168,9 @@ public final class DatabaseConnector implements 
DatabaseBackendHandler {
             return processExecuteFederation(resultSet, metaDataContexts);
         }
         ExecutionContext executionContext = generateExecutionContext();
-        return isNeedImplicitCommitTransaction(executionContext) ? 
doExecuteWithImplicitCommitTransaction(() -> doExecute(executionContext)) : 
doExecute(executionContext);
+        return 
isNeedImplicitCommitTransaction(executionContext.getSqlStatementContext().getSqlStatement(),
 executionContext.getExecutionUnits().size() > 1)
+                ? doExecuteWithImplicitCommitTransaction(() -> 
doExecute(executionContext))
+                : doExecute(executionContext);
     }
     
     private ExecutionContext generateExecutionContext() {
@@ -177,7 +179,7 @@ public final class DatabaseConnector implements 
DatabaseBackendHandler {
                 
databaseConnectionManager.getConnectionSession().getConnectionContext());
     }
     
-    private boolean isNeedImplicitCommitTransaction(final ExecutionContext 
executionContext) {
+    private boolean isNeedImplicitCommitTransaction(final SQLStatement 
sqlStatement, final boolean multiExecutionUnits) {
         if (!databaseConnectionManager.getConnectionSession().isAutoCommit()) {
             return false;
         }
@@ -185,8 +187,7 @@ public final class DatabaseConnector implements 
DatabaseBackendHandler {
         if 
(!TransactionType.isDistributedTransaction(transactionStatus.getTransactionType())
 || transactionStatus.isInTransaction()) {
             return false;
         }
-        SQLStatement sqlStatement = 
executionContext.getSqlStatementContext().getSqlStatement();
-        return isWriteDMLStatement(sqlStatement) && 
executionContext.getExecutionUnits().size() > 1;
+        return isWriteDMLStatement(sqlStatement) && multiExecutionUnits;
     }
     
     private boolean isWriteDMLStatement(final SQLStatement sqlStatement) {

Reply via email to