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

FlyingZC 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 0e92f1517c7 Add SetTransactionStatementAssert to test transaction 
parse (#38730)
0e92f1517c7 is described below

commit 0e92f1517c7a85e75d23e6e1cdda608c4470d8c6
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed May 27 17:50:44 2026 +0800

    Add SetTransactionStatementAssert to test transaction parse (#38730)
---
 .../asserts/statement/tcl/TCLStatementAssert.java  |  5 +++
 ...t.java => ReleaseSavepointStatementAssert.java} | 20 +++++++-----
 .../tcl/type/SetTransactionStatementAssert.java    | 38 ++++++++++++++++++++++
 .../cases/parser/jaxb/RootSQLParserTestCases.java  |  4 +++
 ...java => ReleaseSavepointStatementTestCase.java} | 13 ++++++--
 .../tcl/SetTransactionStatementTestCase.java       | 15 +++++++++
 .../tcl/release-savepoint.xml}                     |  9 ++---
 .../main/resources/case/tcl/set-transaction.xml    | 33 +++++++++++--------
 ...start-transcation.xml => release-savepoint.xml} |  5 +--
 .../sql/supported/tcl/set-transaction.xml          | 13 +++++---
 .../sql/supported/tcl/start-transcation.xml        |  2 +-
 11 files changed, 118 insertions(+), 39 deletions(-)

diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/TCLStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/TCLStatementAssert.java
index fbd92e59ed3..08ee702507a 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/TCLStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/TCLStatementAssert.java
@@ -21,6 +21,7 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 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;
@@ -30,6 +31,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.TC
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.tcl.type.BeginTransactionStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.tcl.type.CommitStatementAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.tcl.type.ReleaseSavepointStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.tcl.type.RollbackStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.tcl.type.SavepointStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.tcl.type.SetAutoCommitStatementAssert;
@@ -38,6 +40,7 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.t
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.BeginTransactionStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.CommitStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.ReleaseSavepointStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.RollbackStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.SavepointStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.SetAutoCommitStatementTestCase;
@@ -70,6 +73,8 @@ public final class TCLStatementAssert {
             RollbackStatementAssert.assertIs(assertContext, 
(RollbackStatement) actual, (RollbackStatementTestCase) expected);
         } else if (actual instanceof SavepointStatement) {
             SavepointStatementAssert.assertIs(assertContext, 
(SavepointStatement) actual, (SavepointStatementTestCase) expected);
+        } else if (actual instanceof ReleaseSavepointStatement) {
+            ReleaseSavepointStatementAssert.assertIs(assertContext, 
(ReleaseSavepointStatement) actual, (ReleaseSavepointStatementTestCase) 
expected);
         } else if (actual instanceof SetConstraintsStatement) {
             SetConstraintsStatementAssert.assertIs(assertContext, 
(SetConstraintsStatement) actual, (SetConstraintsStatementTestCase) expected);
         }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/SetTransactionStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/ReleaseSavepointStatementAssert.java
similarity index 65%
copy from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/SetTransactionStatementAssert.java
copy to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/ReleaseSavepointStatementAssert.java
index df39b7b1ccd..4012d19edd6 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/SetTransactionStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/ReleaseSavepointStatementAssert.java
@@ -19,23 +19,27 @@ package 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetTransactionStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.ReleaseSavepointStatement;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.SetTransactionStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.ReleaseSavepointStatementTestCase;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
 
 /**
- * Set transaction statement assert.
+ * Release savepoint statement assert.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SetTransactionStatementAssert {
+public final class ReleaseSavepointStatementAssert {
     
     /**
-     * Assert set transaction statement is correct with expected parser result.
+     * Assert release savepoint statement is correct with expected parser 
result.
      *
      * @param assertContext assert context
-     * @param actual actual set transaction statement
-     * @param expected expected set transaction statement test case
+     * @param actual actual release savepoint statement
+     * @param expected expected release savepoint statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, 
final SetTransactionStatement actual, final SetTransactionStatementTestCase 
expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final ReleaseSavepointStatement actual, final ReleaseSavepointStatementTestCase 
expected) {
+        assertThat(assertContext.getText("Savepoint name assertion error."), 
actual.getSavepointName(), is(expected.getSavepointName()));
     }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/SetTransactionStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/SetTransactionStatementAssert.java
index df39b7b1ccd..c95c4b95195 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/SetTransactionStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/tcl/type/SetTransactionStatementAssert.java
@@ -19,10 +19,18 @@ package 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sql.parser.statement.core.enums.OperationScope;
+import 
org.apache.shardingsphere.sql.parser.statement.core.enums.TransactionAccessType;
+import 
org.apache.shardingsphere.sql.parser.statement.core.enums.TransactionIsolationLevel;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.SetTransactionStatement;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.SetTransactionStatementTestCase;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Set transaction statement assert.
  */
@@ -37,5 +45,35 @@ public final class SetTransactionStatementAssert {
      * @param expected expected set transaction statement test case
      */
     public static void assertIs(final SQLCaseAssertContext assertContext, 
final SetTransactionStatement actual, final SetTransactionStatementTestCase 
expected) {
+        assertScope(assertContext, actual, expected);
+        assertIsolationLevel(assertContext, actual, expected);
+        assertAccessMode(assertContext, actual, expected);
+    }
+    
+    private static void assertScope(final SQLCaseAssertContext assertContext, 
final SetTransactionStatement actual, final SetTransactionStatementTestCase 
expected) {
+        if (null == expected.getScope()) {
+            assertFalse(actual.containsScope(), assertContext.getText("Actual 
transaction scope should not exist."));
+            return;
+        }
+        
assertTrue(actual.isDesiredScope(OperationScope.valueOf(expected.getScope())), 
assertContext.getText("Transaction scope assertion error."));
+    }
+    
+    private static void assertIsolationLevel(final SQLCaseAssertContext 
assertContext, final SetTransactionStatement actual, final 
SetTransactionStatementTestCase expected) {
+        if (null == expected.getIsolationLevel()) {
+            assertFalse(actual.getIsolationLevel().isPresent(), 
assertContext.getText("Actual transaction isolation level should not exist."));
+            return;
+        }
+        assertTrue(actual.getIsolationLevel().isPresent(), 
assertContext.getText("Actual transaction isolation level should exist."));
+        assertThat(assertContext.getText("Transaction isolation level 
assertion error."), actual.getIsolationLevel().get(),
+                
is(TransactionIsolationLevel.valueOf(expected.getIsolationLevel())));
+    }
+    
+    private static void assertAccessMode(final SQLCaseAssertContext 
assertContext, final SetTransactionStatement actual, final 
SetTransactionStatementTestCase expected) {
+        if (null == expected.getAccessMode()) {
+            
assertFalse(actual.isDesiredAccessMode(TransactionAccessType.READ_ONLY), 
assertContext.getText("Actual transaction access mode should not be read 
only."));
+            
assertFalse(actual.isDesiredAccessMode(TransactionAccessType.READ_WRITE), 
assertContext.getText("Actual transaction access mode should not be read 
write."));
+            return;
+        }
+        
assertTrue(actual.isDesiredAccessMode(TransactionAccessType.valueOf(expected.getAccessMode())),
 assertContext.getText("Transaction access mode assertion error."));
     }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
index 47a55c95718..0c33657d05b 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
@@ -514,6 +514,7 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.CommitStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.LockStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.PrepareTransactionTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.ReleaseSavepointStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.RollbackStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.SavepointStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl.SetAutoCommitStatementTestCase;
@@ -748,6 +749,9 @@ public final class RootSQLParserTestCases {
     @XmlElement(name = "savepoint")
     private final List<SavepointStatementTestCase> savepointTestCases = new 
LinkedList<>();
     
+    @XmlElement(name = "release-savepoint")
+    private final List<ReleaseSavepointStatementTestCase> 
releaseSavepointTestCases = new LinkedList<>();
+    
     @XmlElement(name = "grant")
     private final List<GrantStatementTestCase> grantTestCases = new 
LinkedList<>();
     
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/SetTransactionStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/ReleaseSavepointStatementTestCase.java
similarity index 76%
copy from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/SetTransactionStatementTestCase.java
copy to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/ReleaseSavepointStatementTestCase.java
index 7cb028efa27..684caf75867 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/SetTransactionStatementTestCase.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/ReleaseSavepointStatementTestCase.java
@@ -17,10 +17,19 @@
 
 package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl;
 
+import lombok.Getter;
+import lombok.Setter;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 
+import javax.xml.bind.annotation.XmlAttribute;
+
 /**
- * Set transaction statement test case.
+ * Release savepoint statement test case.
  */
-public final class SetTransactionStatementTestCase extends SQLParserTestCase {
+@Getter
+@Setter
+public final class ReleaseSavepointStatementTestCase extends SQLParserTestCase 
{
+    
+    @XmlAttribute(name = "savepoint-name")
+    private String savepointName;
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/SetTransactionStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/SetTransactionStatementTestCase.java
index 7cb028efa27..a2e7758310c 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/SetTransactionStatementTestCase.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/tcl/SetTransactionStatementTestCase.java
@@ -17,10 +17,25 @@
 
 package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.tcl;
 
+import lombok.Getter;
+import lombok.Setter;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 
+import javax.xml.bind.annotation.XmlAttribute;
+
 /**
  * Set transaction statement test case.
  */
+@Getter
+@Setter
 public final class SetTransactionStatementTestCase extends SQLParserTestCase {
+    
+    @XmlAttribute(name = "scope")
+    private String scope;
+    
+    @XmlAttribute(name = "isolation-level")
+    private String isolationLevel;
+    
+    @XmlAttribute(name = "access-mode")
+    private String accessMode;
 }
diff --git 
a/test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml 
b/test/it/parser/src/main/resources/case/tcl/release-savepoint.xml
similarity index 63%
copy from 
test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml
copy to test/it/parser/src/main/resources/case/tcl/release-savepoint.xml
index 303321a747b..527ccb08693 100644
--- a/test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml
+++ b/test/it/parser/src/main/resources/case/tcl/release-savepoint.xml
@@ -16,9 +16,6 @@
   ~ limitations under the License.
   -->
 
-<sql-cases>
-    <sql-case id="start_transaction" value="START TRANSACTION" 
db-types="PostgreSQL,openGauss" />
-    <sql-case id="start_read_committed" value="START TRANSACTION ISOLATION 
LEVEL READ COMMITTED" db-types="PostgreSQL,openGauss" />
-    <sql-case id="start_read_only" value="START TRANSACTION READ ONLY" 
db-types="PostgreSQL,openGauss" />
-    <sql-case id="start_with_transaction_mode" value="START TRANSACTION 
ISOLATION LEVEL READ COMMITTED" db-types="PostgreSQL,openGauss" />
-</sql-cases>
+<sql-parser-test-cases>
+    <release-savepoint sql-case-id="release_savepoint" 
savepoint-name="savepoint1" />
+</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/tcl/set-transaction.xml 
b/test/it/parser/src/main/resources/case/tcl/set-transaction.xml
index cbce0a98e31..ea4869c9bb2 100644
--- a/test/it/parser/src/main/resources/case/tcl/set-transaction.xml
+++ b/test/it/parser/src/main/resources/case/tcl/set-transaction.xml
@@ -17,24 +17,29 @@
   -->
 
 <sql-parser-test-cases>
-    <set-transaction sql-case-id="set_transaction" />
-    <set-transaction sql-case-id="set_global_transaction" />
-    <set-transaction sql-case-id="set_session_transaction" />
-    <set-transaction sql-case-id="set_session_transaction_read_only_mysql" />
-    <set-transaction sql-case-id="set_session_transaction_read_write_mysql" />
-    <set-transaction sql-case-id="set_transaction_read_only" />
-    <set-transaction sql-case-id="set_transaction_read_write" />
+    <set-transaction sql-case-id="set_transaction" 
isolation-level="REPEATABLE_READ" />
+    <set-transaction sql-case-id="set_transaction_opengauss" />
+    <set-transaction sql-case-id="set_transaction_firebird" />
+    <set-transaction sql-case-id="set_global_transaction" scope="GLOBAL" 
isolation-level="REPEATABLE_READ" />
+    <set-transaction sql-case-id="set_session_transaction" scope="SESSION" 
isolation-level="READ_COMMITTED" />
+    <set-transaction sql-case-id="set_session_transaction_read_only_mysql" 
scope="SESSION" access-mode="READ_ONLY" />
+    <set-transaction sql-case-id="set_session_transaction_read_write_mysql" 
scope="SESSION" access-mode="READ_WRITE" />
+    <set-transaction sql-case-id="set_transaction_read_only" 
access-mode="READ_ONLY" />
+    <set-transaction sql-case-id="set_transaction_read_only_oracle" />
+    <set-transaction sql-case-id="set_transaction_read_write" 
access-mode="READ_WRITE" />
     <set-transaction sql-case-id="set_transaction_read_write_with_name" />
-    <set-transaction 
sql-case-id="set_transaction_isolation_level_serializable" />
-    <set-transaction 
sql-case-id="set_transaction_isolation_level_read_committed" />
-    <set-transaction 
sql-case-id="set_transaction_isolation_level_read_uncommitted" />
-    <set-transaction sql-case-id="set_transaction_isolation_level_snapshot" />
+    <set-transaction 
sql-case-id="set_transaction_isolation_level_serializable" 
isolation-level="SERIALIZABLE" />
+    <set-transaction 
sql-case-id="set_transaction_isolation_level_serializable_oracle" />
+    <set-transaction 
sql-case-id="set_transaction_isolation_level_read_committed" 
isolation-level="READ_COMMITTED" />
+    <set-transaction 
sql-case-id="set_transaction_isolation_level_read_committed_oracle" />
+    <set-transaction 
sql-case-id="set_transaction_isolation_level_read_uncommitted" 
isolation-level="READ_UNCOMMITTED" />
+    <set-transaction sql-case-id="set_transaction_isolation_level_snapshot" 
isolation-level="SNAPSHOT" />
     <set-transaction sql-case-id="set_transaction_use_rollback_segment" />
     <set-transaction sql-case-id="set_transaction_with_name" />
     <set-transaction sql-case-id="set_transaction_snapshot" />
-    <set-transaction sql-case-id="set_session_transaction_doris" />
-    <set-transaction sql-case-id="set_session_transaction_read_only_doris" />
-    <set-transaction sql-case-id="set_global_transaction_read_only_doris" />
+    <set-transaction sql-case-id="set_session_transaction_doris" 
scope="SESSION" isolation-level="READ_COMMITTED" />
+    <set-transaction sql-case-id="set_session_transaction_read_only_doris" 
scope="SESSION" access-mode="READ_ONLY" />
+    <set-transaction sql-case-id="set_global_transaction_read_only_doris" 
scope="GLOBAL" access-mode="READ_ONLY" />
     <set-transaction sql-case-id="set_transaction_sql92" />
     <xa sql-case-id="xa_recover" />
     <xa sql-case-id="xa_start" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml 
b/test/it/parser/src/main/resources/sql/supported/tcl/release-savepoint.xml
similarity index 65%
copy from 
test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml
copy to 
test/it/parser/src/main/resources/sql/supported/tcl/release-savepoint.xml
index 303321a747b..db7029598d1 100644
--- a/test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml
+++ b/test/it/parser/src/main/resources/sql/supported/tcl/release-savepoint.xml
@@ -17,8 +17,5 @@
   -->
 
 <sql-cases>
-    <sql-case id="start_transaction" value="START TRANSACTION" 
db-types="PostgreSQL,openGauss" />
-    <sql-case id="start_read_committed" value="START TRANSACTION ISOLATION 
LEVEL READ COMMITTED" db-types="PostgreSQL,openGauss" />
-    <sql-case id="start_read_only" value="START TRANSACTION READ ONLY" 
db-types="PostgreSQL,openGauss" />
-    <sql-case id="start_with_transaction_mode" value="START TRANSACTION 
ISOLATION LEVEL READ COMMITTED" db-types="PostgreSQL,openGauss" />
+    <sql-case id="release_savepoint" value="RELEASE SAVEPOINT savepoint1" 
db-types="MySQL" />
 </sql-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/tcl/set-transaction.xml 
b/test/it/parser/src/main/resources/sql/supported/tcl/set-transaction.xml
index 368f7535816..60689221d0b 100644
--- a/test/it/parser/src/main/resources/sql/supported/tcl/set-transaction.xml
+++ b/test/it/parser/src/main/resources/sql/supported/tcl/set-transaction.xml
@@ -17,7 +17,9 @@
   -->
 
 <sql-cases>
-    <sql-case id="set_transaction" value="SET TRANSACTION ISOLATION LEVEL 
REPEATABLE READ" db-types="MySQL,PostgreSQL,openGauss,SQLServer,Doris,Firebird" 
/>
+    <sql-case id="set_transaction" value="SET TRANSACTION ISOLATION LEVEL 
REPEATABLE READ" db-types="MySQL,PostgreSQL,SQLServer,Doris" />
+    <sql-case id="set_transaction_opengauss" value="SET TRANSACTION ISOLATION 
LEVEL REPEATABLE READ" db-types="openGauss" />
+    <sql-case id="set_transaction_firebird" value="SET TRANSACTION ISOLATION 
LEVEL REPEATABLE READ" db-types="Firebird" />
     <sql-case id="set_global_transaction" value="SET GLOBAL TRANSACTION 
ISOLATION LEVEL REPEATABLE READ" db-types="MySQL,Doris" />
     <sql-case id="set_session_transaction" value="SET SESSION TRANSACTION 
ISOLATION LEVEL READ COMMITTED" db-types="MySQL" />
     <sql-case id="set_session_transaction_read_only_mysql" value="SET SESSION 
TRANSACTION READ ONLY" db-types="MySQL" />
@@ -25,11 +27,14 @@
     <sql-case id="set_session_transaction_doris" value="SET SESSION 
TRANSACTION ISOLATION LEVEL READ COMMITTED" db-types="Doris" />
     <sql-case id="set_session_transaction_read_only_doris" value="SET SESSION 
TRANSACTION READ ONLY" db-types="Doris" />
     <sql-case id="set_global_transaction_read_only_doris" value="SET GLOBAL 
TRANSACTION READ ONLY" db-types="Doris" />
-    <sql-case id="set_transaction_read_only" value="SET TRANSACTION READ ONLY" 
db-types="MySQL,Oracle,Doris" />
+    <sql-case id="set_transaction_read_only" value="SET TRANSACTION READ ONLY" 
db-types="MySQL,Doris" />
+    <sql-case id="set_transaction_read_only_oracle" value="SET TRANSACTION 
READ ONLY" db-types="Oracle" />
     <sql-case id="set_transaction_read_write" value="SET TRANSACTION READ 
WRITE" db-types="MySQL,Doris" />
     <sql-case id="set_transaction_read_write_with_name" value="SET TRANSACTION 
READ WRITE NAME 'Toronto'" db-types="Oracle" />
-    <sql-case id="set_transaction_isolation_level_serializable" value="SET 
TRANSACTION ISOLATION LEVEL SERIALIZABLE" db-types="Oracle, SQLServer,Doris" />
-    <sql-case id="set_transaction_isolation_level_read_committed" value="SET 
TRANSACTION ISOLATION LEVEL READ COMMITTED" db-types="MySQL,Oracle, 
SQLServer,Doris" />
+    <sql-case id="set_transaction_isolation_level_serializable" value="SET 
TRANSACTION ISOLATION LEVEL SERIALIZABLE" db-types="SQLServer,Doris" />
+    <sql-case id="set_transaction_isolation_level_serializable_oracle" 
value="SET TRANSACTION ISOLATION LEVEL SERIALIZABLE" db-types="Oracle" />
+    <sql-case id="set_transaction_isolation_level_read_committed" value="SET 
TRANSACTION ISOLATION LEVEL READ COMMITTED" db-types="MySQL,SQLServer,Doris" />
+    <sql-case id="set_transaction_isolation_level_read_committed_oracle" 
value="SET TRANSACTION ISOLATION LEVEL READ COMMITTED" db-types="Oracle" />
     <sql-case id="set_transaction_isolation_level_read_uncommitted" value="SET 
TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" db-types="MySQL,Doris" />
     <sql-case id="set_transaction_isolation_level_snapshot" value="SET 
TRANSACTION ISOLATION LEVEL SNAPSHOT" db-types="SQLServer" />
     <sql-case id="set_transaction_use_rollback_segment" value="SET TRANSACTION 
USE ROLLBACK SEGMENT rbs_ts" db-types="Oracle" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml 
b/test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml
index 303321a747b..9d16548f81d 100644
--- a/test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml
+++ b/test/it/parser/src/main/resources/sql/supported/tcl/start-transcation.xml
@@ -17,7 +17,7 @@
   -->
 
 <sql-cases>
-    <sql-case id="start_transaction" value="START TRANSACTION" 
db-types="PostgreSQL,openGauss" />
+    <sql-case id="start_transaction" value="START TRANSACTION" 
db-types="MySQL,PostgreSQL,openGauss" />
     <sql-case id="start_read_committed" value="START TRANSACTION ISOLATION 
LEVEL READ COMMITTED" db-types="PostgreSQL,openGauss" />
     <sql-case id="start_read_only" value="START TRANSACTION READ ONLY" 
db-types="PostgreSQL,openGauss" />
     <sql-case id="start_with_transaction_mode" value="START TRANSACTION 
ISOLATION LEVEL READ COMMITTED" db-types="PostgreSQL,openGauss" />

Reply via email to