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 09f206e6cca Merge ProxyBackendTransactionManager and 
TransactionManager (#36787)
09f206e6cca is described below

commit 09f206e6cca1040c29030462dec50a57df04d477
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Oct 5 12:24:04 2025 +0800

    Merge ProxyBackendTransactionManager and TransactionManager (#36787)
    
    * Merge ProxyBackendTransactionManager and TransactionManager
    
    * Merge ProxyBackendTransactionManager and TransactionManager
---
 .../META-INF/conf/prometheus-advisors.yaml         | 10 +--
 .../connector/ProxyDatabaseConnectionManager.java  |  4 +-
 .../connector/StandardDatabaseConnector.java       |  6 +-
 .../backend/connector/TransactionManager.java      | 71 ----------------------
 ...er.java => ProxyBackendTransactionManager.java} | 44 +++++++++++---
 .../backend/handler/tcl/TCLBackendHandler.java     | 23 ++++---
 .../ProxyDatabaseConnectionManagerTest.java        |  4 +-
 .../transaction/BackendTransactionManagerTest.java | 42 ++++++-------
 .../handler/tcl/TCLBackendHandlerFactoryTest.java  | 10 +--
 .../backend/session/ConnectionSessionTest.java     |  4 +-
 .../FirebirdCommitTransactionCommandExecutor.java  |  6 +-
 ...FirebirdRollbackTransactionCommandExecutor.java |  6 +-
 ...rebirdCommitTransactionCommandExecutorTest.java |  4 +-
 ...birdRollbackTransactionCommandExecutorTest.java |  4 +-
 .../admin/MySQLComResetConnectionExecutor.java     |  5 +-
 .../admin/MySQLComResetConnectionExecutorTest.java |  4 +-
 16 files changed, 100 insertions(+), 147 deletions(-)

diff --git 
a/agent/plugins/metrics/type/prometheus/src/main/resources/META-INF/conf/prometheus-advisors.yaml
 
b/agent/plugins/metrics/type/prometheus/src/main/resources/META-INF/conf/prometheus-advisors.yaml
index 0433026a899..3fb910fbfe6 100644
--- 
a/agent/plugins/metrics/type/prometheus/src/main/resources/META-INF/conf/prometheus-advisors.yaml
+++ 
b/agent/plugins/metrics/type/prometheus/src/main/resources/META-INF/conf/prometheus-advisors.yaml
@@ -16,7 +16,7 @@
 #
 
 advisors:
-  # config for proxy and jdbc
+  # Configure for proxy and JDBC
   - target: 
org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine
     advice: 
org.apache.shardingsphere.agent.plugin.metrics.core.advice.SQLParseCountAdvice
     pointcuts:
@@ -32,7 +32,7 @@ advisors:
     pointcuts:
       - name: route
         type: method
-  # config for proxy
+  # Configure for proxy
   - target: 
org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask
     advice: 
org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy.ExecuteLatencyHistogramAdvice
     pointcuts:
@@ -55,17 +55,17 @@ advisors:
     pointcuts:
       - name: run
         type: method
-  - target: 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager
+  - target: 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager
     advice: 
org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy.CommitTransactionsCountAdvice
     pointcuts:
       - name: commit
         type: method
-  - target: 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager
+  - target: 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager
     advice: 
org.apache.shardingsphere.agent.plugin.metrics.core.advice.proxy.RollbackTransactionsCountAdvice
     pointcuts:
       - name: rollback
         type: method
-  # config for jdbc
+  # Configure for JDBC
   - target: 
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSphereStatement
     advice: 
org.apache.shardingsphere.agent.plugin.metrics.core.advice.jdbc.StatementExecuteCountAdvice
     pointcuts:
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
index 7aaa3567f1e..e83d451caa0 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManager.java
@@ -30,7 +30,7 @@ import 
org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.connection.ConnectionPostProcessor;
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.connection.ConnectionResourceLock;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.exception.BackendConnectionException;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
@@ -252,7 +252,7 @@ public final class ProxyDatabaseConnectionManager 
implements DatabaseConnectionM
      */
     public void handleAutoCommit() {
         if (!connectionSession.isAutoCommit() && 
!connectionSession.getTransactionStatus().isInTransaction()) {
-            BackendTransactionManager transactionManager = new 
BackendTransactionManager(this);
+            ProxyBackendTransactionManager transactionManager = new 
ProxyBackendTransactionManager(this);
             transactionManager.begin();
         }
     }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseConnector.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseConnector.java
index 5d59e3a3d7d..2d169af221a 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseConnector.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/StandardDatabaseConnector.java
@@ -60,7 +60,7 @@ import 
org.apache.shardingsphere.mode.metadata.refresher.pushdown.PushDownMetaDa
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.executor.callback.ProxyJDBCExecutorCallback;
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.executor.callback.ProxyJDBCExecutorCallbackFactory;
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.statement.JDBCBackendStatement;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseCell;
 import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
@@ -219,7 +219,7 @@ public final class StandardDatabaseConnector implements 
DatabaseConnector {
     
     private <T> T doExecuteWithImplicitCommitTransaction(final 
ImplicitTransactionCallback<T> callback) throws SQLException {
         T result;
-        BackendTransactionManager transactionManager = new 
BackendTransactionManager(databaseConnectionManager);
+        ProxyBackendTransactionManager transactionManager = new 
ProxyBackendTransactionManager(databaseConnectionManager);
         try {
             transactionManager.begin();
             result = callback.execute();
@@ -243,7 +243,7 @@ public final class StandardDatabaseConnector implements 
DatabaseConnector {
                 ? proxySQLExecutor.execute(executionContext)
                 : 
advancedExecutors.iterator().next().execute(executionContext, contextManager, 
database, this);
         if 
(isNeedImplicitCommit(queryContext.getSqlStatementContext().getSqlStatement())) 
{
-            BackendTransactionManager transactionManager = new 
BackendTransactionManager(databaseConnectionManager);
+            ProxyBackendTransactionManager transactionManager = new 
ProxyBackendTransactionManager(databaseConnectionManager);
             transactionManager.commit();
         }
         
pushDownMetaDataRefreshEngine.refresh(queryContext.getSqlStatementContext(), 
executionContext.getRouteContext().getRouteUnits());
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/TransactionManager.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/TransactionManager.java
deleted file mode 100644
index 211722d05d2..00000000000
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/TransactionManager.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.proxy.backend.connector;
-
-import java.sql.SQLException;
-
-/**
- * Transaction manager interface for proxy.
- */
-public interface TransactionManager {
-    
-    /**
-     * Begin transaction.
-     *
-     * @throws SQLException SQL exception
-     */
-    void begin() throws SQLException;
-    
-    /**
-     * Commit transaction.
-     *
-     * @throws SQLException SQL exception
-     */
-    void commit() throws SQLException;
-    
-    /**
-     * Rollback transaction.
-     *
-     * @throws SQLException SQL exception
-     */
-    void rollback() throws SQLException;
-    
-    /**
-     * Set savepoint.
-     *
-     * @param savepointName savepoint name
-     * @throws SQLException SQL exception
-     */
-    void setSavepoint(String savepointName) throws SQLException;
-    
-    /**
-     * Rollback to savepoint.
-     *
-     * @param savepointName savepoint name
-     * @throws SQLException SQL exception
-     */
-    void rollbackTo(String savepointName) throws SQLException;
-    
-    /**
-     * Release savepoint.
-     *
-     * @param savepointName savepoint name
-     * @throws SQLException SQL exception
-     */
-    void releaseSavepoint(String savepointName) throws SQLException;
-}
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManager.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/ProxyBackendTransactionManager.java
similarity index 92%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManager.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/ProxyBackendTransactionManager.java
index df27d8c0fa5..25e7e051f3f 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManager.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/ProxyBackendTransactionManager.java
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
 import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
 import 
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnectionManager;
-import org.apache.shardingsphere.proxy.backend.connector.TransactionManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.util.TransactionUtils;
 import 
org.apache.shardingsphere.transaction.ShardingSphereTransactionManagerEngine;
@@ -41,10 +40,10 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 /**
- * Backend transaction manager.
+ * Proxy backend transaction manager.
  */
 @SuppressWarnings({"rawtypes", "unchecked"})
-public final class BackendTransactionManager implements TransactionManager {
+public final class ProxyBackendTransactionManager {
     
     private final ProxyDatabaseConnectionManager connection;
     
@@ -58,7 +57,7 @@ public final class BackendTransactionManager implements 
TransactionManager {
     
     private final TransactionConnectionContext transactionContext;
     
-    public BackendTransactionManager(final ProxyDatabaseConnectionManager 
databaseConnectionManager) {
+    public ProxyBackendTransactionManager(final ProxyDatabaseConnectionManager 
databaseConnectionManager) {
         connection = databaseConnectionManager;
         localTransactionManager = new 
LocalTransactionManager(databaseConnectionManager);
         TransactionRule transactionRule = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(TransactionRule.class);
@@ -73,7 +72,9 @@ public final class BackendTransactionManager implements 
TransactionManager {
         transactionHooks = OrderedSPILoader.getServices(TransactionHook.class, 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules());
     }
     
-    @Override
+    /**
+     * Begin transaction.
+     */
     public void begin() {
         if 
(!connection.getConnectionSession().getTransactionStatus().isInTransaction()) {
             
connection.getConnectionSession().getTransactionStatus().setInTransaction(true);
@@ -99,7 +100,11 @@ public final class BackendTransactionManager implements 
TransactionManager {
         }
     }
     
-    @Override
+    /**
+     * Commit transaction.
+     *
+     * @throws SQLException SQL exception
+     */
     public void commit() throws SQLException {
         if 
(!connection.getConnectionSession().getTransactionStatus().isInTransaction()) {
             return;
@@ -147,7 +152,11 @@ public final class BackendTransactionManager implements 
TransactionManager {
         connection.getConnectionSession().getConnectionContext().close();
     }
     
-    @Override
+    /**
+     * Rollback transaction.
+     *
+     * @throws SQLException SQL exception
+     */
     public void rollback() throws SQLException {
         if 
(!connection.getConnectionSession().getTransactionStatus().isInTransaction()) {
             return;
@@ -172,7 +181,12 @@ public final class BackendTransactionManager implements 
TransactionManager {
         }
     }
     
-    @Override
+    /**
+     * Set savepoint.
+     *
+     * @param savepointName savepoint name
+     * @throws SQLException SQL exception
+     */
     public void setSavepoint(final String savepointName) throws SQLException {
         for (Connection each : connection.getCachedConnections().values()) {
             ConnectionSavepointManager.getInstance().setSavepoint(each, 
savepointName);
@@ -180,7 +194,12 @@ public final class BackendTransactionManager implements 
TransactionManager {
         connection.getConnectionPostProcessors().add(target -> 
ConnectionSavepointManager.getInstance().setSavepoint(target, savepointName));
     }
     
-    @Override
+    /**
+     * Rollback to savepoint.
+     *
+     * @param savepointName savepoint name
+     * @throws SQLException SQL exception
+     */
     public void rollbackTo(final String savepointName) throws SQLException {
         Collection<SQLException> result = new LinkedList<>();
         for (Connection each : connection.getCachedConnections().values()) {
@@ -196,7 +215,12 @@ public final class BackendTransactionManager implements 
TransactionManager {
         throwSQLExceptionIfNecessary(result);
     }
     
-    @Override
+    /**
+     * Release savepoint.
+     *
+     * @param savepointName savepoint name
+     * @throws SQLException SQL exception
+     */
     public void releaseSavepoint(final String savepointName) throws 
SQLException {
         Collection<SQLException> result = new LinkedList<>();
         for (Connection each : connection.getCachedConnections().values()) {
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandler.java
index a1483c67499..257fef8c4aa 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandler.java
@@ -21,8 +21,7 @@ import 
org.apache.shardingsphere.database.connector.core.metadata.database.metad
 import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.database.exception.core.exception.transaction.InTransactionException;
 import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
-import org.apache.shardingsphere.proxy.backend.connector.TransactionManager;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
@@ -51,14 +50,14 @@ public final class TCLBackendHandler implements 
ProxyBackendHandler {
     
     private final DialectDatabaseMetaData dialectDatabaseMetaData;
     
-    private final TransactionManager backendTransactionManager;
+    private final ProxyBackendTransactionManager transactionManager;
     
     public TCLBackendHandler(final TCLStatement tclStatement, final 
TransactionOperationType operationType, final ConnectionSession 
connectionSession) {
         this.tclStatement = tclStatement;
         this.operationType = operationType;
         this.connectionSession = connectionSession;
         dialectDatabaseMetaData = new 
DatabaseTypeRegistry(connectionSession.getProtocolType()).getDialectDatabaseMetaData();
-        backendTransactionManager = new 
BackendTransactionManager(connectionSession.getDatabaseConnectionManager());
+        transactionManager = new 
ProxyBackendTransactionManager(connectionSession.getDatabaseConnectionManager());
     }
     
     @Override
@@ -78,10 +77,10 @@ public final class TCLBackendHandler implements 
ProxyBackendHandler {
                 break;
             case COMMIT:
                 SQLStatement sqlStatement = getSQLStatementByCommit();
-                backendTransactionManager.commit();
+                transactionManager.commit();
                 return new UpdateResponseHeader(sqlStatement);
             case ROLLBACK:
-                backendTransactionManager.rollback();
+                transactionManager.rollback();
                 break;
             case SET_AUTOCOMMIT:
                 handleSetAutoCommit();
@@ -95,30 +94,30 @@ public final class TCLBackendHandler implements 
ProxyBackendHandler {
     private void handleBegin() throws SQLException {
         if (connectionSession.getTransactionStatus().isInTransaction()) {
             if 
(dialectDatabaseMetaData.getTransactionOption().isSupportAutoCommitInNestedTransaction())
 {
-                backendTransactionManager.commit();
+                transactionManager.commit();
             } else if 
(dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent()) {
                 throw new InTransactionException();
             }
         }
-        backendTransactionManager.begin();
+        transactionManager.begin();
     }
     
     private void handleSavepoint() throws SQLException {
         
ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction()
 || !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent(),
                 () -> new SQLFeatureNotSupportedException("SAVEPOINT can only 
be used in transaction blocks"));
-        backendTransactionManager.setSavepoint(((SavepointStatement) 
tclStatement).getSavepointName());
+        transactionManager.setSavepoint(((SavepointStatement) 
tclStatement).getSavepointName());
     }
     
     private void handleRollbackToSavepoint() throws SQLException {
         
ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction()
 || !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent(),
                 () -> new SQLFeatureNotSupportedException("ROLLBACK TO 
SAVEPOINT can only be used in transaction blocks"));
-        backendTransactionManager.rollbackTo(((RollbackStatement) 
tclStatement).getSavepointName().get());
+        transactionManager.rollbackTo(((RollbackStatement) 
tclStatement).getSavepointName().get());
     }
     
     private void handleReleaseSavepoint() throws SQLException {
         
ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction()
 || !dialectDatabaseMetaData.getSchemaOption().getDefaultSchema().isPresent(),
                 () -> new SQLFeatureNotSupportedException("RELEASE SAVEPOINT 
can only be used in transaction blocks"));
-        
backendTransactionManager.releaseSavepoint(((ReleaseSavepointStatement) 
tclStatement).getSavepointName());
+        transactionManager.releaseSavepoint(((ReleaseSavepointStatement) 
tclStatement).getSavepointName());
     }
     
     private SQLStatement getSQLStatementByCommit() {
@@ -130,7 +129,7 @@ public final class TCLBackendHandler implements 
ProxyBackendHandler {
     private void handleSetAutoCommit() throws SQLException {
         if 
(dialectDatabaseMetaData.getTransactionOption().isSupportAutoCommitInNestedTransaction()
 && connectionSession.getTransactionStatus().isInTransaction()
                 && ((SetAutoCommitStatement) tclStatement).isAutoCommit()) {
-            backendTransactionManager.commit();
+            transactionManager.commit();
         }
         connectionSession.setAutoCommit(((SetAutoCommitStatement) 
tclStatement).isAutoCommit());
     }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManagerTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManagerTest.java
index 9d3b7435d54..97016b2ef60 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManagerTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManagerTest.java
@@ -36,7 +36,7 @@ import 
org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.connection.ConnectionPostProcessor;
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.datasource.JDBCBackendDataSource;
 import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.statement.JDBCBackendStatement;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.exception.BackendConnectionException;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
@@ -315,7 +315,7 @@ class ProxyDatabaseConnectionManagerTest {
     void assertHandleAutoCommit() {
         when(connectionSession.isAutoCommit()).thenReturn(false);
         connectionSession.getTransactionStatus().setInTransaction(false);
-        try (MockedConstruction<BackendTransactionManager> mockedConstruction 
= mockConstruction(BackendTransactionManager.class)) {
+        try (MockedConstruction<ProxyBackendTransactionManager> 
mockedConstruction = mockConstruction(ProxyBackendTransactionManager.class)) {
             databaseConnectionManager.handleAutoCommit();
             verify(mockedConstruction.constructed().get(0)).begin();
         }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManagerTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManagerTest.java
index a0f4fe8a6bb..d6ad7a9f4e6 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManagerTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/jdbc/transaction/BackendTransactionManagerTest.java
@@ -75,7 +75,7 @@ class BackendTransactionManagerTest {
     @Mock
     private Connection connection;
     
-    private BackendTransactionManager backendTransactionManager;
+    private ProxyBackendTransactionManager transactionManager;
     
     @BeforeEach
     void setUp() {
@@ -98,8 +98,8 @@ class BackendTransactionManagerTest {
     void assertBeginForLocalTransaction() {
         ContextManager contextManager = 
mockContextManager(TransactionType.LOCAL);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        newBackendTransactionManager(TransactionType.LOCAL, false);
-        backendTransactionManager.begin();
+        newTransactionManager(TransactionType.LOCAL, false);
+        transactionManager.begin();
         verify(transactionStatus).setInTransaction(true);
         verify(databaseConnectionManager).closeHandlers(true);
         verify(databaseConnectionManager).closeConnections(false);
@@ -110,8 +110,8 @@ class BackendTransactionManagerTest {
     void assertBeginForDistributedTransaction() {
         ContextManager contextManager = mockContextManager(TransactionType.XA);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        newBackendTransactionManager(TransactionType.XA, true);
-        backendTransactionManager.begin();
+        newTransactionManager(TransactionType.XA, true);
+        transactionManager.begin();
         verify(transactionStatus, times(0)).setInTransaction(true);
         verify(databaseConnectionManager, times(1)).closeConnections(false);
         verify(distributedTransactionManager).begin();
@@ -121,8 +121,8 @@ class BackendTransactionManagerTest {
     void assertCommitForLocalTransaction() throws SQLException {
         ContextManager contextManager = 
mockContextManager(TransactionType.LOCAL);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        newBackendTransactionManager(TransactionType.LOCAL, true);
-        backendTransactionManager.commit();
+        newTransactionManager(TransactionType.LOCAL, true);
+        transactionManager.commit();
         verify(transactionStatus).setInTransaction(false);
         verify(localTransactionManager).commit();
     }
@@ -131,8 +131,8 @@ class BackendTransactionManagerTest {
     void assertCommitForDistributedTransaction() throws SQLException {
         ContextManager contextManager = mockContextManager(TransactionType.XA);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        newBackendTransactionManager(TransactionType.XA, true);
-        backendTransactionManager.commit();
+        newTransactionManager(TransactionType.XA, true);
+        transactionManager.commit();
         verify(transactionStatus).setInTransaction(false);
         verify(distributedTransactionManager).commit(false);
     }
@@ -141,8 +141,8 @@ class BackendTransactionManagerTest {
     void assertCommitWithoutTransaction() throws SQLException {
         ContextManager contextManager = 
mockContextManager(TransactionType.LOCAL);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        newBackendTransactionManager(TransactionType.LOCAL, false);
-        backendTransactionManager.commit();
+        newTransactionManager(TransactionType.LOCAL, false);
+        transactionManager.commit();
         verify(transactionStatus, times(0)).setInTransaction(false);
         verify(localTransactionManager, times(0)).commit();
         verify(distributedTransactionManager, times(0)).commit(false);
@@ -152,8 +152,8 @@ class BackendTransactionManagerTest {
     void assertRollbackForLocalTransaction() throws SQLException {
         ContextManager contextManager = 
mockContextManager(TransactionType.LOCAL);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        newBackendTransactionManager(TransactionType.LOCAL, true);
-        backendTransactionManager.rollback();
+        newTransactionManager(TransactionType.LOCAL, true);
+        transactionManager.rollback();
         verify(transactionStatus).setInTransaction(false);
         verify(localTransactionManager).rollback();
     }
@@ -162,8 +162,8 @@ class BackendTransactionManagerTest {
     void assertRollbackForDistributedTransaction() throws SQLException {
         ContextManager contextManager = mockContextManager(TransactionType.XA);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        newBackendTransactionManager(TransactionType.XA, true);
-        backendTransactionManager.rollback();
+        newTransactionManager(TransactionType.XA, true);
+        transactionManager.rollback();
         verify(transactionStatus).setInTransaction(false);
         verify(distributedTransactionManager).rollback();
     }
@@ -172,30 +172,30 @@ class BackendTransactionManagerTest {
     void assertRollbackWithoutTransaction() throws SQLException {
         ContextManager contextManager = 
mockContextManager(TransactionType.LOCAL);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        newBackendTransactionManager(TransactionType.LOCAL, false);
-        backendTransactionManager.rollback();
+        newTransactionManager(TransactionType.LOCAL, false);
+        transactionManager.rollback();
         verify(transactionStatus, times(0)).setInTransaction(false);
         verify(localTransactionManager, times(0)).rollback();
         verify(distributedTransactionManager, times(0)).rollback();
     }
     
-    private void newBackendTransactionManager(final TransactionType 
transactionType, final boolean inTransaction) {
+    private void newTransactionManager(final TransactionType transactionType, 
final boolean inTransaction) {
         
when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(TransactionRule.class).getDefaultType())
                 .thenReturn(transactionType);
         when(transactionStatus.isInTransaction()).thenReturn(inTransaction);
-        backendTransactionManager = new 
BackendTransactionManager(databaseConnectionManager);
+        transactionManager = new 
ProxyBackendTransactionManager(databaseConnectionManager);
         setLocalTransactionManager();
         setTransactionHooks();
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
     private void setLocalTransactionManager() {
-        
Plugins.getMemberAccessor().set(BackendTransactionManager.class.getDeclaredField("localTransactionManager"),
 backendTransactionManager, localTransactionManager);
+        
Plugins.getMemberAccessor().set(ProxyBackendTransactionManager.class.getDeclaredField("localTransactionManager"),
 transactionManager, localTransactionManager);
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
     private void setTransactionHooks() {
-        
Plugins.getMemberAccessor().set(BackendTransactionManager.class.getDeclaredField("transactionHooks"),
 backendTransactionManager, Collections.emptyMap());
+        
Plugins.getMemberAccessor().set(ProxyBackendTransactionManager.class.getDeclaredField("transactionHooks"),
 transactionManager, Collections.emptyMap());
     }
     
     private ContextManager mockContextManager(final TransactionType 
transactionType) {
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandlerFactoryTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandlerFactoryTest.java
index 77b857a7c85..672b7f8621a 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandlerFactoryTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLBackendHandlerFactoryTest.java
@@ -31,7 +31,7 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
 import 
org.apache.shardingsphere.proxy.backend.connector.DatabaseConnectorFactory;
 import 
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnectionManager;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -81,7 +81,7 @@ class TCLBackendHandlerFactoryTest {
         assertThat(proxyBackendHandler, isA(TCLBackendHandler.class));
         TCLBackendHandler backendHandler = (TCLBackendHandler) 
proxyBackendHandler;
         assertFieldOfInstance(backendHandler, "operationType", 
is(TransactionOperationType.COMMIT));
-        assertFieldOfInstance(getBackendTransactionManager(backendHandler), 
"connection", is(databaseConnectionManager));
+        assertFieldOfInstance(getTransactionManager(backendHandler), 
"connection", is(databaseConnectionManager));
     }
     
     @Test
@@ -99,7 +99,7 @@ class TCLBackendHandlerFactoryTest {
         assertThat(proxyBackendHandler, isA(TCLBackendHandler.class));
         TCLBackendHandler backendHandler = (TCLBackendHandler) 
proxyBackendHandler;
         assertFieldOfInstance(backendHandler, "operationType", 
is(TransactionOperationType.ROLLBACK));
-        assertFieldOfInstance(getBackendTransactionManager(backendHandler), 
"connection", is(databaseConnectionManager));
+        assertFieldOfInstance(getTransactionManager(backendHandler), 
"connection", is(databaseConnectionManager));
     }
     
     private ContextManager mockContextManager() {
@@ -138,7 +138,7 @@ class TCLBackendHandlerFactoryTest {
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
-    private BackendTransactionManager getBackendTransactionManager(final 
TCLBackendHandler backendHandler) {
-        return (BackendTransactionManager) 
Plugins.getMemberAccessor().get(TCLBackendHandler.class.getDeclaredField("backendTransactionManager"),
 backendHandler);
+    private ProxyBackendTransactionManager getTransactionManager(final 
TCLBackendHandler backendHandler) {
+        return (ProxyBackendTransactionManager) 
Plugins.getMemberAccessor().get(TCLBackendHandler.class.getDeclaredField("transactionManager"),
 backendHandler);
     }
 }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSessionTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSessionTest.java
index 730cde6a9d6..9d0430319a4 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSessionTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/session/ConnectionSessionTest.java
@@ -22,7 +22,7 @@ import org.apache.shardingsphere.infra.metadata.user.Grantee;
 import org.apache.shardingsphere.infra.session.query.QueryContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnectionManager;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
 import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
@@ -75,7 +75,7 @@ class ConnectionSessionTest {
         connectionSession.setCurrentDatabaseName("db");
         ContextManager contextManager = mockContextManager();
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        new BackendTransactionManager(databaseConnectionManager).begin();
+        new ProxyBackendTransactionManager(databaseConnectionManager).begin();
         connectionSession.setCurrentDatabaseName("newDB");
         assertThat(connectionSession.getCurrentDatabaseName(), is("newDB"));
     }
diff --git 
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdCommitTransactionCommandExecutor.java
 
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdCommitTransactionCommandExecutor.java
index 5a036f8a696..131047a17fc 100644
--- 
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdCommitTransactionCommandExecutor.java
+++ 
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdCommitTransactionCommandExecutor.java
@@ -21,7 +21,7 @@ import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.transaction.FirebirdCommitTransactionPacket;
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.generic.FirebirdGenericResponsePacket;
 import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
 
@@ -42,9 +42,9 @@ public final class FirebirdCommitTransactionCommandExecutor 
implements CommandEx
     @Override
     public Collection<DatabasePacket> execute() throws SQLException {
         if (!connectionSession.isAutoCommit()) {
-            BackendTransactionManager backendTransactionManager = new 
BackendTransactionManager(connectionSession.getDatabaseConnectionManager());
+            ProxyBackendTransactionManager transactionManager = new 
ProxyBackendTransactionManager(connectionSession.getDatabaseConnectionManager());
             // TODO add rollback and return exception
-            backendTransactionManager.commit();
+            transactionManager.commit();
         }
         return Collections.singleton(new FirebirdGenericResponsePacket());
     }
diff --git 
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdRollbackTransactionCommandExecutor.java
 
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdRollbackTransactionCommandExecutor.java
index 47c9a895d2f..ba843aa77f8 100644
--- 
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdRollbackTransactionCommandExecutor.java
+++ 
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdRollbackTransactionCommandExecutor.java
@@ -21,7 +21,7 @@ import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.transaction.FirebirdRollbackTransactionPacket;
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.generic.FirebirdGenericResponsePacket;
 import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
 
@@ -42,8 +42,8 @@ public final class FirebirdRollbackTransactionCommandExecutor 
implements Command
     @Override
     public Collection<DatabasePacket> execute() throws SQLException {
         if (!connectionSession.isAutoCommit()) {
-            BackendTransactionManager backendTransactionManager = new 
BackendTransactionManager(connectionSession.getDatabaseConnectionManager());
-            backendTransactionManager.rollback();
+            ProxyBackendTransactionManager transactionManager = new 
ProxyBackendTransactionManager(connectionSession.getDatabaseConnectionManager());
+            transactionManager.rollback();
         }
         return Collections.singleton(new FirebirdGenericResponsePacket());
     }
diff --git 
a/proxy/frontend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdCommitTransactionCommandExecutorTest.java
 
b/proxy/frontend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdCommitTransactionCommandExecutorTest.java
index 4f48f420e62..5c9a536f9dc 100644
--- 
a/proxy/frontend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdCommitTransactionCommandExecutorTest.java
+++ 
b/proxy/frontend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdCommitTransactionCommandExecutorTest.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.proxy.frontend.firebird.command.query.transact
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.transaction.FirebirdCommitTransactionPacket;
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.generic.FirebirdGenericResponsePacket;
 import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -50,7 +50,7 @@ class FirebirdCommitTransactionCommandExecutorTest {
     @Test
     void assertExecute() throws SQLException {
         when(connectionSession.isAutoCommit()).thenReturn(false);
-        try (MockedConstruction<BackendTransactionManager> mocked = 
mockConstruction(BackendTransactionManager.class, (mock, context) -> {
+        try (MockedConstruction<ProxyBackendTransactionManager> mocked = 
mockConstruction(ProxyBackendTransactionManager.class, (mock, context) -> {
         })) {
             FirebirdCommitTransactionCommandExecutor executor = new 
FirebirdCommitTransactionCommandExecutor(packet, connectionSession);
             Collection<DatabasePacket> actual = executor.execute();
diff --git 
a/proxy/frontend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdRollbackTransactionCommandExecutorTest.java
 
b/proxy/frontend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdRollbackTransactionCommandExecutorTest.java
index f3e6c4b09e2..09f5f79b4ba 100644
--- 
a/proxy/frontend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdRollbackTransactionCommandExecutorTest.java
+++ 
b/proxy/frontend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/transaction/FirebirdRollbackTransactionCommandExecutorTest.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.proxy.frontend.firebird.command.query.transact
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.transaction.FirebirdRollbackTransactionPacket;
 import 
org.apache.shardingsphere.database.protocol.firebird.packet.generic.FirebirdGenericResponsePacket;
 import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -50,7 +50,7 @@ class FirebirdRollbackTransactionCommandExecutorTest {
     @Test
     void assertExecute() throws SQLException {
         when(connectionSession.isAutoCommit()).thenReturn(false);
-        try (MockedConstruction<BackendTransactionManager> mocked = 
mockConstruction(BackendTransactionManager.class, (mock, context) -> {
+        try (MockedConstruction<ProxyBackendTransactionManager> mocked = 
mockConstruction(ProxyBackendTransactionManager.class, (mock, context) -> {
         })) {
             FirebirdRollbackTransactionCommandExecutor executor = new 
FirebirdRollbackTransactionCommandExecutor(packet, connectionSession);
             Collection<DatabasePacket> actual = executor.execute();
diff --git 
a/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutor.java
 
b/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutor.java
index 99d3efd42cb..b29d1f9d779 100644
--- 
a/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutor.java
+++ 
b/proxy/frontend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutor.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.proxy.frontend.mysql.command.admin;
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.database.protocol.mysql.packet.generic.MySQLOKPacket;
 import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
 import 
org.apache.shardingsphere.proxy.frontend.mysql.command.ServerStatusFlagCalculator;
@@ -39,7 +39,8 @@ public final class MySQLComResetConnectionExecutor implements 
CommandExecutor {
     
     @Override
     public Collection<DatabasePacket> execute() throws SQLException {
-        new 
BackendTransactionManager(connectionSession.getDatabaseConnectionManager()).rollback();
+        ProxyBackendTransactionManager transactionManager = new 
ProxyBackendTransactionManager(connectionSession.getDatabaseConnectionManager());
+        transactionManager.rollback();
         connectionSession.setAutoCommit(true);
         connectionSession.setDefaultIsolationLevel(null);
         connectionSession.setIsolationLevel(null);
diff --git 
a/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutorTest.java
 
b/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutorTest.java
index 3884ad84906..22dc7b9b314 100644
--- 
a/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutorTest.java
+++ 
b/proxy/frontend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutorTest.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.database.protocol.mysql.packet.generic.MySQLOKP
 import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
 import org.apache.shardingsphere.infra.hint.HintValueContext;
 import 
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnectionManager;
-import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.BackendTransactionManager;
+import 
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import 
org.apache.shardingsphere.proxy.backend.session.ServerPreparedStatementRegistry;
 import 
org.apache.shardingsphere.proxy.backend.session.transaction.TransactionStatus;
@@ -44,7 +44,7 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(AutoMockExtension.class)
-@ConstructionMockSettings(BackendTransactionManager.class)
+@ConstructionMockSettings(ProxyBackendTransactionManager.class)
 class MySQLComResetConnectionExecutorTest {
     
     @Test

Reply via email to