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..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 @@ -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,18 @@ 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()); 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};"""