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 270132c1e1..818ceda2ce 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 a6fefb119c..f7ce1ea56f 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 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 aa8e189b10..08fa27151d 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 3180331faa..765c6eb685 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 eddac80644..6adea94982 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 a414ed7992..4ae585bc5d 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 02852f9bf9..03e4c868fb 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 d52f72be7d..d81cfec05f 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 ad611bb95a..eed07491f7 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 99aee373b1..806cb6492b 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 5924da555e..127be53245 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 632492191c..008735dac4 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 4546a28c18..db1190d87d 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 45cde1838b..bb85ca0988 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 59e3388f1d..4b3c70699c 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 408c9406e8..fe0cc97b25 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 5929136d58..c3d41a4bf7 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 8aee07316e..d8b38457e4 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 49f5447163..c2aebb9e1d 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 ba927fb3c3..8ae0ac33ac 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 688a87b3f9..c1de80237c 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 0a1aec866b..1c6c95d062 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 7fd48d7511..bf7c1619d4 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 745ec0ffcc..8741e2ffca 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 e0aa994c6d..f349c8a51c 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 e3cf8390cb..fc6ad24948 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 0d630720e9..13cf5f0412 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 6d7f88c089..3fece452e2 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 20d153ce3b..464bbd7092 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 a51dff332f..b3af2ec09d 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 e35eff747e..d1551169d2 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 34e11608b3..edb706c530 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 0000000000..8a3d43dd80 --- /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};""" +}