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) {