You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2026/06/18 10:43:41 UTC
(shardingsphere) branch master updated: Support Hive ALTER TABLE... EXECUTE CHERRY-PICK about iceberg statement parse (#38823)
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 b0a728ac74c Support Hive ALTER TABLE... EXECUTE CHERRY-PICK about iceberg statement parse (#38823)
b0a728ac74c is described below
commit b0a728ac74c41a15ef0c6650052615ded27538c8
Author: Claire <cl...@163.com>
AuthorDate: Thu Jun 18 18:43:34 2026 +0800
Support Hive ALTER TABLE... EXECUTE CHERRY-PICK about iceberg statement parse (#38823)
* hive cherry pick
* support hive cherry pick
* update
* update cherry-pick
* support hive cherry pick
* update cherry-pick
* update cherry-pick
---
RELEASE-NOTES.md | 1 +
.../src/main/antlr4/imports/hive/DDLStatement.g4 | 5 +++
.../src/main/antlr4/imports/hive/HiveKeyword.g4 | 4 +++
.../statement/type/HiveDDLStatementVisitor.java | 10 ++++++
.../ddl/table/CherryPickDefinitionSegment.java | 37 ++++++++++++++++++++++
.../type/ddl/table/AlterTableStatement.java | 14 ++++++++
.../standard/type/AlterTableStatementAssert.java | 14 ++++++++
.../definition/ExpectedCherryPickDefinition.java | 36 +++++++++++++++++++++
.../table/AlterTableStatementTestCase.java | 4 +++
.../src/main/resources/case/ddl/alter-table.xml | 7 ++++
.../resources/sql/supported/ddl/alter-table.xml | 1 +
11 files changed, 133 insertions(+)
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 93b5685b0df..a461975979d 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -34,6 +34,7 @@
1. Build: Support compiling and using ShardingSphere under OpenJDK 26 - [#38625](https://github.com/apache/shardingsphere/issues/38625)
1. Metadata: Support Oracle dictionary views by adding SYS default system schema and YAML definitions - [#38388](https://github.com/apache/shardingsphere/pull/38388)
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 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 6c07dc9873d..f76e4329972 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
@@ -82,6 +82,7 @@ alterTable
| alterTableCommonClause dropBranch
| alterTableCommonClause dropTag
| alterTableCommonClause deleteOrphanFile
+ | alterTableCommonClause cherryPickClause
;
createView
@@ -540,3 +541,7 @@ deleteOrphanFile
: EXECUTE DELETE ORPHAN_FILES
| EXECUTE DELETE ORPHAN_FILES OLDER THAN LP_ string_ RP_
;
+
+cherryPickClause
+ : EXECUTE CHERRY_PICK NUMBER_
+ ;
diff --git a/parser/sql/engine/dialect/hive/src/main/antlr4/imports/hive/HiveKeyword.g4 b/parser/sql/engine/dialect/hive/src/main/antlr4/imports/hive/HiveKeyword.g4
index 987de893fc8..ea573217dbb 100644
--- a/parser/sql/engine/dialect/hive/src/main/antlr4/imports/hive/HiveKeyword.g4
+++ b/parser/sql/engine/dialect/hive/src/main/antlr4/imports/hive/HiveKeyword.g4
@@ -3581,3 +3581,7 @@ ORPHAN_FILES
OLDER
: O L D E R
;
+
+CHERRY_PICK
+ : C H E R R Y '-' P I C K
+ ;
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 286c9459e00..79b98a2c351 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
@@ -65,7 +65,9 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.po
import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintDefinitionSegment;
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.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;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
@@ -93,6 +95,7 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.vi
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
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 java.util.Collection;
import java.util.Collections;
@@ -148,6 +151,13 @@ public final class HiveDDLStatementVisitor extends HiveStatementVisitor implemen
throw new IllegalArgumentException("[CLUSTERED INTO n BUCKETS] and [ORDER BY col_list] clauses can only be used with REBALANCE compaction");
}
}
+ if (null != ctx.cherryPickClause()) {
+ int numberStartIndex = ctx.cherryPickClause().NUMBER_().getSymbol().getStartIndex();
+ int numberStopIndex = ctx.cherryPickClause().NUMBER_().getSymbol().getStopIndex();
+ LiteralExpressionSegment snapshotId = new LiteralExpressionSegment(numberStartIndex, numberStopIndex,
+ new NumberLiteralValue(ctx.cherryPickClause().NUMBER_().getText()).getValue());
+ result.cherryPickDefinition(new CherryPickDefinitionSegment(ctx.cherryPickClause().EXECUTE().getSymbol().getStartIndex(), numberStopIndex, snapshotId));
+ }
return result.build();
}
diff --git a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/CherryPickDefinitionSegment.java b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/CherryPickDefinitionSegment.java
new file mode 100644
index 00000000000..a4bab69f913
--- /dev/null
+++ b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/CherryPickDefinitionSegment.java
@@ -0,0 +1,37 @@
+/*
+ * 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;
+
+/**
+ * Cherry pick definition segment.
+ */
+@RequiredArgsConstructor
+@Getter
+public final class CherryPickDefinitionSegment implements AlterDefinitionSegment {
+
+ private final int startIndex;
+
+ private final int stopIndex;
+
+ private final LiteralExpressionSegment 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 9bcae109564..f1d2f693a03 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
@@ -52,6 +52,7 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.al
import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.RenameRollupDefinitionSegment;
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.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;
@@ -90,6 +91,8 @@ public final class AlterTableStatement extends DDLStatement {
private final DropPrimaryKeyDefinitionSegment dropPrimaryKeyDefinition;
+ private final CherryPickDefinitionSegment cherryPickDefinition;
+
private final Collection<PropertiesSegment> setPropertiesDefinitions;
private final Collection<EnableFeatureSegment> enableFeatureDefinitions;
@@ -146,6 +149,7 @@ public final class AlterTableStatement extends DDLStatement {
private AlterTableStatement(final DatabaseType databaseType, final SimpleTableSegment table, final SimpleTableSegment renameTable, final ReplaceTableDefinitionSegment replaceTable,
final ConvertTableDefinitionSegment convertTableDefinition, final ModifyCollectionRetrievalSegment modifyCollectionRetrieval,
final AlgorithmTypeSegment algorithmSegment, final LockTableSegment lockTableSegment, final DropPrimaryKeyDefinitionSegment dropPrimaryKeyDefinition,
+ final CherryPickDefinitionSegment cherryPickDefinition,
@Singular("setPropertiesDefinition") final Collection<PropertiesSegment> setPropertiesDefinitions,
@Singular("enableFeatureDefinition") final Collection<EnableFeatureSegment> enableFeatureDefinitions,
@Singular("modifyTableCommentDefinition") final Collection<ModifyTableCommentSegment> modifyTableCommentDefinitions,
@@ -180,6 +184,7 @@ public final class AlterTableStatement extends DDLStatement {
this.algorithmSegment = algorithmSegment;
this.lockTableSegment = lockTableSegment;
this.dropPrimaryKeyDefinition = dropPrimaryKeyDefinition;
+ this.cherryPickDefinition = cherryPickDefinition;
this.setPropertiesDefinitions = setPropertiesDefinitions;
this.enableFeatureDefinitions = enableFeatureDefinitions;
this.modifyTableCommentDefinitions = modifyTableCommentDefinitions;
@@ -299,6 +304,15 @@ public final class AlterTableStatement extends DDLStatement {
return Optional.ofNullable(dropPrimaryKeyDefinition);
}
+ /**
+ * Get cherry pick definition.
+ *
+ * @return cherry pick definition
+ */
+ public Optional<CherryPickDefinitionSegment> getCherryPickDefinition() {
+ return Optional.ofNullable(cherryPickDefinition);
+ }
+
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 d803710e8d1..730f995402d 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
@@ -43,6 +43,7 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.Dr
import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ModifyTableCommentSegment;
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.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;
@@ -137,6 +138,7 @@ public final class AlterTableStatementAssert {
assertConvertTable(assertContext, actual, expected);
assertModifyCollectionRetrievalDefinitions(assertContext, actual, expected);
assertDropPrimaryKeyDefinition(assertContext, actual, expected);
+ assertCherryPickDefinition(assertContext, actual, expected);
assertSetPropertiesDefinitions(assertContext, actual, expected);
assertEnableFeatureDefinitions(assertContext, actual, expected);
assertModifyTableCommentDefinitions(assertContext, actual, expected);
@@ -576,6 +578,18 @@ public final class AlterTableStatementAssert {
SQLSegmentAssert.assertIs(assertContext, actual.getDropPrimaryKeyDefinition().get(), expected.getDropPrimaryKeyDefinition());
}
+ private static void assertCherryPickDefinition(final SQLCaseAssertContext assertContext, final AlterTableStatement actual, final AlterTableStatementTestCase expected) {
+ Optional<CherryPickDefinitionSegment> cherryPickDefinition = actual.getCherryPickDefinition();
+ if (null == expected.getCherryPickDefinition()) {
+ assertFalse(cherryPickDefinition.isPresent(), assertContext.getText("Actual cherry pick definition should not exist."));
+ } else {
+ assertTrue(cherryPickDefinition.isPresent(), assertContext.getText("Actual cherry pick definition should exist."));
+ CherryPickDefinitionSegment actualCherryPickDefinition = cherryPickDefinition.get();
+ ExpressionAssert.assertLiteralExpression(assertContext, actualCherryPickDefinition.getSnapshotId(), expected.getCherryPickDefinition().getSnapshotId());
+ SQLSegmentAssert.assertIs(assertContext, actualCherryPickDefinition, expected.getCherryPickDefinition());
+ }
+ }
+
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/ExpectedCherryPickDefinition.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedCherryPickDefinition.java
new file mode 100644
index 00000000000..e6f8c5c3530
--- /dev/null
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedCherryPickDefinition.java
@@ -0,0 +1,36 @@
+/*
+ * 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 cherry pick definition.
+ */
+@Getter
+@Setter
+public final class ExpectedCherryPickDefinition extends AbstractExpectedSQLSegment {
+
+ @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 b833f6ea052..892e8242787 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
@@ -26,6 +26,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.ExpectedConstraintDefinition;
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.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;
@@ -123,6 +124,9 @@ public final class AlterTableStatementTestCase extends SQLParserTestCase {
@XmlElement(name = "drop-primary-key")
private ExpectedDropPrimaryKeyDefinition dropPrimaryKeyDefinition;
+ @XmlElement(name = "cherry-pick")
+ private ExpectedCherryPickDefinition cherryPickDefinition;
+
@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 ffe04ec2f3c..8728da6cb63 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
@@ -3729,4 +3729,11 @@
</column-definition>
</modify-column>
</alter-table>
+
+ <alter-table sql-case-id="alter_table_execute_cherry_pick">
+ <table name="test" start-index="12" stop-index="15" />
+ <cherry-pick start-index="17" stop-index="55">
+ <snapshot-id value="8602659039622823857" start-index="37" stop-index="55" />
+ </cherry-pick>
+ </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 6ca5948a95c..fd6d6e333f0 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
@@ -471,4 +471,5 @@
<sql-case id="alter_table_modify_column_with_key_after_doris" value="ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT KEY DEFAULT "1" AFTER col2;" db-types="Doris" />
<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-cases>