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

tuichenchuxin 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 3bb4d50d195 Fix savepoint(#20820) (#20837)
3bb4d50d195 is described below

commit 3bb4d50d195c438b58ce427a7bbf354326824ab3
Author: ZhangCheng <[email protected]>
AuthorDate: Tue Sep 6 19:32:38 2022 +0800

    Fix savepoint(#20820) (#20837)
---
 .../proxy/backend/handler/transaction/TransactionBackendHandler.java    | 2 ++
 1 file changed, 2 insertions(+)

diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
index 6cfbe02304b..a400760eda2 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandler.java
@@ -150,6 +150,7 @@ public final class TransactionBackendHandler implements 
ProxyBackendHandler {
     private void handleSavepoint() throws SQLException {
         
ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction()
 || !isPostgreSQLOrOpenGauss(),
                 new SQLFeatureNotSupportedException("SAVEPOINT can only be 
used in transaction blocks"));
+        backendTransactionManager.setSavepoint(((SavepointStatement) 
tclStatement).getSavepointName());
     }
     
     private void handleRollbackToSavepoint() throws SQLException {
@@ -161,6 +162,7 @@ public final class TransactionBackendHandler implements 
ProxyBackendHandler {
     private void handleReleaseSavepoint() throws SQLException {
         
ShardingSpherePreconditions.checkState(connectionSession.getTransactionStatus().isInTransaction()
 || !isPostgreSQLOrOpenGauss(),
                 new SQLFeatureNotSupportedException("RELEASE SAVEPOINT can 
only be used in transaction blocks"));
+        
backendTransactionManager.releaseSavepoint(((ReleaseSavepointStatement) 
tclStatement).getSavepointName());
     }
     
     private boolean isPostgreSQLOrOpenGauss() {

Reply via email to