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 &quot;BATCH_DELETE&quot;" 
db-types="Doris" />
     <sql-case id="alter_table_enable_feature_sequence_load_doris" value="ALTER 
TABLE example_db.my_table ENABLE FEATURE &quot;SEQUENCE_LOAD&quot; WITH 
PROPERTIES (&quot;function_column.sequence_type&quot; = &quot;Date&quot;)" 
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 &quot;new comment&quot;" db-types="Doris" />
     <sql-case id="alter_table_modify_column_comment_doris" value="ALTER TABLE 
example_db.my_table MODIFY COLUMN k1 COMMENT &quot;k1&quot;" db-types="Doris" />
     <sql-case id="alter_table_modify_multiple_column_comments_doris" 
value="ALTER TABLE example_db.my_table MODIFY COLUMN k1 COMMENT &quot;k1&quot;, 
MODIFY COLUMN k2 COMMENT &quot;k2&quot;" 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>

Reply via email to