This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push: new 104fcea725d [fix](mtmv) mtmv disable dynamic partition (#35686) (#35949) 104fcea725d is described below commit 104fcea725dc81bc4dafca95ed106a6f7ebf2d67 Author: Mingyu Chen <morning...@163.com> AuthorDate: Thu Jun 6 14:43:40 2024 +0800 [fix](mtmv) mtmv disable dynamic partition (#35686) (#35949) bp #35686 Co-authored-by: zhangdong <493738...@qq.com> --- .../doris/analysis/ModifyTablePropertiesClause.java | 17 +++++++++++++++++ .../apache/doris/clone/DynamicPartitionScheduler.java | 2 ++ .../trees/plans/commands/info/CreateMTMVInfo.java | 4 ++++ regression-test/suites/mtmv_p0/test_build_mtmv.groovy | 6 ++++++ .../suites/mtmv_p0/test_limit_op_mtmv.groovy | 18 ++++++++++++++++++ 5 files changed, 47 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTablePropertiesClause.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTablePropertiesClause.java index f349c8a51cf..b4c519b2aee 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTablePropertiesClause.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTablePropertiesClause.java @@ -18,7 +18,10 @@ package org.apache.doris.analysis; import org.apache.doris.alter.AlterOpType; +import org.apache.doris.catalog.Env; +import org.apache.doris.catalog.MTMV; import org.apache.doris.catalog.ReplicaAllocation; +import org.apache.doris.catalog.Table; import org.apache.doris.catalog.TableProperty; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.util.DynamicPartitionUtil; @@ -307,6 +310,20 @@ public class ModifyTablePropertiesClause extends AlterTableClause { } else { throw new AnalysisException("Unknown table property: " + properties.keySet()); } + analyzeForMTMV(); + } + + private void analyzeForMTMV() throws AnalysisException { + if (tableName != null) { + Table table = Env.getCurrentInternalCatalog().getDbOrAnalysisException(tableName.getDb()) + .getTableOrAnalysisException(tableName.getTbl()); + if (!(table instanceof MTMV)) { + return; + } + if (DynamicPartitionUtil.checkDynamicPartitionPropertiesExist(properties)) { + throw new AnalysisException("Not support dynamic partition properties on async materialized view"); + } + } } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java index 3fa73930906..7c884b6fee6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java @@ -32,6 +32,7 @@ import org.apache.doris.catalog.DistributionInfo; import org.apache.doris.catalog.DynamicPartitionProperty; import org.apache.doris.catalog.Env; import org.apache.doris.catalog.HashDistributionInfo; +import org.apache.doris.catalog.MTMV; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.Partition; import org.apache.doris.catalog.PartitionItem; @@ -502,6 +503,7 @@ public class DynamicPartitionScheduler extends MasterDaemon { olapTable = (OlapTable) db.getTableNullable(tableId); // Only OlapTable has DynamicPartitionProperty if (olapTable == null + || olapTable instanceof MTMV || !olapTable.dynamicPartitionExists() || !olapTable.getTableProperty().getDynamicPartitionProperty().getEnable()) { iterator.remove(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java index 6b008ba2565..0add620d035 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateMTMVInfo.java @@ -33,6 +33,7 @@ import org.apache.doris.catalog.TableIf; import org.apache.doris.catalog.View; import org.apache.doris.common.ErrorCode; import org.apache.doris.common.FeNameFormat; +import org.apache.doris.common.util.DynamicPartitionUtil; import org.apache.doris.mtmv.EnvInfo; import org.apache.doris.mtmv.MTMVPartitionInfo; import org.apache.doris.mtmv.MTMVPartitionInfo.MTMVPartitionType; @@ -178,6 +179,9 @@ public class CreateMTMVInfo { } private void analyzeProperties() { + if (DynamicPartitionUtil.checkDynamicPartitionPropertiesExist(properties)) { + throw new AnalysisException("Not support dynamic partition properties on async materialized view"); + } for (String key : MTMVPropertyUtil.mvPropertyKeys) { if (properties.containsKey(key)) { MTMVPropertyUtil.analyzeProperty(key, properties.get(key)); diff --git a/regression-test/suites/mtmv_p0/test_build_mtmv.groovy b/regression-test/suites/mtmv_p0/test_build_mtmv.groovy index edb706c5303..1b46236665f 100644 --- a/regression-test/suites/mtmv_p0/test_build_mtmv.groovy +++ b/regression-test/suites/mtmv_p0/test_build_mtmv.groovy @@ -88,10 +88,16 @@ suite("test_build_mtmv") { logger.info("showCreateTableResult: " + showCreateTableResult.toString()) assertTrue(showCreateTableResult.toString().contains("CREATE MATERIALIZED VIEW `multi_mv_test_create_mtmv` (\n `aa` BIGINT NULL COMMENT 'aaa',\n `bb` VARCHAR(20) NULL\n) ENGINE=MATERIALIZED_VIEW\nCOMMENT 'comment1'\nDISTRIBUTED BY RANDOM BUCKETS 2\nPROPERTIES")) + // desc def descTableAllResult = sql """desc ${mvName} all""" logger.info("descTableAllResult: " + descTableAllResult.toString()) assertTrue(descTableAllResult.toString().contains("${mvName}")) + // show data + def showDataResult = sql """show data""" + logger.info("showDataResult: " + showDataResult.toString()) + assertTrue(showDataResult.toString().contains("${mvName}")) + // if not exist try { sql """ diff --git a/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy b/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy index 57104d3d481..46c763a04a4 100644 --- a/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy +++ b/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy @@ -261,6 +261,24 @@ suite("test_limit_op_mtmv") { Assert.fail(); } + // not allow dynamic_partition + test { + sql """ALTER TABLE ${mvName} set ("dynamic_partition.enable" = "true")""" + exception "dynamic" + } + sql """drop materialized view if exists ${mvName};""" + test { + sql """ + CREATE MATERIALIZED VIEW ${mvName} + BUILD DEFERRED REFRESH AUTO ON MANUAL + partition by(`k3`) + DISTRIBUTED BY RANDOM BUCKETS 2 + PROPERTIES ('replication_num' = '1','dynamic_partition.enable'='true') + AS + SELECT * FROM ${tableName}; + """ + exception "dynamic" + } sql """drop table if exists `${tableName}`""" sql """drop materialized view if exists ${mvName};""" } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org