From 6804ae5827c3a92233424aa29f0c9fb87ed18be2 Mon Sep 17 00:00:00 2001 From: zhangdong <493738387@qq.com> Date: Wed, 3 Jul 2024 10:42:03 +0800 Subject: [PATCH] [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 --- .../java/org/apache/doris/alter/Alter.java | 16 +++- .../doris/analysis/AddColumnClause.java | 5 + .../doris/analysis/AddColumnsClause.java | 5 + .../doris/analysis/AddPartitionClause.java | 5 + .../analysis/AddPartitionLikeClause.java | 5 + .../doris/analysis/AddRollupClause.java | 5 + .../apache/doris/analysis/AlterClause.java | 4 + .../doris/analysis/AlterTableClause.java | 2 + .../doris/analysis/BuildIndexClause.java | 5 + .../doris/analysis/ColumnRenameClause.java | 5 + .../doris/analysis/CreateIndexClause.java | 5 + .../doris/analysis/DropColumnClause.java | 5 + .../doris/analysis/DropIndexClause.java | 5 + .../doris/analysis/DropPartitionClause.java | 5 + .../DropPartitionFromIndexClause.java | 5 + .../doris/analysis/DropRollupClause.java | 5 + .../doris/analysis/EnableFeatureClause.java | 5 + .../doris/analysis/ModifyColumnClause.java | 5 + .../analysis/ModifyColumnCommentClause.java | 5 + .../analysis/ModifyDistributionClause.java | 5 + .../doris/analysis/ModifyEngineClause.java | 5 + .../doris/analysis/ModifyPartitionClause.java | 5 + .../analysis/ModifyTableCommentClause.java | 5 + .../analysis/ModifyTablePropertiesClause.java | 5 + .../doris/analysis/PartitionRenameClause.java | 5 + .../doris/analysis/ReorderColumnsClause.java | 5 + .../analysis/ReplacePartitionClause.java | 5 + .../doris/analysis/ReplaceTableClause.java | 5 + .../doris/analysis/RollupRenameClause.java | 5 + .../doris/analysis/TableRenameClause.java | 5 + .../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 edc038e75b..33ed6c9e55 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 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 08fa27151d..f27f320481 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 765c6eb685..04ee893bd7 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 6adea94982..d25d3e255c 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 4ae585bc5d..48d9e15238 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 a9df4fedc8..f14e082836 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 d81cfec05f..0e573f8e67 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 eed07491f7..392f4e7b2e 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 806cb6492b..cb7ec08de7 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 127be53245..c5fe45f495 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 008735dac4..b39c0df4a8 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 db1190d87d..cbc2c12b1e 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 bb85ca0988..f72136ee2b 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 4b3c70699c..00c9d829e5 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 fe0cc97b25..469f92abdd 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 292dc6c9ad..fa730b00c5 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 d8b38457e4..8a4f76f43e 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 c2aebb9e1d..eb136c540f 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 8ae0ac33ac..836377bc9e 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 c1de80237c..58e0871ce3 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 1c6c95d062..d7e1dd60a6 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 bf7c1619d4..d8cfa500ec 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 8741e2ffca..fed20f5ba8 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 b4c519b2ae..b5e4c46d91 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 fc6ad24948..cf1739235e 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 13cf5f0412..e9b01fa483 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 3fece452e2..9a827c82f8 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 464bbd7092..bcd5dd56ed 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 37544ba6ed..c815d7badb 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 d1551169d2..2f9ec7fb76 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 306bda4dc3..6fb0d5f98c 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 --- !status -- +-- !success -- multi_mv_test_base_mtmv NORMAL SUCCESS --- !status -- +-- !modify_column -- multi_mv_test_base_mtmv SCHEMA_CHANGE SUCCESS --- !status -- +-- !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 + +-- !success -- +multi_mv_test_base_mtmv NORMAL SUCCESS + +-- !drop_table -- +multi_mv_test_base_mtmv SCHEMA_CHANGE SUCCESS + +-- !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 f9bcaf2819..0015a0fa13 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_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_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}'" // 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}""" }