From ef2562c8df5b15ac95dc49233966a026a0d03e2c Mon Sep 17 00:00:00 2001 From: zhangdong Date: Wed, 5 Nov 2025 11:17:00 +0800 Subject: [PATCH 1/3] fix range have multi partition columns --- .../plans/commands/info/MTMVPartitionDefinition.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/MTMVPartitionDefinition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/MTMVPartitionDefinition.java index 5001e4cf4e67fd..41e860f7e3a345 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/MTMVPartitionDefinition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/MTMVPartitionDefinition.java @@ -25,6 +25,7 @@ import org.apache.doris.analysis.FunctionParams; import org.apache.doris.analysis.SlotRef; import org.apache.doris.analysis.StringLiteral; +import org.apache.doris.catalog.Column; import org.apache.doris.catalog.PartitionType; import org.apache.doris.datasource.mvcc.MvccUtil; import org.apache.doris.mtmv.BaseColInfo; @@ -149,6 +150,17 @@ private void fillPctInfos(NereidsPlanner planner, String partitionColName, } } } + if (relatedTablePartitionType.equals(PartitionType.RANGE)) { + for (BaseColInfo baseColInfo : pctInfos) { + MTMVRelatedTableIf pctTable = MTMVUtil.getRelatedTable(baseColInfo.getTableInfo()); + List partitionColumns = pctTable.getPartitionColumns(MvccUtil.getSnapshotFromContext(pctTable)); + if (partitionColumns.size() != 1) { + throw new AnalysisException(String.format( + "only List PartitionType support multi columns partition, but [%s] have [%s] partitionColumns.", + baseColInfo.getTableInfo(), partitionColumns.size())); + } + } + } // for compatible mtmvPartitionInfo.setRelatedCol(pctInfos.get(0).getColName()); mtmvPartitionInfo.setRelatedTable(pctInfos.get(0).getTableInfo()); From e3746b3f5bf7565101004d558f98896a126e8a93 Mon Sep 17 00:00:00 2001 From: zhangdong Date: Wed, 5 Nov 2025 11:27:40 +0800 Subject: [PATCH 2/3] format --- .../trees/plans/commands/info/MTMVPartitionDefinition.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/MTMVPartitionDefinition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/MTMVPartitionDefinition.java index 41e860f7e3a345..dc276f58d0af9b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/MTMVPartitionDefinition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/MTMVPartitionDefinition.java @@ -156,7 +156,8 @@ private void fillPctInfos(NereidsPlanner planner, String partitionColName, List partitionColumns = pctTable.getPartitionColumns(MvccUtil.getSnapshotFromContext(pctTable)); if (partitionColumns.size() != 1) { throw new AnalysisException(String.format( - "only List PartitionType support multi columns partition, but [%s] have [%s] partitionColumns.", + "only List PartitionType support multi columns partition, " + + "but [%s] have [%s] partitionColumns.", baseColInfo.getTableInfo(), partitionColumns.size())); } } From 217ba30aa79135c933505028a849cda12193a80a Mon Sep 17 00:00:00 2001 From: zhangdong Date: Wed, 5 Nov 2025 11:45:32 +0800 Subject: [PATCH 3/3] add case --- .../mtmv_p0/test_partition_refresh_mtmv.groovy | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/regression-test/suites/mtmv_p0/test_partition_refresh_mtmv.groovy b/regression-test/suites/mtmv_p0/test_partition_refresh_mtmv.groovy index 21296fc5878874..0678682b2ab8d1 100644 --- a/regression-test/suites/mtmv_p0/test_partition_refresh_mtmv.groovy +++ b/regression-test/suites/mtmv_p0/test_partition_refresh_mtmv.groovy @@ -78,20 +78,19 @@ suite("test_partition_refresh_mtmv") { PROPERTIES ('replication_num' = '1') ; """ - try { - sql """ - CREATE MATERIALIZED VIEW ${mvName} + test { + sql """ + CREATE MATERIALIZED VIEW ${mvName} BUILD DEFERRED REFRESH AUTO ON MANUAL partition by(`date`) DISTRIBUTED BY RANDOM BUCKETS 2 PROPERTIES ('replication_num' = '1') AS SELECT * FROM ${tableNameNum}; - """ - Assert.fail(); - } catch (Exception e) { - log.info(e.getMessage()) - } + """ + exception "support" + } + sql """drop table if exists `${tableNameNum}`""" sql """drop materialized view if exists ${mvName};"""