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

Reply via email to