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 10b32a5d34e Refactor TCLProxyBackendHandlerFactory (#36794)
10b32a5d34e is described below
commit 10b32a5d34e8b2c9d92f24daf36c9506b05cf2d6
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Oct 5 21:14:58 2025 +0800
Refactor TCLProxyBackendHandlerFactory (#36794)
---
.../handler/tcl/TCLProxyBackendHandlerFactory.java | 81 ++--------------------
.../LocalTCLProxyBackendHandlerFactory.java} | 51 ++++----------
.../BeginTransactionProxyBackendHandler.java | 2 +-
.../{ => type}/CommitProxyBackendHandler.java | 2 +-
.../ReleaseSavepointProxyBackendHandler.java | 2 +-
.../{ => type}/RollbackProxyBackendHandler.java | 2 +-
.../RollbackSavepointProxyBackendHandler.java | 2 +-
.../SetAutoCommitProxyBackendHandler.java | 2 +-
.../SetSavepointProxyBackendHandler.java | 2 +-
.../SetTransactionProxyBackendHandler.java | 2 +-
.../tcl/xa/XATCLProxyBackendHandlerFactory.java | 76 ++++++++++++++++++++
.../xa/{ => type}/XABeginProxyBackendHandler.java | 2 +-
.../xa/{ => type}/XACommitProxyBackendHandler.java | 2 +-
.../XAOtherOperationProxyBackendHandler.java | 2 +-
.../{ => type}/XARecoveryProxyBackendHandler.java | 2 +-
.../{ => type}/XARollbackProxyBackendHandler.java | 2 +-
.../handler/ProxyBackendHandlerFactoryTest.java | 16 ++---
.../tcl/TCLProxyBackendHandlerFactoryTest.java | 4 +-
18 files changed, 116 insertions(+), 138 deletions(-)
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
index 5a75dccbacb..2ee7f2cc383 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
@@ -20,43 +20,12 @@ package org.apache.shardingsphere.proxy.backend.handler.tcl;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import org.apache.shardingsphere.infra.hint.HintValueContext;
-import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
-import
org.apache.shardingsphere.proxy.backend.connector.DatabaseConnectorFactory;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.BeginTransactionProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.CommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.ReleaseSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetAutoCommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetTransactionProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XABeginProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XACommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XAOtherOperationProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XARecoveryProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XARollbackProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.LocalTCLProxyBackendHandlerFactory;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XATCLProxyBackendHandlerFactory;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import
org.apache.shardingsphere.sql.parser.statement.core.enums.OperationScope;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.BeginTransactionStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.CommitStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.ReleaseSavepointStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.RollbackStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SavepointStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetAutoCommitStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetTransactionStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.TCLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XABeginStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XACommitStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARecoveryStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARollbackStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XAStatement;
-import java.util.Collections;
-
/**
* TCL proxy backend handler factory.
*/
@@ -72,48 +41,8 @@ public final class TCLProxyBackendHandlerFactory {
* @return created instance
*/
public static ProxyBackendHandler newInstance(final SQLStatementContext
sqlStatementContext, final String sql, final ConnectionSession
connectionSession) {
- TCLStatement sqlStatement = (TCLStatement)
sqlStatementContext.getSqlStatement();
- if (sqlStatement instanceof BeginTransactionStatement) {
- return new BeginTransactionProxyBackendHandler(sqlStatement,
connectionSession);
- }
- if (sqlStatement instanceof SetAutoCommitStatement) {
- return new SetAutoCommitProxyBackendHandler(sqlStatement,
connectionSession);
- }
- if (sqlStatement instanceof CommitStatement) {
- return new CommitProxyBackendHandler(sqlStatement,
connectionSession);
- }
- if (sqlStatement instanceof RollbackStatement) {
- return ((RollbackStatement)
sqlStatement).getSavepointName().isPresent()
- ? new RollbackSavepointProxyBackendHandler(sqlStatement,
connectionSession)
- : new RollbackProxyBackendHandler(sqlStatement,
connectionSession);
- }
- if (sqlStatement instanceof SavepointStatement) {
- return new SetSavepointProxyBackendHandler(sqlStatement,
connectionSession);
- }
- if (sqlStatement instanceof ReleaseSavepointStatement) {
- return new ReleaseSavepointProxyBackendHandler(sqlStatement,
connectionSession);
- }
- if (sqlStatement instanceof SetTransactionStatement &&
!((SetTransactionStatement)
sqlStatement).isDesiredScope(OperationScope.GLOBAL)) {
- return new
SetTransactionProxyBackendHandler((SetTransactionStatement) sqlStatement,
connectionSession);
- }
- QueryContext queryContext = new QueryContext(sqlStatementContext, sql,
- Collections.emptyList(), new HintValueContext(),
connectionSession.getConnectionContext(),
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData());
- DatabaseConnector databaseConnector =
DatabaseConnectorFactory.getInstance().newInstance(queryContext,
connectionSession.getDatabaseConnectionManager(), false);
- if (sqlStatement instanceof XARecoveryStatement) {
- return new XARecoveryProxyBackendHandler(databaseConnector);
- }
- if (sqlStatement instanceof XABeginStatement) {
- return new XABeginProxyBackendHandler(connectionSession,
databaseConnector);
- }
- if (sqlStatement instanceof XACommitStatement) {
- return new XACommitProxyBackendHandler(connectionSession,
databaseConnector);
- }
- if (sqlStatement instanceof XARollbackStatement) {
- return new XARollbackProxyBackendHandler(connectionSession,
databaseConnector);
- }
- if (sqlStatement instanceof XAStatement) {
- return new XAOtherOperationProxyBackendHandler(databaseConnector);
- }
- return
DatabaseConnectorFactory.getInstance().newInstance(queryContext,
connectionSession.getDatabaseConnectionManager(), false);
+ return sqlStatementContext.getSqlStatement() instanceof XAStatement
+ ?
XATCLProxyBackendHandlerFactory.newInstance(sqlStatementContext, sql,
connectionSession)
+ :
LocalTCLProxyBackendHandlerFactory.newInstance(sqlStatementContext, sql,
connectionSession);
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/LocalTCLProxyBackendHandlerFactory.java
similarity index 67%
copy from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
copy to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/LocalTCLProxyBackendHandlerFactory.java
index 5a75dccbacb..217f5c0c989 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/LocalTCLProxyBackendHandlerFactory.java
@@ -15,30 +15,24 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
import
org.apache.shardingsphere.proxy.backend.connector.DatabaseConnectorFactory;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.BeginTransactionProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.CommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.ReleaseSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetAutoCommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetTransactionProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XABeginProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XACommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XAOtherOperationProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XARecoveryProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.XARollbackProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.BeginTransactionProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.CommitProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.ReleaseSavepointProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackSavepointProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetAutoCommitProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetSavepointProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetTransactionProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.sql.parser.statement.core.enums.OperationScope;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.BeginTransactionStatement;
@@ -49,22 +43,17 @@ import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.Sa
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetAutoCommitStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetTransactionStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.TCLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XABeginStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XACommitStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARecoveryStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARollbackStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XAStatement;
import java.util.Collections;
/**
- * TCL proxy backend handler factory.
+ * Local TCL proxy backend handler factory.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class TCLProxyBackendHandlerFactory {
+public final class LocalTCLProxyBackendHandlerFactory {
/**
- * New instance of TCL proxy backend handler.
+ * New instance of local TCL proxy backend handler.
*
* @param sqlStatementContext SQL statement context
* @param sql SQL
@@ -98,22 +87,6 @@ public final class TCLProxyBackendHandlerFactory {
}
QueryContext queryContext = new QueryContext(sqlStatementContext, sql,
Collections.emptyList(), new HintValueContext(),
connectionSession.getConnectionContext(),
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData());
- DatabaseConnector databaseConnector =
DatabaseConnectorFactory.getInstance().newInstance(queryContext,
connectionSession.getDatabaseConnectionManager(), false);
- if (sqlStatement instanceof XARecoveryStatement) {
- return new XARecoveryProxyBackendHandler(databaseConnector);
- }
- if (sqlStatement instanceof XABeginStatement) {
- return new XABeginProxyBackendHandler(connectionSession,
databaseConnector);
- }
- if (sqlStatement instanceof XACommitStatement) {
- return new XACommitProxyBackendHandler(connectionSession,
databaseConnector);
- }
- if (sqlStatement instanceof XARollbackStatement) {
- return new XARollbackProxyBackendHandler(connectionSession,
databaseConnector);
- }
- if (sqlStatement instanceof XAStatement) {
- return new XAOtherOperationProxyBackendHandler(databaseConnector);
- }
return
DatabaseConnectorFactory.getInstance().newInstance(queryContext,
connectionSession.getDatabaseConnectionManager(), false);
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/BeginTransactionProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/BeginTransactionProxyBackendHandler.java
similarity index 99%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/BeginTransactionProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/BeginTransactionProxyBackendHandler.java
index 0c898c0adf2..eae52653b7f 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/BeginTransactionProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/BeginTransactionProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
import
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
import
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/CommitProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/CommitProxyBackendHandler.java
similarity index 99%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/CommitProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/CommitProxyBackendHandler.java
index 6cf2e0ff70c..ed48fe972e5 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/CommitProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/CommitProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
import
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
import
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/ReleaseSavepointProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/ReleaseSavepointProxyBackendHandler.java
similarity index 99%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/ReleaseSavepointProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/ReleaseSavepointProxyBackendHandler.java
index 27e97f84a5e..1d24f3b48c5 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/ReleaseSavepointProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/ReleaseSavepointProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
import
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
import
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackProxyBackendHandler.java
similarity index 99%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackProxyBackendHandler.java
index 3a664dc1ca8..08995730e6b 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
import
org.apache.shardingsphere.proxy.backend.connector.jdbc.transaction.ProxyBackendTransactionManager;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackSavepointProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackSavepointProxyBackendHandler.java
similarity index 99%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackSavepointProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackSavepointProxyBackendHandler.java
index 538bd3a335c..8516f1c6fb9 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/RollbackSavepointProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/RollbackSavepointProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
import
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
import
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetAutoCommitProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetAutoCommitProxyBackendHandler.java
similarity index 99%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetAutoCommitProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetAutoCommitProxyBackendHandler.java
index 592e329b517..7a438ec8008 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetAutoCommitProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetAutoCommitProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
import
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
import
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetSavepointProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetSavepointProxyBackendHandler.java
similarity index 99%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetSavepointProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetSavepointProxyBackendHandler.java
index 64e8990507c..fb5ae6e9c55 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetSavepointProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetSavepointProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
import
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
import
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetTransactionProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetTransactionProxyBackendHandler.java
similarity index 99%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetTransactionProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetTransactionProxyBackendHandler.java
index 278bf43489b..4d9be1298a4 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/SetTransactionProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/local/type/SetTransactionProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.local;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.local.type;
import
org.apache.shardingsphere.database.connector.core.metadata.database.metadata.DialectDatabaseMetaData;
import
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
new file mode 100644
index 00000000000..69d2be8bad4
--- /dev/null
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XATCLProxyBackendHandlerFactory.java
@@ -0,0 +1,76 @@
+/*
+ * 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.handler.tcl.xa;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import org.apache.shardingsphere.infra.hint.HintValueContext;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
+import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
+import
org.apache.shardingsphere.proxy.backend.connector.DatabaseConnectorFactory;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XABeginProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XACommitProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XAOtherOperationProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XARecoveryProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type.XARollbackProxyBackendHandler;
+import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XABeginStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XACommitStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARecoveryStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XARollbackStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa.XAStatement;
+
+import java.util.Collections;
+
+/**
+ * XA TCL proxy backend handler factory.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class XATCLProxyBackendHandlerFactory {
+
+ /**
+ * New instance of XA TCL proxy backend handler.
+ *
+ * @param sqlStatementContext SQL statement context
+ * @param sql SQL
+ * @param connectionSession connection session
+ * @return created instance
+ */
+ public static ProxyBackendHandler newInstance(final SQLStatementContext
sqlStatementContext, final String sql, final ConnectionSession
connectionSession) {
+ XAStatement sqlStatement = (XAStatement)
sqlStatementContext.getSqlStatement();
+ QueryContext queryContext = new QueryContext(sqlStatementContext, sql,
+ Collections.emptyList(), new HintValueContext(),
connectionSession.getConnectionContext(),
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData());
+ DatabaseConnector databaseConnector =
DatabaseConnectorFactory.getInstance().newInstance(queryContext,
connectionSession.getDatabaseConnectionManager(), false);
+ if (sqlStatement instanceof XARecoveryStatement) {
+ return new XARecoveryProxyBackendHandler(databaseConnector);
+ }
+ if (sqlStatement instanceof XABeginStatement) {
+ return new XABeginProxyBackendHandler(connectionSession,
databaseConnector);
+ }
+ if (sqlStatement instanceof XACommitStatement) {
+ return new XACommitProxyBackendHandler(connectionSession,
databaseConnector);
+ }
+ if (sqlStatement instanceof XARollbackStatement) {
+ return new XARollbackProxyBackendHandler(connectionSession,
databaseConnector);
+ }
+ return new XAOtherOperationProxyBackendHandler(databaseConnector);
+ }
+}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XABeginProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
similarity index 97%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XABeginProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
index 48d10afcba9..261ea7f52a9 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XABeginProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XABeginProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XACommitProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XACommitProxyBackendHandler.java
similarity index 96%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XACommitProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XACommitProxyBackendHandler.java
index ca31f2fb18f..19592508342 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XACommitProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XACommitProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XAOtherOperationProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XAOtherOperationProxyBackendHandler.java
similarity index 95%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XAOtherOperationProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XAOtherOperationProxyBackendHandler.java
index f531ce14681..97a8fd0780e 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XAOtherOperationProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XAOtherOperationProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARecoveryProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARecoveryProxyBackendHandler.java
similarity index 96%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARecoveryProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARecoveryProxyBackendHandler.java
index eec8178d535..5fd2ca99220 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARecoveryProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARecoveryProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARollbackProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARollbackProxyBackendHandler.java
similarity index 96%
rename from
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARollbackProxyBackendHandler.java
rename to
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARollbackProxyBackendHandler.java
index f43ae271368..c53bbf7d86b 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/XARollbackProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/tcl/xa/type/XARollbackProxyBackendHandler.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.handler.tcl.xa;
+package org.apache.shardingsphere.proxy.backend.handler.tcl.xa.type;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.proxy.backend.connector.DatabaseConnector;
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
index d77c42c41fe..c8a81c74ea4 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
@@ -43,14 +43,14 @@ import
org.apache.shardingsphere.proxy.backend.handler.data.impl.UnicastDatabase
import
org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryBackendHandler;
import
org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLUpdateBackendHandler;
import org.apache.shardingsphere.proxy.backend.handler.skip.SkipBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.BeginTransactionProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.CommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.ReleaseSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetAutoCommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetSavepointProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.SetTransactionProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.BeginTransactionProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.CommitProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.ReleaseSavepointProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackSavepointProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetAutoCommitProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetSavepointProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.SetTransactionProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.EmptyStatement;
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactoryTest.java
index 1c95c3df31b..83f754aecce 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/tcl/TCLProxyBackendHandlerFactoryTest.java
@@ -34,8 +34,8 @@ import
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnection
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.handler.tcl.local.CommitProxyBackendHandler;
-import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.RollbackProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.CommitProxyBackendHandler;
+import
org.apache.shardingsphere.proxy.backend.handler.tcl.local.type.RollbackProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.CommitStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.RollbackStatement;