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

yiguolei 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 a32db250707 [enhance](mtmv) allow add index for MTMV (#34225) (#35443)
a32db250707 is described below

commit a32db250707038cec64d4ab7b0d7cef0be311cb7
Author: zhangdong <[email protected]>
AuthorDate: Mon May 27 16:22:16 2024 +0800

    [enhance](mtmv) allow add index for MTMV (#34225) (#35443)
    
    Previously, the limitation on whether operations can be performed on 
materialized views was to determine `opType`.
    
    Now, a `allowOpMTMV()` method is implemented through various `clauses`.
    
    Because some operations have the same `opType`, but some operations allow 
and some do not.
    
    For example, the `opType` for both `add column` and `create index` is 
`SCHEMA-CHANGE`, but `add column` is not allowed and `create index` is allowed.
---
 .../java/org/apache/doris/alter/AlterOpType.java   |   6 -
 .../org/apache/doris/alter/AlterOperations.java    |   4 +-
 .../org/apache/doris/analysis/AddColumnClause.java |   5 +
 .../apache/doris/analysis/AddColumnsClause.java    |   5 +
 .../apache/doris/analysis/AddPartitionClause.java  |   5 +
 .../doris/analysis/AddPartitionLikeClause.java     |   5 +
 .../org/apache/doris/analysis/AddRollupClause.java |   5 +
 .../org/apache/doris/analysis/AlterClause.java     |   4 +
 .../apache/doris/analysis/AlterTableClause.java    |   2 +
 .../apache/doris/analysis/BuildIndexClause.java    |   5 +
 .../apache/doris/analysis/ColumnRenameClause.java  |   5 +
 .../apache/doris/analysis/CreateIndexClause.java   |   5 +
 .../apache/doris/analysis/DropColumnClause.java    |   5 +
 .../org/apache/doris/analysis/DropIndexClause.java |   5 +
 .../apache/doris/analysis/DropPartitionClause.java |   5 +
 .../analysis/DropPartitionFromIndexClause.java     |   5 +
 .../apache/doris/analysis/DropRollupClause.java    |   5 +
 .../apache/doris/analysis/EnableFeatureClause.java |   5 +
 .../apache/doris/analysis/ModifyColumnClause.java  |   5 +
 .../doris/analysis/ModifyColumnCommentClause.java  |   5 +
 .../doris/analysis/ModifyDistributionClause.java   |   5 +
 .../apache/doris/analysis/ModifyEngineClause.java  |   5 +
 .../doris/analysis/ModifyPartitionClause.java      |   5 +
 .../doris/analysis/ModifyTableCommentClause.java   |   5 +
 .../analysis/ModifyTablePropertiesClause.java      |   5 +
 .../doris/analysis/PartitionRenameClause.java      |   5 +
 .../doris/analysis/ReorderColumnsClause.java       |   5 +
 .../doris/analysis/ReplacePartitionClause.java     |   5 +
 .../apache/doris/analysis/ReplaceTableClause.java  |   5 +
 .../apache/doris/analysis/RollupRenameClause.java  |   5 +
 .../apache/doris/analysis/TableRenameClause.java   |   5 +
 .../suites/mtmv_p0/test_build_mtmv.groovy          |  52 -----
 .../suites/mtmv_p0/test_limit_op_mtmv.groovy       | 247 +++++++++++++++++++++
 33 files changed, 390 insertions(+), 60 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/AlterOpType.java 
b/fe/fe-core/src/main/java/org/apache/doris/alter/AlterOpType.java
index 270132c1e17..818ceda2ceb 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/AlterOpType.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/AlterOpType.java
@@ -70,10 +70,4 @@ public enum AlterOpType {
     public boolean needCheckCapacity() {
         return this == ADD_ROLLUP || this == SCHEMA_CHANGE || this == 
ADD_PARTITION || this == ENABLE_FEATURE;
     }
-
-    public boolean mtmvAllowOp() {
-        return this == MODIFY_TABLE_PROPERTY || this == MODIFY_DISTRIBUTION || 
this == MODIFY_TABLE_COMMENT
-                || this == ADD_PARTITION || this == DROP_PARTITION || this == 
REPLACE_PARTITION
-                || this == MODIFY_PARTITION;
-    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/alter/AlterOperations.java 
b/fe/fe-core/src/main/java/org/apache/doris/alter/AlterOperations.java
index a6fefb119c8..f7ce1ea56f4 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/AlterOperations.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/AlterOperations.java
@@ -50,8 +50,8 @@ public class AlterOperations {
 
     public void checkMTMVAllow(List<AlterClause> alterClauses) throws 
DdlException {
         for (AlterClause alterClause : alterClauses) {
-            if (!alterClause.getOpType().mtmvAllowOp()) {
-                throw new DdlException("Alter operation " + 
alterClause.getOpType() + " Not allowed to MTMV");
+            if (!(alterClause.allowOpMTMV())) {
+                throw new DdlException("Not allowed to perform current 
operation on MTMV");
             }
         }
     }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddColumnClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddColumnClause.java
index aa8e189b104..08fa27151dc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddColumnClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddColumnClause.java
@@ -110,6 +110,11 @@ public class AddColumnClause extends AlterTableClause {
         return this.properties;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddColumnsClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddColumnsClause.java
index 3180331faa8..765c6eb6856 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddColumnsClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddColumnsClause.java
@@ -78,6 +78,11 @@ public class AddColumnsClause extends AlterTableClause {
         }
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddPartitionClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddPartitionClause.java
index eddac80644c..6adea949826 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddPartitionClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddPartitionClause.java
@@ -60,6 +60,11 @@ public class AddPartitionClause extends AlterTableClause {
     public void analyze(Analyzer analyzer) throws AnalysisException {
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddPartitionLikeClause.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddPartitionLikeClause.java
index a414ed7992b..4ae585bc5dc 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddPartitionLikeClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddPartitionLikeClause.java
@@ -46,6 +46,11 @@ public class AddPartitionLikeClause extends AlterTableClause 
{
     public void analyze(Analyzer analyzer) throws AnalysisException {
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddRollupClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddRollupClause.java
index 02852f9bf9a..03e4c868fb6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AddRollupClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AddRollupClause.java
@@ -89,6 +89,11 @@ public class AddRollupClause extends AlterTableClause {
         baseRollupName = Strings.emptyToNull(baseRollupName);
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder stringBuilder = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterClause.java
index d52f72be7d0..d81cfec05f9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterClause.java
@@ -39,4 +39,8 @@ public abstract class AlterClause implements ParseNode {
     public AlterOpType getOpType() {
         return opType;
     }
+
+    public boolean allowOpMTMV() {
+        return true;
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableClause.java
index ad611bb95ad..eed07491f7a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AlterTableClause.java
@@ -38,4 +38,6 @@ public abstract class AlterTableClause extends AlterClause {
     public void setTableName(TableName tableName) {
         this.tableName = tableName;
     }
+
+    public abstract boolean allowOpMTMV();
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/BuildIndexClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/BuildIndexClause.java
index 99aee373b1e..806cb6492b6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/BuildIndexClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/BuildIndexClause.java
@@ -76,6 +76,11 @@ public class BuildIndexClause extends AlterTableClause {
                 indexDef.getProperties(), indexDef.getComment());
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return true;
+    }
+
     @Override
     public String toSql() {
         if (alter) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnRenameClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnRenameClause.java
index 5924da555e8..127be532454 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnRenameClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnRenameClause.java
@@ -63,6 +63,11 @@ public class ColumnRenameClause extends AlterTableClause {
         return null;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         return "RENAME COLUMN " + colName + " " + newColName;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateIndexClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateIndexClause.java
index 632492191c7..008735dac46 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateIndexClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateIndexClause.java
@@ -76,6 +76,11 @@ public class CreateIndexClause extends AlterTableClause {
                 indexDef.getProperties(), indexDef.getComment());
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return true;
+    }
+
     @Override
     public String toSql() {
         if (alter) {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropColumnClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropColumnClause.java
index 4546a28c189..db1190d87d6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropColumnClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropColumnClause.java
@@ -65,6 +65,11 @@ public class DropColumnClause extends AlterTableClause {
         return this.properties;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropIndexClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropIndexClause.java
index 45cde1838bb..bb85ca09886 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropIndexClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropIndexClause.java
@@ -68,6 +68,11 @@ public class DropIndexClause extends AlterTableClause {
         }
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return true;
+    }
+
     @Override
     public String toSql() {
         StringBuilder stringBuilder = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPartitionClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPartitionClause.java
index 59e3388f1de..4b3c70699c1 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPartitionClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPartitionClause.java
@@ -71,6 +71,11 @@ public class DropPartitionClause extends AlterTableClause {
         return null;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPartitionFromIndexClause.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPartitionFromIndexClause.java
index 408c9406e80..fe0cc97b254 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPartitionFromIndexClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropPartitionFromIndexClause.java
@@ -77,6 +77,11 @@ public class DropPartitionFromIndexClause extends 
AlterTableClause {
         return null;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRollupClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRollupClause.java
index 5929136d588..c3d41a4bf75 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRollupClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DropRollupClause.java
@@ -48,6 +48,11 @@ public class DropRollupClause extends AlterTableClause {
         return this.properties;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder stringBuilder = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/EnableFeatureClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/EnableFeatureClause.java
index 8aee07316ef..d8b38457e49 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/EnableFeatureClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/EnableFeatureClause.java
@@ -84,6 +84,11 @@ public class EnableFeatureClause extends AlterTableClause {
         }
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return true;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyColumnClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyColumnClause.java
index 49f5447163d..c2aebb9e1de 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyColumnClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyColumnClause.java
@@ -96,6 +96,11 @@ public class ModifyColumnClause extends AlterTableClause {
         return this.properties;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyColumnCommentClause.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyColumnCommentClause.java
index ba927fb3c3d..8ae0ac33aca 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyColumnCommentClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyColumnCommentClause.java
@@ -59,6 +59,11 @@ public class ModifyColumnCommentClause extends 
AlterTableClause {
         }
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyDistributionClause.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyDistributionClause.java
index 688a87b3f9a..c1de80237c7 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyDistributionClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyDistributionClause.java
@@ -40,6 +40,11 @@ public class ModifyDistributionClause extends 
AlterTableClause {
     public void analyze(Analyzer analyzer) throws AnalysisException {
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return true;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyEngineClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyEngineClause.java
index 0a1aec866bc..1c6c95d062f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyEngineClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyEngineClause.java
@@ -64,6 +64,11 @@ public class ModifyEngineClause extends AlterTableClause {
         }
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyPartitionClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyPartitionClause.java
index 7fd48d75119..bf7c1619d41 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyPartitionClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyPartitionClause.java
@@ -131,6 +131,11 @@ public class ModifyPartitionClause extends 
AlterTableClause {
         return this.needExpand;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTableCommentClause.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTableCommentClause.java
index 745ec0ffccb..8741e2ffcad 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTableCommentClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ModifyTableCommentClause.java
@@ -50,6 +50,11 @@ public class ModifyTableCommentClause extends 
AlterTableClause {
         return Maps.newHashMap();
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return true;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
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 e0aa994c6d3..f349c8a51cf 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
@@ -314,6 +314,11 @@ public class ModifyTablePropertiesClause extends 
AlterTableClause {
         return this.properties;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return true;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionRenameClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionRenameClause.java
index e3cf8390cbc..fc6ad24948c 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionRenameClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionRenameClause.java
@@ -63,6 +63,11 @@ public class PartitionRenameClause extends AlterTableClause {
         return null;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         return "RENAME PARTITION " + partitionName + " " + newPartitionName;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ReorderColumnsClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ReorderColumnsClause.java
index 0d630720e9e..13cf5f0412d 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ReorderColumnsClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ReorderColumnsClause.java
@@ -67,6 +67,11 @@ public class ReorderColumnsClause extends AlterTableClause {
         return this.properties;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplacePartitionClause.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplacePartitionClause.java
index 6d7f88c089b..3fece452e2f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplacePartitionClause.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplacePartitionClause.java
@@ -107,6 +107,11 @@ public class ReplacePartitionClause extends 
AlterTableClause {
         return this.properties;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplaceTableClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplaceTableClause.java
index 20d153ce3be..464bbd70920 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplaceTableClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ReplaceTableClause.java
@@ -70,6 +70,11 @@ public class ReplaceTableClause extends AlterTableClause {
         return this.properties;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/RollupRenameClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/RollupRenameClause.java
index a51dff332f0..b3af2ec09d8 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RollupRenameClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RollupRenameClause.java
@@ -63,6 +63,11 @@ public class RollupRenameClause extends AlterTableClause {
         return null;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         return "RENAME ROLLUP " + rollupName + " " + newRollupName;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRenameClause.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRenameClause.java
index e35eff747e9..d1551169d2b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRenameClause.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/TableRenameClause.java
@@ -53,6 +53,11 @@ public class TableRenameClause extends AlterTableClause {
         return null;
     }
 
+    @Override
+    public boolean allowOpMTMV() {
+        return false;
+    }
+
     @Override
     public String toSql() {
         return "RENAME " + newTableName;
diff --git a/regression-test/suites/mtmv_p0/test_build_mtmv.groovy 
b/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
index 34e11608b3f..edb706c5303 100644
--- a/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_build_mtmv.groovy
@@ -439,58 +439,6 @@ suite("test_build_mtmv") {
     """
     order_qt_select "select MvProperties from 
mv_infos('database'='regression_test_mtmv_p0') where Name = '${mvName}'"
 
-    // use alter table
-    // not allow rename
-    try {
-        sql """
-            alter table ${mvName} rename ${mvNameRenamed}
-            """
-        Assert.fail();
-    } catch (Exception e) {
-        log.info(e.getMessage())
-    }
-
-
-    // not allow modify `grace_period`
-    try {
-        sql """
-            alter table ${mvName} set("grace_period"="3333");
-            """
-        Assert.fail();
-    } catch (Exception e) {
-        log.info(e.getMessage())
-    }
-
-    // allow modify comment
-    try {
-        sql """
-            alter table ${mvName} MODIFY COMMENT "new table comment";
-            """
-    } catch (Exception e) {
-        log.info(e.getMessage())
-        Assert.fail();
-    }
-
-    // not allow modify column
-    try {
-        sql """
-            alter table ${mvName} DROP COLUMN pv;
-            """
-        Assert.fail();
-    } catch (Exception e) {
-        log.info(e.getMessage())
-    }
-
-    // not allow replace
-    try {
-        sql """
-            alter table ${mvName} REPLACE WITH TABLE ${tableName};
-            """
-        Assert.fail();
-    } catch (Exception e) {
-        log.info(e.getMessage())
-    }
-
     // not allow use mv modify property of table
     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
new file mode 100644
index 00000000000..8a3d43dd803
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/test_limit_op_mtmv.groovy
@@ -0,0 +1,247 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+import org.junit.Assert;
+
+suite("test_limit_op_mtmv") {
+    def tableName = "t_test_limit_op_mtmv_user"
+    def mvName = "test_limit_op_mtmv"
+    def dbName = "regression_test_mtmv_p0"
+    sql """drop table if exists `${tableName}`"""
+    sql """drop materialized view if exists ${mvName};"""
+
+    sql """
+        CREATE TABLE `${tableName}` (
+          `user_id` LARGEINT NOT NULL COMMENT '\"用户id\"',
+          `num` SMALLINT NOT NULL COMMENT '\"数量\"',
+          `k3` DATE
+        ) ENGINE=OLAP
+        COMMENT 'OLAP'
+        PARTITION BY RANGE(`k3`)
+        (
+            FROM ("2020-01-01") TO ("2020-01-03") INTERVAL 1 DAY
+        )
+        DISTRIBUTED BY HASH(`user_id`) BUCKETS 2
+        PROPERTIES ('replication_num' = '1') ;
+        """
+    
+    sql """
+        CREATE MATERIALIZED VIEW ${mvName}
+        BUILD DEFERRED REFRESH AUTO ON MANUAL
+        partition by(`k3`)
+        DISTRIBUTED BY RANDOM BUCKETS 2
+        PROPERTIES ('replication_num' = '1')
+        AS
+        SELECT * FROM ${tableName};
+    """
+
+    // not allow add partition
+    try {
+        sql """
+            alter table ${mvName} add partition p_20200103_20200104 values 
less than ("2020-01-04");
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow drop partition
+    try {
+        sql """
+            alter table ${mvName} drop partition p_20200102_20200103;
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow modify partition
+    try {
+        sql """
+            alter table ${mvName} MODIFY PARTITION (*) 
SET("storage_medium"="HDD");
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow replace partition
+    try {
+        sql """
+            ALTER TABLE ${mvName} REPLACE PARTITION (p_20200102_20200103) WITH 
TEMPORARY PARTITION (tp_20200102_20200103);
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow rename
+    try {
+        sql """
+            alter table ${mvName} rename ${mvName}1
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow replace table
+    try {
+        sql """
+            alter table ${mvName} REPLACE WITH TABLE tbl2
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+
+    // not allow modify property of mv
+    try {
+        sql """
+            alter table ${mvName} set("grace_period"="3333");
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow add column
+    try {
+        sql """
+            alter table ${mvName} ADD COLUMN new_col INT DEFAULT "0" AFTER num;
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow add columns
+    try {
+        sql """
+            alter table ${mvName} ADD COLUMN (new_col1 INT DEFAULT "0" 
,new_col2 INT DEFAULT "0");
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow drop column
+    try {
+        sql """
+            alter table ${mvName} DROP COLUMN num;
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow modify column
+    try {
+        sql """
+            alter table ${mvName} modify COLUMN num BIGINT;
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+
+    // not allow reorder column
+    try {
+        sql """
+            alter table ${mvName} ORDER BY(num,k3,user_id);
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow modify column
+    try {
+        sql """
+            alter table ${mvName} modify COLUMN num BIGINT;
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow replace
+    try {
+        sql """
+            alter table ${mvName} REPLACE WITH TABLE ${tableName};
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+
+    // not allow add rollup
+    try {
+        sql """
+            alter table ${mvName} ADD ROLLUP example_rollup_index(num, k3);;
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // not allow drop rollup
+    try {
+        sql """
+            alter table ${mvName} drop ROLLUP example_rollup_index;
+            """
+        Assert.fail();
+    } catch (Exception e) {
+        log.info(e.getMessage())
+    }
+
+    // allow modify comment
+    try {
+        sql """
+            alter table ${mvName} MODIFY COMMENT "new table comment";
+            """
+    } catch (Exception e) {
+        log.info(e.getMessage())
+        Assert.fail();
+    }
+
+    // allow add index
+    try {
+        sql """
+            CREATE INDEX index1 ON ${mvName} (num) USING INVERTED;
+            """
+    } catch (Exception e) {
+        log.info(e.getMessage())
+        Assert.fail();
+    }
+
+    // allow drop index
+    try {
+        sql """
+            DROP INDEX index1 ON ${mvName};
+            """
+    } catch (Exception e) {
+        log.info(e.getMessage())
+        Assert.fail();
+    }
+
+    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