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 0513aafa3c22e9..a029f604dfdc61 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 @@ -206,8 +206,6 @@ private boolean processAlterOlapTable(AlterTableStmt stmt, OlapTable olapTable, } 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()) { @@ -263,7 +261,6 @@ private boolean processAlterOlapTable(AlterTableStmt stmt, OlapTable olapTable, } } 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)) { @@ -282,10 +279,21 @@ private boolean processAlterOlapTable(AlterTableStmt stmt, OlapTable olapTable, } else { throw new DdlException("Invalid alter operations: " + currentAlterOps); } - + if (needChangeMTMVState(alterClauses)) { + Env.getCurrentEnv().getMtmvService().alterTable(olapTable); + } return needProcessOutsideTableLock; } + private boolean needChangeMTMVState(List 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 08fa27151dce0c..f27f320481329c 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 boolean allowOpMTMV() { 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 765c6eb6856414..04ee893bd7cee3 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 boolean allowOpMTMV() { 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 6adea949826afd..d25d3e255cc32d 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 boolean allowOpMTMV() { 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 4ae585bc5dc085..48d9e15238c3c0 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 boolean allowOpMTMV() { 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 a9df4fedc81df1..f14e08283673f4 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 boolean allowOpMTMV() { 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 d81cfec05f9304..0e573f8e675731 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 AlterOpType getOpType() { 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 eed07491f7a646..392f4e7b2e092d 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 void setTableName(TableName tableName) { } 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 806cb6492b65fa..cb7ec08de78f9c 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 boolean allowOpMTMV() { 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 127be5324548db..c5fe45f4957dc6 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 boolean allowOpMTMV() { 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 008735dac4629e..b39c0df4a85db5 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 boolean allowOpMTMV() { 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 db1190d87d6f7b..cbc2c12b1e2da9 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 boolean allowOpMTMV() { 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 bb85ca098865d4..f72136ee2b3f41 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 boolean allowOpMTMV() { 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 4b3c70699c1853..00c9d829e57a50 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 boolean allowOpMTMV() { 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 fe0cc97b254bf5..469f92abdd9e87 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 boolean allowOpMTMV() { 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 292dc6c9ada3ff..fa730b00c5ff5d 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 boolean allowOpMTMV() { 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 d8b38457e49f75..8a4f76f43ef6a6 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 boolean allowOpMTMV() { 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 c2aebb9e1deceb..eb136c540f2a9e 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 boolean allowOpMTMV() { 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 8ae0ac33aca05e..836377bc9e05c5 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 boolean allowOpMTMV() { 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 c1de80237c7597..58e0871ce33a3e 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 boolean allowOpMTMV() { 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 1c6c95d062fc47..d7e1dd60a637f4 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 boolean allowOpMTMV() { 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 bf7c1619d4177c..d8cfa500ec5fc3 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 boolean allowOpMTMV() { 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 8741e2ffcade59..fed20f5ba82b39 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 boolean allowOpMTMV() { 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 0895890533aa4e..dce65d188eb6ca 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 @@ -347,6 +347,11 @@ public boolean allowOpMTMV() { 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 fc6ad24948caa0..cf1739235ec76e 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 boolean allowOpMTMV() { 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 13cf5f0412d853..e9b01fa48387b4 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 boolean allowOpMTMV() { 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 3fece452e2f46b..9a827c82f81a9c 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 boolean allowOpMTMV() { 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 464bbd70920c9d..bcd5dd56ede754 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 boolean allowOpMTMV() { 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 37544ba6edddd8..c815d7badb3d1f 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 boolean allowOpMTMV() { 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 d1551169d2ba73..2f9ec7fb76da0a 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 boolean allowOpMTMV() { 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 306bda4dc37a9c..6fb0d5f98c2a90 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 f9bcaf2819d787..0015a0fa13061d 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}""" }