This is an automated email from the ASF dual-hosted git repository. zhangliang 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 039356f0c73 Refactor SetTransactionHandler (#35489) 039356f0c73 is described below commit 039356f0c7313e57eb6dd896aaba6f2b395398ca Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Fri May 23 00:22:19 2025 +0800 Refactor SetTransactionHandler (#35489) * Add DistSQLExecutorDatabaseAware interface to ShowShardingTableNodesExecutor * Refactor SetTransactionHandler --- .../proxy/backend/handler/tcl/SetTransactionHandler.java | 5 ++++- .../proxy/backend/handler/tcl/TCLBackendHandlerFactory.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/SetTransactionHandler.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/SetTransactionHandler.java index a938ea4f74e..9a5727491d9 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/SetTransactionHandler.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/SetTransactionHandler.java @@ -19,6 +19,7 @@ package org.apache.shardingsphere.proxy.backend.handler.tcl; import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption; +import org.apache.shardingsphere.infra.database.core.type.DatabaseType; import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry; import org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions; import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler; @@ -40,6 +41,8 @@ public final class SetTransactionHandler implements ProxyBackendHandler { private final ConnectionSession connectionSession; + private final DatabaseType databaseType; + @Override public ResponseHeader execute() { ShardingSpherePreconditions.checkState(null != sqlStatement.getScope() || !connectionSession.getTransactionStatus().isInTransaction(), SwitchTypeInTransactionException::new); @@ -63,7 +66,7 @@ public final class SetTransactionHandler implements ProxyBackendHandler { if (!sqlStatement.getIsolationLevel().isPresent()) { return; } - DialectTransactionOption transactionOption = new DatabaseTypeRegistry(sqlStatement.getDatabaseType()).getDialectDatabaseMetaData().getTransactionOption(); + DialectTransactionOption transactionOption = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getTransactionOption(); connectionSession.setDefaultIsolationLevel(TransactionUtils.getTransactionIsolationLevel(transactionOption.getDefaultIsolationLevel())); connectionSession.setIsolationLevel(sqlStatement.getIsolationLevel().get()); } diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandlerFactory.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandlerFactory.java index fd41fcdcc25..affb36eddba 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandlerFactory.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandlerFactory.java @@ -78,7 +78,7 @@ public final class TCLBackendHandlerFactory { : new TCLBackendHandler(tclStatement, TransactionOperationType.ROLLBACK, connectionSession); } if (tclStatement instanceof SetTransactionStatement && OperationScope.GLOBAL != ((SetTransactionStatement) tclStatement).getScope()) { - return new SetTransactionHandler((SetTransactionStatement) tclStatement, connectionSession); + return new SetTransactionHandler((SetTransactionStatement) tclStatement, connectionSession, sqlStatementContext.getDatabaseType()); } if (tclStatement instanceof XAStatement) { return new XATCLHandler(sqlStatementContext, sql, connectionSession);