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 6804ae5827c [enhance](mtmv)reduce the behavior of triggering the mtmv 
state to change to schema_change (#36513) (#37122)
6804ae5827c is described below

commit 6804ae5827c3a92233424aa29f0c9fb87ed18be2
Author: zhangdong <[email protected]>
AuthorDate: Wed Jul 3 10:42:03 2024 +0800

    [enhance](mtmv)reduce the behavior of triggering the mtmv state to change 
to schema_change (#36513) (#37122)
    
    pick from https://github.com/apache/doris/pull/36513
---
 .../main/java/org/apache/doris/alter/Alter.java    | 16 +++-
 .../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 ++
 regression-test/data/mtmv_p0/test_base_mtmv.out    | 39 ++++++++--
 .../suites/mtmv_p0/test_base_mtmv.groovy           | 91 ++++++++++++++++++----
 32 files changed, 263 insertions(+), 24 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java 
b/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java
index edc038e75b3..33ed6c9e550 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java
@@ -194,8 +194,6 @@ public class Alter {
         } else if (currentAlterOps.hasSchemaChangeOp()) {
             // if modify storage type to v2, do schema change to convert all 
related tablets to segment v2 format
             schemaChangeHandler.process(stmt.toSql(), alterClauses, db, 
olapTable);
-            // if base table schemaChanged, need change mtmv status
-            Env.getCurrentEnv().getMtmvService().alterTable(olapTable);
         } else if (currentAlterOps.hasRollupOp()) {
             materializedViewHandler.process(alterClauses, db, olapTable);
         } else if (currentAlterOps.hasPartitionOp()) {
@@ -251,7 +249,6 @@ public class Alter {
             }
         } else if (currentAlterOps.hasRenameOp()) {
             processRename(db, olapTable, alterClauses);
-            Env.getCurrentEnv().getMtmvService().alterTable(olapTable);
         } else if (currentAlterOps.hasReplaceTableOp()) {
             processReplaceTable(db, olapTable, alterClauses);
         } else if 
(currentAlterOps.contains(AlterOpType.MODIFY_TABLE_PROPERTY_SYNC)) {
@@ -270,10 +267,21 @@ public class Alter {
         } else {
             throw new DdlException("Invalid alter operations: " + 
currentAlterOps);
         }
-
+        if (needChangeMTMVState(alterClauses)) {
+            Env.getCurrentEnv().getMtmvService().alterTable(olapTable);
+        }
         return needProcessOutsideTableLock;
     }
 
+    private boolean needChangeMTMVState(List<AlterClause> alterClauses) {
+        for (AlterClause alterClause : alterClauses) {
+            if (alterClause.needChangeMTMVState()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private void processModifyTableComment(Database db, OlapTable tbl, 
AlterClause alterClause)
             throws DdlException {
         tbl.writeLockOrDdlException();
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 08fa27151dc..f27f3204813 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
@@ -115,6 +115,11 @@ public class AddColumnClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 765c6eb6856..04ee893bd7c 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
@@ -83,6 +83,11 @@ public class AddColumnsClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 6adea949826..d25d3e255cc 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
@@ -65,6 +65,11 @@ public class AddPartitionClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 4ae585bc5dc..48d9e15238c 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
@@ -51,6 +51,11 @@ public class AddPartitionLikeClause extends AlterTableClause 
{
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 a9df4fedc81..f14e0828367 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
@@ -94,6 +94,11 @@ public class AddRollupClause extends AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 d81cfec05f9..0e573f8e675 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
@@ -43,4 +43,8 @@ public abstract class AlterClause implements ParseNode {
     public boolean allowOpMTMV() {
         return true;
     }
+
+    public boolean needChangeMTMVState() {
+        return false;
+    }
 }
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 eed07491f7a..392f4e7b2e0 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
@@ -40,4 +40,6 @@ public abstract class AlterTableClause extends AlterClause {
     }
 
     public abstract boolean allowOpMTMV();
+
+    public abstract boolean needChangeMTMVState();
 }
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 806cb6492b6..cb7ec08de78 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
@@ -81,6 +81,11 @@ public class BuildIndexClause extends AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return false;
+    }
+
     @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 127be532454..c5fe45f4957 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
@@ -68,6 +68,11 @@ public class ColumnRenameClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return true;
+    }
+
     @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 008735dac46..b39c0df4a85 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
@@ -81,6 +81,11 @@ public class CreateIndexClause extends AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return false;
+    }
+
     @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 db1190d87d6..cbc2c12b1e2 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
@@ -70,6 +70,11 @@ public class DropColumnClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return true;
+    }
+
     @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 bb85ca09886..f72136ee2b3 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
@@ -73,6 +73,11 @@ public class DropIndexClause extends AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return false;
+    }
+
     @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 4b3c70699c1..00c9d829e57 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
@@ -76,6 +76,11 @@ public class DropPartitionClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 fe0cc97b254..469f92abdd9 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
@@ -82,6 +82,11 @@ public class DropPartitionFromIndexClause extends 
AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 292dc6c9ada..fa730b00c5f 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
@@ -53,6 +53,11 @@ public class DropRollupClause extends AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 d8b38457e49..8a4f76f43ef 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
@@ -89,6 +89,11 @@ public class EnableFeatureClause extends AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return false;
+    }
+
     @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 c2aebb9e1de..eb136c540f2 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
@@ -101,6 +101,11 @@ public class ModifyColumnClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return true;
+    }
+
     @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 8ae0ac33aca..836377bc9e0 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
@@ -64,6 +64,11 @@ public class ModifyColumnCommentClause extends 
AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 c1de80237c7..58e0871ce33 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
@@ -45,6 +45,11 @@ public class ModifyDistributionClause extends 
AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return false;
+    }
+
     @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 1c6c95d062f..d7e1dd60a63 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
@@ -69,6 +69,11 @@ public class ModifyEngineClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 bf7c1619d41..d8cfa500ec5 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
@@ -136,6 +136,11 @@ public class ModifyPartitionClause extends 
AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 8741e2ffcad..fed20f5ba82 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
@@ -55,6 +55,11 @@ public class ModifyTableCommentClause extends 
AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return false;
+    }
+
     @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 b4c519b2aee..b5e4c46d91a 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
@@ -336,6 +336,11 @@ public class ModifyTablePropertiesClause extends 
AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return false;
+    }
+
     @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 fc6ad24948c..cf1739235ec 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
@@ -68,6 +68,11 @@ public class PartitionRenameClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 13cf5f0412d..e9b01fa4838 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
@@ -72,6 +72,11 @@ public class ReorderColumnsClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 3fece452e2f..9a827c82f81 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
@@ -112,6 +112,11 @@ public class ReplacePartitionClause extends 
AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 464bbd70920..bcd5dd56ede 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
@@ -75,6 +75,11 @@ public class ReplaceTableClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return true;
+    }
+
     @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 37544ba6edd..c815d7badb3 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
@@ -68,6 +68,11 @@ public class RollupRenameClause extends AlterTableClause {
         return true;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        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 d1551169d2b..2f9ec7fb76d 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
@@ -58,6 +58,11 @@ public class TableRenameClause extends AlterTableClause {
         return false;
     }
 
+    @Override
+    public boolean needChangeMTMVState() {
+        return true;
+    }
+
     @Override
     public String toSql() {
         return "RENAME " + newTableName;
diff --git a/regression-test/data/mtmv_p0/test_base_mtmv.out 
b/regression-test/data/mtmv_p0/test_base_mtmv.out
index 306bda4dc37..6fb0d5f98c2 100644
--- a/regression-test/data/mtmv_p0/test_base_mtmv.out
+++ b/regression-test/data/mtmv_p0/test_base_mtmv.out
@@ -1,19 +1,46 @@
 -- This file is automatically generated. You should know what you did if you 
want to edit this
--- !status --
+-- !init --
 multi_mv_test_base_mtmv        INIT    INIT
 
--- !status --
+-- !success --
 multi_mv_test_base_mtmv        NORMAL  SUCCESS
 
--- !status --
+-- !add_column --
+multi_mv_test_base_mtmv        NORMAL  SUCCESS
+
+-- !rename_column --
+multi_mv_test_base_mtmv        SCHEMA_CHANGE   SUCCESS
+
+-- !success --
+multi_mv_test_base_mtmv        NORMAL  SUCCESS
+
+-- !modify_column --
+multi_mv_test_base_mtmv        SCHEMA_CHANGE   SUCCESS
+
+-- !success --
+multi_mv_test_base_mtmv        NORMAL  SUCCESS
+
+-- !drop_column --
+multi_mv_test_base_mtmv        SCHEMA_CHANGE   SUCCESS
+
+-- !success --
+multi_mv_test_base_mtmv        NORMAL  SUCCESS
+
+-- !replace_table --
+multi_mv_test_base_mtmv        SCHEMA_CHANGE   SUCCESS
+
+-- !success --
+multi_mv_test_base_mtmv        NORMAL  SUCCESS
+
+-- !rename_table --
 multi_mv_test_base_mtmv        SCHEMA_CHANGE   SUCCESS
 
--- !status --
+-- !success --
 multi_mv_test_base_mtmv        NORMAL  SUCCESS
 
--- !status --
+-- !drop_table --
 multi_mv_test_base_mtmv        SCHEMA_CHANGE   SUCCESS
 
--- !status --
+-- !success --
 multi_mv_test_base_mtmv        NORMAL  SUCCESS
 
diff --git a/regression-test/suites/mtmv_p0/test_base_mtmv.groovy 
b/regression-test/suites/mtmv_p0/test_base_mtmv.groovy
index f9bcaf2819d..0015a0fa130 100644
--- a/regression-test/suites/mtmv_p0/test_base_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_mtmv.groovy
@@ -15,11 +15,13 @@
 // specific language governing permissions and limitations
 // under the License.
 
-suite("test_base_mtmv") {
+suite("test_base_mtmv","mtmv") {
     def tableName = "t_test_base_mtmv_user"
+    def newTableName = "t_test_base_mtmv_user_new"
     def mvName = "multi_mv_test_base_mtmv"
     def dbName = "regression_test_mtmv_p0"
     sql """drop table if exists `${tableName}`"""
+    sql """drop table if exists `${newTableName}`"""
 
     sql """
         CREATE TABLE IF NOT EXISTS `${tableName}` (
@@ -32,48 +34,108 @@ suite("test_base_mtmv") {
             "replication_num" = "1"
         );
         """
+    sql """
+        CREATE TABLE IF NOT EXISTS `${newTableName}` (
+            event_day DATE,
+            id BIGINT,
+            username VARCHAR(20)
+        )
+        DISTRIBUTED BY HASH(id) BUCKETS 10
+        PROPERTIES (
+            "replication_num" = "1"
+        );
+        """
     sql """
         INSERT INTO ${tableName} 
VALUES("2022-10-26",1,"clz"),("2022-10-28",2,"zhangsang"),("2022-10-29",3,"lisi");
     """
 
     sql """drop materialized view if exists ${mvName};"""
 
-    // IMMEDIATE MANUAL
     sql """
         CREATE MATERIALIZED VIEW ${mvName}
         BUILD DEFERRED REFRESH COMPLETE ON MANUAL
         DISTRIBUTED BY RANDOM BUCKETS 2
         PROPERTIES ('replication_num' = '1') 
         AS 
-        SELECT * FROM ${tableName};
+        SELECT event_day,id,username FROM ${tableName};
     """
     def jobName = getJobName("regression_test_mtmv_p0", mvName);
-    order_qt_status "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    order_qt_init "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
      sql """
         REFRESH MATERIALIZED VIEW ${mvName} AUTO
     """
     waitingMTMVTaskFinished(jobName)
-    order_qt_status "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    order_qt_success "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
 
-    // alter table
+    // add column
     sql """
         alter table ${tableName} add COLUMN new_col INT AFTER username;
     """
-    order_qt_status "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    order_qt_add_column "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+
+    // rename column
     sql """
-        alter table ${tableName} drop COLUMN new_col;
+        alter table ${tableName} rename COLUMN new_col new_col_1;
     """
+    order_qt_rename_column "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
     sql """
         REFRESH MATERIALIZED VIEW ${mvName} AUTO
     """
     waitingMTMVTaskFinished(jobName)
-    order_qt_status "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    order_qt_success "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+
+    // modify column
+    sql """
+        alter table ${tableName} modify COLUMN new_col_1 BIGINT;
+    """
+    order_qt_modify_column "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    sql """
+        REFRESH MATERIALIZED VIEW ${mvName} AUTO
+    """
+    waitingMTMVTaskFinished(jobName)
+    order_qt_success "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+
+    // drop column
+    sql """
+        alter table ${tableName} drop COLUMN new_col_1;
+    """
+    order_qt_drop_column "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    sql """
+        REFRESH MATERIALIZED VIEW ${mvName} AUTO
+    """
+    waitingMTMVTaskFinished(jobName)
+    order_qt_success "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+
+    // replace table
+     sql """
+    ALTER TABLE ${tableName} REPLACE WITH TABLE ${newTableName} 
PROPERTIES('swap' = 'false');
+    """
+    order_qt_replace_table "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    sql """
+        REFRESH MATERIALIZED VIEW ${mvName} AUTO
+    """
+    waitingMTMVTaskFinished(jobName)
+    order_qt_success "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+
+    // rename table
+     sql """
+    ALTER TABLE ${tableName} rename ${newTableName};
+    """
+    order_qt_rename_table "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    sql """
+    ALTER TABLE ${newTableName} rename ${tableName};
+    """
+    sql """
+        REFRESH MATERIALIZED VIEW ${mvName} AUTO
+    """
+    waitingMTMVTaskFinished(jobName)
+    order_qt_success "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
 
     // drop table
     sql """
         drop table ${tableName}
     """
-    order_qt_status "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+    order_qt_drop_table "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
     sql """
         CREATE TABLE IF NOT EXISTS `${tableName}` (
             event_day DATE,
@@ -89,8 +151,9 @@ suite("test_base_mtmv") {
         REFRESH MATERIALIZED VIEW ${mvName} AUTO
     """
     waitingMTMVTaskFinished(jobName)
-    order_qt_status "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
-    sql """
-        DROP MATERIALIZED VIEW ${mvName}
-    """
+    order_qt_success "select Name,State,RefreshState  from 
mv_infos('database'='${dbName}') where Name='${mvName}'"
+
+    sql """drop table if exists `${tableName}`"""
+    sql """drop table if exists `${newTableName}`"""
+    sql """ DROP MATERIALIZED VIEW ${mvName}"""
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to