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]