This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 e149c9d15a6 Support parsing Doris TRUNCATE TABLE and ALTER TABLE
DISTRIBUTION syntax (#38202)
e149c9d15a6 is described below
commit e149c9d15a6c03bb193940ee2b454d3accf8da27
Author: cxy <[email protected]>
AuthorDate: Thu Feb 26 21:02:28 2026 +0800
Support parsing Doris TRUNCATE TABLE and ALTER TABLE DISTRIBUTION syntax
(#38202)
* Support parsing Doris TRUNCATE TABLE and ALTER TABLE DISTRIBUTION syntax
* Support parsing Doris TRUNCATE TABLE and ALTER TABLE DISTRIBUTION syntax
---
.../src/main/antlr4/imports/doris/DDLStatement.g4 | 9 ++++-
.../statement/type/DorisDDLStatementVisitor.java | 30 +++++++++++++--
.../distribution/ModifyDistributionSegment.java | 2 +
.../core/statement/type/ddl/TruncateStatement.java | 4 ++
.../standard/type/AlterTableStatementAssert.java | 3 ++
.../ddl/standard/type/TruncateStatementAssert.java | 24 ++++++++++++
.../ExpectedModifyDistributionDefinition.java | 3 ++
.../ddl/standard/TruncateStatementTestCase.java | 4 ++
.../src/main/resources/case/ddl/alter-table.xml | 44 ++++++++++++++++++++++
.../src/main/resources/case/ddl/truncate.xml | 20 ++++++++++
.../resources/sql/supported/ddl/alter-table.xml | 5 +++
.../main/resources/sql/supported/ddl/truncate.xml | 3 ++
12 files changed, 146 insertions(+), 5 deletions(-)
diff --git
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
index c9204ef75aa..8ba849b2d2c 100644
---
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
+++
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
@@ -52,6 +52,11 @@ distributedbyClause
: DISTRIBUTED BY HASH (LP_ columnName RP_) BUCKETS NUMBER_
;
+modifyDistributionClause
+ : DISTRIBUTED BY HASH LP_ columnNames RP_ BUCKETS (NUMBER_ | AUTO)
+ | DISTRIBUTED BY RANDOM BUCKETS (NUMBER_ | AUTO)
+ ;
+
propertiesClause
: PROPERTIES LP_ properties RP_
;
@@ -193,7 +198,7 @@ standaloneAlterCommands
| (SECONDARY_LOAD | SECONDARY_UNLOAD)
| SET LP_ properties RP_
| ENABLE FEATURE string_ (WITH PROPERTIES LP_ properties RP_)?
- | MODIFY DISTRIBUTION distributedbyClause
+ | MODIFY DISTRIBUTION modifyDistributionClause
| MODIFY COMMENT string_
| MODIFY ENGINE TO identifier PROPERTIES LP_ properties RP_
;
@@ -289,7 +294,7 @@ alterLockOption
;
truncateTable
- : TRUNCATE TABLE? tableName
+ : TRUNCATE TABLE? tableName partitionNames?
;
createIndex
diff --git
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
index 8aa178e3be0..1ff0587bac8 100644
---
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
@@ -135,6 +135,7 @@ import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.AlterPa
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.AlterStoragePolicyContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DorisPartitionDescContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DistributedbyClauseContext;
+import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ModifyDistributionClauseContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PartitionValueListContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PropertiesClauseContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PropertiesContext;
@@ -606,8 +607,8 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
}
statement.getEnableFeatureDefinitions().add(enableFeatureSegment);
}
- if (null != ctx.distributedbyClause()) {
- ModifyDistributionSegment modifyDistributionSegment =
(ModifyDistributionSegment) visit(ctx.distributedbyClause());
+ if (null != ctx.modifyDistributionClause()) {
+ ModifyDistributionSegment modifyDistributionSegment =
(ModifyDistributionSegment) visit(ctx.modifyDistributionClause());
statement.getModifyDistributionDefinitions().add(modifyDistributionSegment);
}
if (null != ctx.MODIFY() && null != ctx.COMMENT() && null !=
ctx.string_()) {
@@ -636,6 +637,23 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
return result;
}
+ @Override
+ public ASTNode visitModifyDistributionClause(final
ModifyDistributionClauseContext ctx) {
+ ModifyDistributionSegment result = new
ModifyDistributionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
+ if (null != ctx.columnNames()) {
+ for (ColumnNameContext each : ctx.columnNames().columnName()) {
+ result.getColumns().add((ColumnSegment) visit(each));
+ }
+ }
+ if (null != ctx.NUMBER_()) {
+ result.setBuckets(Integer.parseInt(ctx.NUMBER_().getText()));
+ }
+ if (null != ctx.AUTO()) {
+ result.setAutoBuckets(true);
+ }
+ return result;
+ }
+
private void setAlterDefinition(final AlterTableStatement
alterTableStatement, final AlterDefinitionSegment alterDefinitionSegment) {
if (alterDefinitionSegment instanceof AddColumnDefinitionSegment) {
alterTableStatement.getAddColumnDefinitions().add((AddColumnDefinitionSegment)
alterDefinitionSegment);
@@ -1038,7 +1056,13 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
- return new TruncateStatement(getDatabaseType(),
Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
+ TruncateStatement result = new TruncateStatement(getDatabaseType(),
Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
+ if (null != ctx.partitionNames()) {
+ for (IdentifierContext each : ctx.partitionNames().identifier()) {
+ result.getPartitions().add(new
PartitionSegment(each.getStart().getStartIndex(),
each.getStop().getStopIndex(), (IdentifierValue) visit(each)));
+ }
+ }
+ return result;
}
@SuppressWarnings({"unchecked", "rawtypes"})
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/distribution/ModifyDistributionSegment.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/distribution/ModifyDistributionSegment.java
index a838b87a0c3..585125a9c66 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/distribution/ModifyDistributionSegment.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/distribution/ModifyDistributionSegment.java
@@ -41,4 +41,6 @@ public final class ModifyDistributionSegment implements
AlterDefinitionSegment {
private final Collection<ColumnSegment> columns = new LinkedList<>();
private Integer buckets;
+
+ private boolean autoBuckets;
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/TruncateStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/TruncateStatement.java
index bf7449caca2..ac508a340d7 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/TruncateStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/TruncateStatement.java
@@ -19,11 +19,13 @@ package
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl;
import lombok.Getter;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.PartitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.TableSQLStatementAttribute;
import java.util.Collection;
+import java.util.LinkedList;
/**
* Truncate table statement.
@@ -33,6 +35,8 @@ public final class TruncateStatement extends DDLStatement {
private final Collection<SimpleTableSegment> tables;
+ private final Collection<PartitionSegment> partitions = new LinkedList<>();
+
private SQLStatementAttributes attributes;
public TruncateStatement(final DatabaseType databaseType, final
Collection<SimpleTableSegment> tables) {
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 d186a68bd34..1089e5f7703 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
@@ -588,6 +588,9 @@ public final class AlterTableStatementAssert {
} else {
assertNull(each.getBuckets(), assertContext.getText("Modify
distribution buckets should not exist"));
}
+ if (null != expectedModifyDistribution.getAutoBuckets()) {
+ assertThat(assertContext.getText("Auto buckets assertion
error: "), each.isAutoBuckets(),
is(expectedModifyDistribution.getAutoBuckets()));
+ }
SQLSegmentAssert.assertIs(assertContext, each,
expectedModifyDistribution);
count++;
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/TruncateStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/TruncateStatementAssert.java
index 22bd42ce14d..8ba22f31b28 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/TruncateStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/TruncateStatementAssert.java
@@ -19,11 +19,17 @@ 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.segment.dal.PartitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.TruncateStatement;
import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.SQLSegmentAssert;
import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.table.TableAssert;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.index.ExpectedPartition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.TruncateStatementTestCase;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+
/**
* Truncate statement assert.
*/
@@ -39,9 +45,27 @@ public final class TruncateStatementAssert {
*/
public static void assertIs(final SQLCaseAssertContext assertContext,
final TruncateStatement actual, final TruncateStatementTestCase expected) {
assertTables(assertContext, actual, expected);
+ assertPartitions(assertContext, actual, expected);
}
private static void assertTables(final SQLCaseAssertContext assertContext,
final TruncateStatement actual, final TruncateStatementTestCase expected) {
TableAssert.assertIs(assertContext, actual.getTables(),
expected.getTables());
}
+
+ private static void assertPartitions(final SQLCaseAssertContext
assertContext, final TruncateStatement actual, final TruncateStatementTestCase
expected) {
+ if (expected.getPartitions().isEmpty() ||
expected.getPartitions().stream().allMatch(each -> null == each.getName())) {
+ return;
+ }
+ assertThat(assertContext.getText("Partition size assertion error: "),
actual.getPartitions().size(), is(expected.getPartitions().size()));
+ int count = 0;
+ for (PartitionSegment each : actual.getPartitions()) {
+ assertPartition(assertContext, each,
expected.getPartitions().get(count));
+ count++;
+ }
+ }
+
+ private static void assertPartition(final SQLCaseAssertContext
assertContext, final PartitionSegment actual, final ExpectedPartition expected)
{
+ assertThat(assertContext.getText("Partition name assertion error: "),
actual.getName().getValue(), is(expected.getName()));
+ SQLSegmentAssert.assertIs(assertContext, actual, expected);
+ }
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyDistributionDefinition.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyDistributionDefinition.java
index ef68ef7a7cf..3cfd1a82fac 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyDistributionDefinition.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyDistributionDefinition.java
@@ -39,4 +39,7 @@ public final class ExpectedModifyDistributionDefinition
extends AbstractExpected
@XmlAttribute(name = "buckets")
private Integer buckets;
+
+ @XmlAttribute(name = "auto-buckets")
+ private Boolean autoBuckets;
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/TruncateStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/TruncateStatementTestCase.java
index 0b4783daffd..6848089d3d2 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/TruncateStatementTestCase.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/TruncateStatementTestCase.java
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.
import lombok.Getter;
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.segment.impl.index.ExpectedPartition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedSimpleTable;
import javax.xml.bind.annotation.XmlElement;
@@ -33,4 +34,7 @@ public final class TruncateStatementTestCase extends
SQLParserTestCase {
@XmlElement(name = "table")
private final List<ExpectedSimpleTable> tables = new LinkedList<>();
+
+ @XmlElement(name = "partition")
+ private final List<ExpectedPartition> partitions = 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 b403ead414e..25dd1ffbd52 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
@@ -3290,6 +3290,50 @@
</modify-distribution>
</alter-table>
+ <alter-table sql-case-id="alter_table_modify_distribution_hash_auto_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-distribution start-index="52" stop-index="87"
auto-buckets="true">
+ <column name="k1" start-index="72" stop-index="73" />
+ </modify-distribution>
+ </alter-table>
+
+ <alter-table
sql-case-id="alter_table_modify_distribution_hash_multi_columns_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-distribution start-index="52" stop-index="89" buckets="50">
+ <column name="k1" start-index="72" stop-index="73" />
+ <column name="k2" start-index="76" stop-index="77" />
+ </modify-distribution>
+ </alter-table>
+
+ <alter-table
sql-case-id="alter_table_modify_distribution_hash_multi_columns_auto_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-distribution start-index="52" stop-index="95"
auto-buckets="true">
+ <column name="k1" start-index="72" stop-index="73" />
+ <column name="k2" start-index="76" stop-index="77" />
+ <column name="k3" start-index="80" stop-index="81" />
+ </modify-distribution>
+ </alter-table>
+
+ <alter-table
sql-case-id="alter_table_modify_distribution_random_number_doris">
+ <table name="my_random_table" start-index="12" stop-index="37">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-distribution start-index="59" stop-index="90" buckets="12" />
+ </alter-table>
+
+ <alter-table
sql-case-id="alter_table_modify_distribution_random_auto_doris">
+ <table name="my_random_table" start-index="12" stop-index="37">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-distribution start-index="59" stop-index="92"
auto-buckets="true" />
+ </alter-table>
+
<alter-table sql-case-id="alter_table_modify_table_comment_doris">
<table name="my_table" start-index="12" stop-index="30">
<owner name="example_db" start-index="12" stop-index="21" />
diff --git a/test/it/parser/src/main/resources/case/ddl/truncate.xml
b/test/it/parser/src/main/resources/case/ddl/truncate.xml
index 824872e791e..3c71e98394d 100644
--- a/test/it/parser/src/main/resources/case/ddl/truncate.xml
+++ b/test/it/parser/src/main/resources/case/ddl/truncate.xml
@@ -129,4 +129,24 @@
<partition-key name="dt" value="'2025-01-01'" />
</partition>
</truncate>
+
+ <truncate sql-case-id="truncate_table_with_partition_doris">
+ <table name="tbl" start-index="15" stop-index="17" />
+ <partition name="p1" start-index="29" stop-index="30" />
+ <partition name="p2" start-index="33" stop-index="34" />
+ </truncate>
+
+ <truncate sql-case-id="truncate_table_with_db_and_partition_doris">
+ <table name="tbl" start-index="15" stop-index="28">
+ <owner name="example_db" start-index="15" stop-index="24" />
+ </table>
+ <partition name="p1" start-index="40" stop-index="41" />
+ <partition name="p2" start-index="44" stop-index="45" />
+ <partition name="p3" start-index="48" stop-index="49" />
+ </truncate>
+
+ <truncate sql-case-id="truncate_table_with_single_partition_doris">
+ <table name="tbl" start-index="15" stop-index="17" />
+ <partition name="p1" start-index="29" stop-index="30" />
+ </truncate>
</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 05253af41d1..b767c20484b 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
@@ -435,6 +435,11 @@
<sql-case id="alter_table_enable_feature_batch_delete_doris" value="ALTER
TABLE example_db.my_table ENABLE FEATURE "BATCH_DELETE""
db-types="Doris" />
<sql-case id="alter_table_enable_feature_sequence_load_doris" value="ALTER
TABLE example_db.my_table ENABLE FEATURE "SEQUENCE_LOAD" WITH
PROPERTIES ("function_column.sequence_type" = "Date")"
db-types="Doris" />
<sql-case id="alter_table_modify_distribution_doris" value="ALTER TABLE
example_db.my_table MODIFY DISTRIBUTION DISTRIBUTED BY HASH(k1) BUCKETS 50"
db-types="Doris" />
+ <sql-case id="alter_table_modify_distribution_hash_auto_doris"
value="ALTER TABLE example_db.my_table MODIFY DISTRIBUTION DISTRIBUTED BY
HASH(k1) BUCKETS AUTO" db-types="Doris" />
+ <sql-case id="alter_table_modify_distribution_hash_multi_columns_doris"
value="ALTER TABLE example_db.my_table MODIFY DISTRIBUTION DISTRIBUTED BY
HASH(k1, k2) BUCKETS 50" db-types="Doris" />
+ <sql-case
id="alter_table_modify_distribution_hash_multi_columns_auto_doris" value="ALTER
TABLE example_db.my_table MODIFY DISTRIBUTION DISTRIBUTED BY HASH(k1, k2, k3)
BUCKETS AUTO" db-types="Doris" />
+ <sql-case id="alter_table_modify_distribution_random_number_doris"
value="ALTER TABLE example_db.my_random_table MODIFY DISTRIBUTION DISTRIBUTED
BY RANDOM BUCKETS 12" db-types="Doris" />
+ <sql-case id="alter_table_modify_distribution_random_auto_doris"
value="ALTER TABLE example_db.my_random_table MODIFY DISTRIBUTION DISTRIBUTED
BY RANDOM BUCKETS AUTO" db-types="Doris" />
<sql-case id="alter_table_modify_table_comment_doris" value="ALTER TABLE
example_db.my_table MODIFY COMMENT "new comment"" db-types="Doris" />
<sql-case id="alter_table_modify_column_comment_doris" value="ALTER TABLE
example_db.my_table MODIFY COLUMN k1 COMMENT "k1"" db-types="Doris" />
<sql-case id="alter_table_modify_multiple_column_comments_doris"
value="ALTER TABLE example_db.my_table MODIFY COLUMN k1 COMMENT "k1",
MODIFY COLUMN k2 COMMENT "k2"" db-types="Doris" />
diff --git a/test/it/parser/src/main/resources/sql/supported/ddl/truncate.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/truncate.xml
index e27439f8344..7e9d0aa469b 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/truncate.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/truncate.xml
@@ -41,4 +41,7 @@
<sql-case id="truncate_table_tablename_with_partition" value="TRUNCATE
TABLE test_table PARTITION (dt='2025-01-01')" db-types="Hive" />
<sql-case id="truncate_db_tablename_with_partition" value="TRUNCATE
test_tb.test_table PARTITION (dt='2025-01-01')" db-types="Hive" />
<sql-case id="truncate_table_db_tablename_with_partition" value="TRUNCATE
TABLE test_tb.test_table PARTITION (dt='2025-01-01')" db-types="Hive" />
+ <sql-case id="truncate_table_with_partition_doris" value="TRUNCATE TABLE
tbl PARTITION(p1, p2)" db-types="Doris" />
+ <sql-case id="truncate_table_with_db_and_partition_doris" value="TRUNCATE
TABLE example_db.tbl PARTITION(p1, p2, p3)" db-types="Doris" />
+ <sql-case id="truncate_table_with_single_partition_doris" value="TRUNCATE
TABLE tbl PARTITION(p1)" db-types="Doris" />
</sql-cases>