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

sunnianjun 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 90d108bd031 Refactor ConnectionSavepointManager (#27412)
90d108bd031 is described below

commit 90d108bd0310ede8324db3733aff984a0865ea99
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jul 24 13:16:37 2023 +0800

    Refactor ConnectionSavepointManager (#27412)
---
 .../shardingsphere/transaction/ConnectionSavepointManager.java       | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git 
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionSavepointManager.java
 
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionSavepointManager.java
index 0a7cfff0259..f4f3ee657ad 100644
--- 
a/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionSavepointManager.java
+++ 
b/kernel/transaction/core/src/main/java/org/apache/shardingsphere/transaction/ConnectionSavepointManager.java
@@ -21,6 +21,7 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.infra.database.mysql.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.database.spi.DatabaseType;
 
 import java.sql.Connection;
 import java.sql.SQLException;
@@ -86,7 +87,9 @@ public final class ConnectionSavepointManager {
     public void releaseSavepoint(final Connection connection, final String 
savepointName) throws SQLException {
         Optional<Savepoint> result = lookupSavepoint(connection, 
savepointName);
         if (result.isPresent()) {
-            if (DatabaseTypeFactory.get(connection.getMetaData().getURL()) 
instanceof MySQLDatabaseType) {
+            DatabaseType databaseType = 
DatabaseTypeFactory.get(connection.getMetaData().getURL());
+            databaseType = 
databaseType.getTrunkDatabaseType().orElse(databaseType);
+            if (databaseType instanceof MySQLDatabaseType) {
                 try (Statement statement = connection.createStatement()) {
                     statement.execute(String.format("RELEASE SAVEPOINT %s", 
savepointName));
                 }

Reply via email to