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));
}