You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by tu...@apache.org on 2024/01/31 09:53:08 UTC
(shardingsphere) branch master updated: Refactor isNeedImplicitCommitTransaction param for code reuse (#29937)
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 <du...@apache.org>
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) {