You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by yx...@apache.org on 2022/09/07 14:52:48 UTC

[shardingsphere] branch master updated: Refactor TransactionXAHandler (#20863)

This is an automated email from the ASF dual-hosted git repository.

yx9o 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 7571ef83685 Refactor TransactionXAHandler (#20863)
7571ef83685 is described below

commit 7571ef836855cf9fc228734ba7148de314a1e1d1
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Sep 7 22:52:29 2022 +0800

    Refactor TransactionXAHandler (#20863)
---
 .../proxy/backend/handler/transaction/TransactionXAHandler.java   | 8 ++++----
 .../sql/parser/sql/common/statement/tcl/XAStatement.java          | 2 +-
 .../parser/sql/dialect/statement/mysql/tcl/MySQLXAStatement.java  | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionXAHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionXAHandler.java
index cfefb146e7f..97e12472264 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionXAHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionXAHandler.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.proxy.backend.handler.transaction;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.binder.QueryContext;
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
 import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
 import org.apache.shardingsphere.proxy.backend.communication.jdbc.JDBCDatabaseCommunicationEngine;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
@@ -31,6 +32,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.XAStatement
 import org.apache.shardingsphere.transaction.exception.StartNestedXATransactionException;
 
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
 import java.util.Collections;
 
 /**
@@ -72,9 +74,7 @@ public final class TransactionXAHandler implements ProxyBackendHandler {
                  * we have to let session occupy the thread when doing xa transaction.
                  * according to https://dev.mysql.com/doc/refman/5.7/en/xa-states.html XA and local transactions are mutually exclusive
                  */
-                if (connectionSession.getTransactionStatus().isInTransaction()) {
-                    throw new StartNestedXATransactionException();
-                }
+                ShardingSpherePreconditions.checkState(!connectionSession.getTransactionStatus().isInTransaction(), new StartNestedXATransactionException());
                 ResponseHeader header = backendHandler.execute();
                 connectionSession.getConnectionContext().getTransactionConnectionContext().setInTransaction(true);
                 return header;
@@ -91,7 +91,7 @@ public final class TransactionXAHandler implements ProxyBackendHandler {
                     connectionSession.getConnectionContext().clearCursorConnectionContext();
                 }
             default:
-                throw new SQLException("unrecognized XA statement " + tclStatement.getOp());
+                throw new SQLFeatureNotSupportedException(String.format("unrecognized XA statement `%s`", tclStatement.getOp()));
         }
     }
 }
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/tcl/XAStatement.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/tcl/XAStatement.java
index b3666507ece..31b25666865 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/tcl/XAStatement.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/tcl/XAStatement.java
@@ -23,7 +23,7 @@ import lombok.ToString;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
 
 /**
- * Set xa statement.
+ * XA statement.
  */
 @Getter
 @Setter
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/tcl/MySQLXAStatement.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/tcl/MySQLXAStatement.java
index 51be98e91c8..83fbedd281c 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/tcl/MySQLXAStatement.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/mysql/tcl/MySQLXAStatement.java
@@ -22,7 +22,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.XAStatement
 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.MySQLStatement;
 
 /**
- * MySQL savepoint statement.
+ * MySQL XA statement.
  */
 @ToString(callSuper = true)
 public final class MySQLXAStatement extends XAStatement implements MySQLStatement {