This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 4e85439c4c6 [fix](mtmv) mtmv disable dynamic partition (#35686)
4e85439c4c6 is described below

commit 4e85439c4c698684a3f32c5f92c84ec9679521f0
Author: zhangdong <[email protected]>
AuthorDate: Tue Jun 4 14:21:07 2024 +0800

    [fix](mtmv) mtmv disable dynamic partition (#35686)
    
    1. MTMV do not allow setting dynamic partition related properties
    2. add case for show data
---
 .../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 b6ef97815bc..fd85ad0978e 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;
@@ -316,6 +319,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 28e9df38751..8c5f4f669c5 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;
@@ -508,6 +509,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 226e05cf02f..8614272a7a7 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to