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

terrymanu 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 72d13fbd504 Support Hive ALTER TABLE... EXECUTE ROLLBACK about iceberg 
statement parse (#38876)
72d13fbd504 is described below

commit 72d13fbd5042ab7fdbd66b5ba56c86064e139077
Author: Claire <[email protected]>
AuthorDate: Sun Jun 21 15:45:20 2026 +0800

    Support Hive ALTER TABLE... EXECUTE ROLLBACK about iceberg statement parse 
(#38876)
    
    * support hive table rollback
    
    * release-notes
---
 RELEASE-NOTES.md                                   |  1 +
 .../src/main/antlr4/imports/hive/DDLStatement.g4   |  6 +++
 .../statement/type/HiveDDLStatementVisitor.java    | 18 ++++++++
 .../ddl/table/TableRollbackDefinitionSegment.java  | 49 ++++++++++++++++++++++
 .../type/ddl/table/AlterTableStatement.java        | 14 +++++++
 .../standard/type/AlterTableStatementAssert.java   | 15 +++++++
 .../ExpectedTableRollbackDefinition.java           | 39 +++++++++++++++++
 .../table/AlterTableStatementTestCase.java         |  4 ++
 .../src/main/resources/case/ddl/alter-table.xml    | 14 +++++++
 .../resources/sql/supported/ddl/alter-table.xml    |  2 +
 10 files changed, 162 insertions(+)

diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index c4c581ec0df..ffb9ce3a480 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -37,6 +37,7 @@
 1. SQL Parser: Support Hive OPTIMIZE Statement about iceberg statement parse - 
[#38877](https://github.com/apache/shardingsphere/pull/38877)
 1. SQL Parser: Support Hive DELETE ORPHAN-FILES Statement about iceberg 
statement parse - [#38669](https://github.com/apache/shardingsphere/pull/38669)
 1. SQL Parser: Support Hive ALTER TABLE... EXECUTE CHERRY-PICK about iceberg 
statement parse- [#38823](https://github.com/apache/shardingsphere/pull/38823)
+1. SQL Parser: Support Hive ALTER TABLE... EXECUTE ROLLBACK about iceberg 
statement parse- [#38876](https://github.com/apache/shardingsphere/pull/38876)
 1. SQL Parser: Support MySQL Function statement parse - 
[#38182](https://github.com/apache/shardingsphere/pull/38182) 
[#38219](https://github.com/apache/shardingsphere/pull/38219)
 1. SQL Parser: Support additional MySQL SELECT index hint and MATCH ... 
AGAINST WITH ROLLUP syntax - 
[#38233](https://github.com/apache/shardingsphere/pull/38233)
 1. SQL Parser: Support MySQL CREATE EVENT and additional CREATE FUNCTION 
RETURN syntax - [#38237](https://github.com/apache/shardingsphere/pull/38237)
diff --git 
a/parser/sql/engine/dialect/hive/src/main/antlr4/imports/hive/DDLStatement.g4 
b/parser/sql/engine/dialect/hive/src/main/antlr4/imports/hive/DDLStatement.g4
index f76e4329972..7ee459b8471 100644
--- 
a/parser/sql/engine/dialect/hive/src/main/antlr4/imports/hive/DDLStatement.g4
+++ 
b/parser/sql/engine/dialect/hive/src/main/antlr4/imports/hive/DDLStatement.g4
@@ -83,6 +83,7 @@ alterTable
     | alterTableCommonClause dropTag
     | alterTableCommonClause deleteOrphanFile
     | alterTableCommonClause cherryPickClause
+    | alterTableCommonClause tableRollback
     ;
 
 createView
@@ -545,3 +546,8 @@ deleteOrphanFile
 cherryPickClause
     : EXECUTE CHERRY_PICK NUMBER_
     ;
+
+tableRollback
+    : EXECUTE ROLLBACK LP_ string_ RP_
+    | EXECUTE ROLLBACK LP_ NUMBER_ RP_
+    ;
diff --git 
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
index 79b98a2c351..caebb3989ad 100644
--- 
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
@@ -66,6 +66,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constrain
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexNameSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.CherryPickDefinitionSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.TableRollbackDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.simple.LiteralExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DataTypeSegment;
@@ -96,6 +97,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.Se
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.collection.CollectionValue;
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.literal.impl.NumberLiteralValue;
+import 
org.apache.shardingsphere.sql.parser.statement.core.value.literal.impl.StringLiteralValue;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -158,6 +160,22 @@ public final class HiveDDLStatementVisitor extends 
HiveStatementVisitor implemen
                     new 
NumberLiteralValue(ctx.cherryPickClause().NUMBER_().getText()).getValue());
             result.cherryPickDefinition(new 
CherryPickDefinitionSegment(ctx.cherryPickClause().EXECUTE().getSymbol().getStartIndex(),
 numberStopIndex, snapshotId));
         }
+        if (null != ctx.tableRollback()) {
+            int startIndex = 
ctx.tableRollback().EXECUTE().getSymbol().getStartIndex();
+            if (null != ctx.tableRollback().string_()) {
+                int stringStartIndex = 
ctx.tableRollback().string_().getStart().getStartIndex();
+                int stringStopIndex = 
ctx.tableRollback().string_().getStop().getStopIndex();
+                LiteralExpressionSegment timestamp = new 
LiteralExpressionSegment(stringStartIndex, stringStopIndex,
+                        new 
StringLiteralValue(ctx.tableRollback().string_().getText()).getValue());
+                result.tableRollbackDefinition(new 
TableRollbackDefinitionSegment(startIndex, stringStopIndex, timestamp, null));
+            } else {
+                int numberStartIndex = 
ctx.tableRollback().NUMBER_().getSymbol().getStartIndex();
+                int numberStopIndex = 
ctx.tableRollback().NUMBER_().getSymbol().getStopIndex();
+                LiteralExpressionSegment snapshotId = new 
LiteralExpressionSegment(numberStartIndex, numberStopIndex,
+                        new 
NumberLiteralValue(ctx.tableRollback().NUMBER_().getText()).getValue());
+                result.tableRollbackDefinition(new 
TableRollbackDefinitionSegment(startIndex, numberStopIndex, null, snapshotId));
+            }
+        }
         return result.build();
     }
     
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/TableRollbackDefinitionSegment.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/TableRollbackDefinitionSegment.java
new file mode 100644
index 00000000000..ba146e755b3
--- /dev/null
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/TableRollbackDefinitionSegment.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.AlterDefinitionSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.simple.LiteralExpressionSegment;
+
+import java.util.Optional;
+
+/**
+ * Table rollback definition segment.
+ */
+@RequiredArgsConstructor
+@Getter
+public final class TableRollbackDefinitionSegment implements 
AlterDefinitionSegment {
+    
+    private final int startIndex;
+    
+    private final int stopIndex;
+    
+    private final LiteralExpressionSegment timestamp;
+    
+    private final LiteralExpressionSegment snapshotId;
+    
+    public Optional<LiteralExpressionSegment> getTimestamp() {
+        return Optional.ofNullable(timestamp);
+    }
+    
+    public Optional<LiteralExpressionSegment> getSnapshotId() {
+        return Optional.ofNullable(snapshotId);
+    }
+}
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/AlterTableStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/AlterTableStatement.java
index f1d2f693a03..df4629882b0 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/AlterTableStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/AlterTableStatement.java
@@ -53,6 +53,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.Re
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.AlgorithmTypeSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ConvertTableDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.CherryPickDefinitionSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.TableRollbackDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.LockTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ModifyTableCommentSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ReplaceTableDefinitionSegment;
@@ -93,6 +94,8 @@ public final class AlterTableStatement extends DDLStatement {
     
     private final CherryPickDefinitionSegment cherryPickDefinition;
     
+    private final TableRollbackDefinitionSegment tableRollbackDefinition;
+    
     private final Collection<PropertiesSegment> setPropertiesDefinitions;
     
     private final Collection<EnableFeatureSegment> enableFeatureDefinitions;
@@ -150,6 +153,7 @@ public final class AlterTableStatement extends DDLStatement 
{
                                 final ConvertTableDefinitionSegment 
convertTableDefinition, final ModifyCollectionRetrievalSegment 
modifyCollectionRetrieval,
                                 final AlgorithmTypeSegment algorithmSegment, 
final LockTableSegment lockTableSegment, final DropPrimaryKeyDefinitionSegment 
dropPrimaryKeyDefinition,
                                 final CherryPickDefinitionSegment 
cherryPickDefinition,
+                                final TableRollbackDefinitionSegment 
tableRollbackDefinition,
                                 @Singular("setPropertiesDefinition") final 
Collection<PropertiesSegment> setPropertiesDefinitions,
                                 @Singular("enableFeatureDefinition") final 
Collection<EnableFeatureSegment> enableFeatureDefinitions,
                                 @Singular("modifyTableCommentDefinition") 
final Collection<ModifyTableCommentSegment> modifyTableCommentDefinitions,
@@ -185,6 +189,7 @@ public final class AlterTableStatement extends DDLStatement 
{
         this.lockTableSegment = lockTableSegment;
         this.dropPrimaryKeyDefinition = dropPrimaryKeyDefinition;
         this.cherryPickDefinition = cherryPickDefinition;
+        this.tableRollbackDefinition = tableRollbackDefinition;
         this.setPropertiesDefinitions = setPropertiesDefinitions;
         this.enableFeatureDefinitions = enableFeatureDefinitions;
         this.modifyTableCommentDefinitions = modifyTableCommentDefinitions;
@@ -313,6 +318,15 @@ public final class AlterTableStatement extends 
DDLStatement {
         return Optional.ofNullable(cherryPickDefinition);
     }
     
+    /**
+     * Get table rollback definition.
+     *
+     * @return table rollback definition
+     */
+    public Optional<TableRollbackDefinitionSegment> 
getTableRollbackDefinition() {
+        return Optional.ofNullable(tableRollbackDefinition);
+    }
+    
     private class AlterTableConstraintSQLStatementAttribute implements 
ConstraintSQLStatementAttribute {
         
         @Override
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterTableStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterTableStatementAssert.java
index 730f995402d..8f0e564ff7f 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterTableStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterTableStatementAssert.java
@@ -44,6 +44,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.Mod
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.primary.DropPrimaryKeyDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.CherryPickDefinitionSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.TableRollbackDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.OrderByColumnDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.RenameRollupDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ConvertTableDefinitionSegment;
@@ -139,6 +140,7 @@ public final class AlterTableStatementAssert {
         assertModifyCollectionRetrievalDefinitions(assertContext, actual, 
expected);
         assertDropPrimaryKeyDefinition(assertContext, actual, expected);
         assertCherryPickDefinition(assertContext, actual, expected);
+        assertTableRollbackDefinition(assertContext, actual, expected);
         assertSetPropertiesDefinitions(assertContext, actual, expected);
         assertEnableFeatureDefinitions(assertContext, actual, expected);
         assertModifyTableCommentDefinitions(assertContext, actual, expected);
@@ -590,6 +592,19 @@ public final class AlterTableStatementAssert {
         }
     }
     
+    private static void assertTableRollbackDefinition(final 
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final 
AlterTableStatementTestCase expected) {
+        Optional<TableRollbackDefinitionSegment> tableRollbackDefinition = 
actual.getTableRollbackDefinition();
+        if (null == expected.getTableRollbackDefinition()) {
+            assertFalse(tableRollbackDefinition.isPresent(), 
assertContext.getText("Actual table rollback definition should not exist."));
+        } else {
+            assertTrue(tableRollbackDefinition.isPresent(), 
assertContext.getText("Actual table rollback definition should exist."));
+            TableRollbackDefinitionSegment actualTableRollbackDefinition = 
tableRollbackDefinition.get();
+            ExpressionAssert.assertLiteralExpression(assertContext, 
actualTableRollbackDefinition.getTimestamp().orElse(null), 
expected.getTableRollbackDefinition().getTimestamp());
+            ExpressionAssert.assertLiteralExpression(assertContext, 
actualTableRollbackDefinition.getSnapshotId().orElse(null), 
expected.getTableRollbackDefinition().getSnapshotId());
+            SQLSegmentAssert.assertIs(assertContext, 
actualTableRollbackDefinition, expected.getTableRollbackDefinition());
+        }
+    }
+    
     private static void assertSetPropertiesDefinitions(final 
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final 
AlterTableStatementTestCase expected) {
         assertThat(assertContext.getText("Set properties definitions size 
assertion error: "), actual.getSetPropertiesDefinitions().size(), 
is(expected.getSetProperties().size()));
         int count = 0;
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedTableRollbackDefinition.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedTableRollbackDefinition.java
new file mode 100644
index 00000000000..09be63fda20
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedTableRollbackDefinition.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition;
+
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedSQLSegment;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.expr.simple.ExpectedLiteralExpression;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * Expected table rollback definition.
+ */
+@Getter
+@Setter
+public final class ExpectedTableRollbackDefinition extends 
AbstractExpectedSQLSegment {
+    
+    @XmlElement(name = "timestamp")
+    private ExpectedLiteralExpression timestamp;
+    
+    @XmlElement(name = "snapshot-id")
+    private ExpectedLiteralExpression snapshotId;
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/table/AlterTableStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/table/AlterTableStatementTestCase.java
index 892e8242787..649d2950af8 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/table/AlterTableStatementTestCase.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/table/AlterTableStatementTestCase.java
@@ -27,6 +27,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.segment.impl.definition.ExpectedConvertTableDefinition;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedDropPrimaryKeyDefinition;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedCherryPickDefinition;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedTableRollbackDefinition;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyCollectionRetrievalDefinition;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyColumnDefinition;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedRenameColumnDefinition;
@@ -127,6 +128,9 @@ public final class AlterTableStatementTestCase extends 
SQLParserTestCase {
     @XmlElement(name = "cherry-pick")
     private ExpectedCherryPickDefinition cherryPickDefinition;
     
+    @XmlElement(name = "table-rollback")
+    private ExpectedTableRollbackDefinition tableRollbackDefinition;
+    
     @XmlElement(name = "set-properties")
     private final List<ExpectedProperties> setProperties = new LinkedList<>();
     
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-table.xml 
b/test/it/parser/src/main/resources/case/ddl/alter-table.xml
index 8728da6cb63..b94556c2a6a 100644
--- a/test/it/parser/src/main/resources/case/ddl/alter-table.xml
+++ b/test/it/parser/src/main/resources/case/ddl/alter-table.xml
@@ -3736,4 +3736,18 @@
             <snapshot-id value="8602659039622823857" start-index="37" 
stop-index="55" />
         </cherry-pick>
     </alter-table>
+
+    <alter-table sql-case-id="alter_execute_rollback_timestamp">
+        <table name="ice_t" start-index="12" stop-index="16" />
+        <table-rollback start-index="18" stop-index="55">
+            <timestamp value="2022-05-12 00:00:00" start-index="35" 
stop-index="55" />
+        </table-rollback>
+    </alter-table>
+
+    <alter-table sql-case-id="alter_execute_rollback_snapshot_id">
+        <table name="ice_t" start-index="12" stop-index="16" />
+        <table-rollback start-index="18" stop-index="38">
+            <snapshot-id value="1111" start-index="35" stop-index="38" />
+        </table-rollback>
+    </alter-table>
 </sql-parser-test-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml 
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml
index fd6d6e333f0..4c8f8e940b3 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml
@@ -472,4 +472,6 @@
     <sql-case id="alter_table_modify_column_with_key_null_comment_doris" 
value="ALTER TABLE example_db.my_table MODIFY COLUMN k3 VARCHAR(50) KEY NULL 
COMMENT 'to 50'" db-types="Doris" />
     <sql-case id="alter_table_modify_column_with_key_not_null_doris" 
value="ALTER TABLE example_db.my_table MODIFY COLUMN k3 VARCHAR(50) KEY NOT 
NULL COMMENT 'not null'" db-types="Doris" />
     <sql-case id="alter_table_execute_cherry_pick" value="ALTER table test 
EXECUTE CHERRY-PICK 8602659039622823857;" db-types="Hive" />
+    <sql-case id="alter_execute_rollback_timestamp" value="ALTER TABLE ice_t 
EXECUTE ROLLBACK('2022-05-12 00:00:00')" db-types="Hive" />
+    <sql-case id="alter_execute_rollback_snapshot_id" value="ALTER TABLE ice_t 
EXECUTE ROLLBACK(1111);" db-types="Hive" />
 </sql-cases>

Reply via email to