This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new 2fb54c768e4 [test](mtmv)Verifying master-slave consistency after
schema change (#51107)
2fb54c768e4 is described below
commit 2fb54c768e4533c3f0a63d320a31a9612d95a601
Author: zfr95 <[email protected]>
AuthorDate: Fri May 23 14:20:34 2025 +0800
[test](mtmv)Verifying master-slave consistency after schema change (#51107)
pick from #50880
[test](mtmv)Verifying master-slave consistency after schema change
---
.../mtmv_p0/test_base_replace_on_commit_mtmv.out | Bin 342 -> 349 bytes
.../org/apache/doris/regression/suite/Suite.groovy | 35 +++++++++
.../test_base_add_col_multi_level_mtmv.groovy | 30 +++++---
..._base_alter_col_comment_multi_level_mtmv.groovy | 24 ++++--
...est_base_alter_col_type_multi_level_mtmv.groovy | 23 ++++--
.../test_base_comment_multi_level_mtmv.groovy | 23 ++++--
.../test_base_drop_col_multi_level_mtmv.groovy | 25 +++---
.../mtmv_p0/test_base_drop_multi_level_mtmv.groovy | 30 ++++++--
.../test_base_recreate_on_commit_mtmv.groovy | 30 +++++++-
.../test_base_rename_col_multi_level_mtmv.groovy | 24 ++++--
.../test_base_rename_multi_level_mtmv.groovy | 24 ++++--
.../test_base_rename_mv_multi_level_mtmv.groovy | 36 ++++++---
.../mtmv_p0/test_base_rename_on_commit_mtmv.groovy | 55 +++++++++++---
.../test_base_rename_p_mv_multi_level_mtmv.groovy | 26 ++++---
.../test_base_replace_multi_level_mtmv.groovy | 63 +++++++++++-----
.../test_base_replace_mv_multi_level_mtmv.groovy | 84 +++++++++++++++------
.../test_base_replace_on_commit_mtmv.groovy | 45 +++++++++--
.../suites/mtmv_p0/test_column_type_mtmv.groovy | 30 +++++++-
.../suites/mtmv_p0/test_recreate_table_mtmv.groovy | 37 ++++++++-
19 files changed, 488 insertions(+), 156 deletions(-)
diff --git a/regression-test/data/mtmv_p0/test_base_replace_on_commit_mtmv.out
b/regression-test/data/mtmv_p0/test_base_replace_on_commit_mtmv.out
index e5bb84bf378..cccc66dff4e 100644
Binary files
a/regression-test/data/mtmv_p0/test_base_replace_on_commit_mtmv.out and
b/regression-test/data/mtmv_p0/test_base_replace_on_commit_mtmv.out differ
diff --git
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
index 8d3a7834fee..2438f1d63a1 100644
---
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
+++
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
@@ -1578,6 +1578,41 @@ class Suite implements GroovyInterceptable {
return debugPoint
}
+ // get follower ip
+ def get_follower_ip = {
+ def result = sql """show frontends;"""
+ if (result.size() == 1) {
+ return null
+ }
+ for (int i = 0; i < result.size(); i++) {
+ if (result[i][7] == "FOLLOWER" && result[i][8] == "false" &&
result[i][11] == "true") {
+ return result[i][1]
+ }
+ }
+ return null
+ }
+
+ // get master ip
+ def get_master_ip = {
+ def result = sql """show frontends;"""
+ for (int i = 0; i < result.size(); i++) {
+ if (result[i][7] == "FOLLOWER" && result[i][8] == "true" &&
result[i][11] == "true") {
+ return result[i][1]
+ }
+ }
+ return null
+ }
+
+ def run_on_follower_and_master = { test_fn ->
+ for (def ip in [get_follower_ip(), get_master_ip()]) {
+ if (ip != null) {
+ def jdbc_url =
context.config.jdbcUrl.replaceAll(/\/\/[0-9.]+:/, "//${ip}:")
+ logger.info("jdbc_url: " + jdbc_url)
+ test_fn(jdbc_url)
+ }
+ }
+ }
+
def waitingMTMVTaskFinishedByMvName = { mvName, dbName = context.dbName ->
Thread.sleep(2000);
String showTasks = "select
TaskId,JobId,JobName,MvId,Status,MvName,MvDatabaseName,ErrorMsg from
tasks('type'='mv') where MvDatabaseName = '${dbName}' and MvName = '${mvName}'
order by CreateTime ASC"
diff --git
a/regression-test/suites/mtmv_p0/test_base_add_col_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_add_col_multi_level_mtmv.groovy
index 1d079661968..21fdca199cd 100644
--- a/regression-test/suites/mtmv_p0/test_base_add_col_multi_level_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_add_col_multi_level_mtmv.groovy
@@ -127,14 +127,26 @@ suite("test_base_add_col_multi_level_mtmv","mtmv") {
sql """
alter table ${tableName1} add COLUMN new_col INT AFTER k2;
"""
- assertEquals("FINISHED", getAlterColumnFinalState("${tableName1}"))
- order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName1)
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_rewrite_success_without_check_chosen(querySql, mvName3)
- mv_rewrite_success_without_check_chosen(querySql, mvName4)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+
+ assertEquals("FINISHED", getAlterColumnFinalState("${tableName1}"))
+
+ order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+
+ mv_rewrite_success_without_check_chosen(querySql, mvName1)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_rewrite_success_without_check_chosen(querySql, mvName3)
+ mv_rewrite_success_without_check_chosen(querySql, mvName4)
+ }
+ })
+
+
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_alter_col_comment_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_alter_col_comment_multi_level_mtmv.groovy
index 6bb2eba17ad..690bd1a317a 100644
---
a/regression-test/suites/mtmv_p0/test_base_alter_col_comment_multi_level_mtmv.groovy
+++
b/regression-test/suites/mtmv_p0/test_base_alter_col_comment_multi_level_mtmv.groovy
@@ -128,13 +128,21 @@
suite("test_base_alter_col_comment_multi_level_mtmv","mtmv") {
sql """
alter table ${tableName1} modify COLUMN k3 COMMENT 'new comment';
"""
- order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName1)
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_rewrite_success_without_check_chosen(querySql, mvName3)
- mv_rewrite_success_without_check_chosen(querySql, mvName4)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+
+ mv_rewrite_success_without_check_chosen(querySql, mvName1)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_rewrite_success_without_check_chosen(querySql, mvName3)
+ mv_rewrite_success_without_check_chosen(querySql, mvName4)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_alter_col_type_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_alter_col_type_multi_level_mtmv.groovy
index 83abd73dde5..0bd4d645edd 100644
---
a/regression-test/suites/mtmv_p0/test_base_alter_col_type_multi_level_mtmv.groovy
+++
b/regression-test/suites/mtmv_p0/test_base_alter_col_type_multi_level_mtmv.groovy
@@ -128,13 +128,20 @@ suite("test_base_alter_col_type_multi_level_mtmv","mtmv")
{
sql """
alter table ${tableName1} modify COLUMN k3 VARCHAR(100);
"""
- order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_not_part_in(querySql, mvName1)
- mv_not_part_in(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_not_part_in(querySql, mvName1)
+ mv_not_part_in(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_comment_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_comment_multi_level_mtmv.groovy
index 5636c7dbcb4..462f23c445f 100644
--- a/regression-test/suites/mtmv_p0/test_base_comment_multi_level_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_comment_multi_level_mtmv.groovy
@@ -127,13 +127,20 @@ suite("test_base_comment_multi_level_mtmv","mtmv") {
sql """
alter table ${tableName1} MODIFY COMMENT "new table comment";
"""
- order_qt_comment_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_comment_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_comment_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_comment_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_comment_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_comment_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_comment_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_comment_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName1)
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_rewrite_success_without_check_chosen(querySql, mvName3)
- mv_rewrite_success_without_check_chosen(querySql, mvName4)
+ mv_rewrite_success_without_check_chosen(querySql, mvName1)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_rewrite_success_without_check_chosen(querySql, mvName3)
+ mv_rewrite_success_without_check_chosen(querySql, mvName4)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_drop_col_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_drop_col_multi_level_mtmv.groovy
index 3f0b77e6073..8e65da0bbe9 100644
--- a/regression-test/suites/mtmv_p0/test_base_drop_col_multi_level_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_drop_col_multi_level_mtmv.groovy
@@ -128,14 +128,21 @@ suite("test_base_drop_col_multi_level_mtmv","mtmv") {
sql """
alter table ${tableName1} drop COLUMN k3;
"""
- assertEquals("FINISHED", getAlterColumnFinalState("${tableName1}"))
- order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ assertEquals("FINISHED", getAlterColumnFinalState("${tableName1}"))
+ order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_not_part_in(querySql, mvName1)
- mv_not_part_in(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_not_part_in(querySql, mvName1)
+ mv_not_part_in(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_drop_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_drop_multi_level_mtmv.groovy
index e81f1799ec5..d6a983ff061 100644
--- a/regression-test/suites/mtmv_p0/test_base_drop_multi_level_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_drop_multi_level_mtmv.groovy
@@ -125,10 +125,17 @@ suite("test_base_drop_multi_level_mtmv","mtmv") {
// drop t1
sql """drop table if exists `${tableName1}`"""
- order_qt_drop_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_drop_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_drop_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_drop_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_drop_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_drop_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_drop_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_drop_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ }
+ })
sql """
CREATE TABLE ${tableName1}
@@ -145,8 +152,15 @@ suite("test_base_drop_multi_level_mtmv","mtmv") {
INSERT INTO ${tableName1} VALUES(1,"a");
"""
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_not_part_in(querySql, mvName1)
- mv_not_part_in(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_not_part_in(querySql, mvName1)
+ mv_not_part_in(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_recreate_on_commit_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_recreate_on_commit_mtmv.groovy
index c2011952a52..adb707fc982 100644
--- a/regression-test/suites/mtmv_p0/test_base_recreate_on_commit_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_recreate_on_commit_mtmv.groovy
@@ -58,11 +58,25 @@ suite("test_base_recreate_on_commit_mtmv","mtmv") {
REFRESH MATERIALIZED VIEW ${mvName} auto
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_select_init "select * from ${mvName}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_select_init "select * from ${mvName}"
+ }
+ })
// drop and recreate
sql """drop table if exists `${tableName1}`"""
- order_qt_drop "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_drop "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ }
+ })
sql """
CREATE TABLE ${tableName1}
@@ -81,6 +95,14 @@ suite("test_base_recreate_on_commit_mtmv","mtmv") {
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_recreate "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
- order_qt_select_recreate "select * from ${mvName}"
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_recreate "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ order_qt_select_recreate "select * from ${mvName}"
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_rename_col_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_rename_col_multi_level_mtmv.groovy
index 2e803efa5d2..9a2c104490f 100644
---
a/regression-test/suites/mtmv_p0/test_base_rename_col_multi_level_mtmv.groovy
+++
b/regression-test/suites/mtmv_p0/test_base_rename_col_multi_level_mtmv.groovy
@@ -128,13 +128,21 @@ suite("test_base_rename_col_multi_level_mtmv","mtmv") {
sql """
alter table ${tableName1} rename COLUMN k3 k4;
"""
- order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_not_part_in(querySql, mvName1)
- mv_not_part_in(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_add_col_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_add_col_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_add_col_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_add_col_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_not_part_in(querySql, mvName1)
+ mv_not_part_in(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_rename_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_rename_multi_level_mtmv.groovy
index 0f967ec096a..876e14dccb6 100644
--- a/regression-test/suites/mtmv_p0/test_base_rename_multi_level_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_rename_multi_level_mtmv.groovy
@@ -129,13 +129,21 @@ suite("test_base_rename_multi_level_mtmv","mtmv") {
sql """
ALTER TABLE ${tableName1} rename ${tableName1Rename};
"""
- order_qt_drop_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_drop_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_drop_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_drop_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_not_part_in(querySql, mvName1)
- mv_not_part_in(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_drop_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_drop_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_drop_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_drop_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_not_part_in(querySql, mvName1)
+ mv_not_part_in(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_rename_mv_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_rename_mv_multi_level_mtmv.groovy
index db95b0e412c..e4640f05290 100644
--- a/regression-test/suites/mtmv_p0/test_base_rename_mv_multi_level_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_rename_mv_multi_level_mtmv.groovy
@@ -129,20 +129,36 @@ suite("test_base_rename_mv_multi_level_mtmv","mtmv") {
sql """
ALTER MATERIALIZED VIEW ${mvName1} rename ${mvName1Rename};
"""
- order_qt_rename_mv_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1Rename}'"
- order_qt_rename_mv_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_rename_mv_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_rename_mv_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- // rename table will rename default partition name, so will change to async
- mv_not_part_in(querySql, mvName1Rename)
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_rewrite_success_without_check_chosen(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_rename_mv_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1Rename}'"
+ order_qt_rename_mv_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_rename_mv_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_rename_mv_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ // rename table will rename default partition name, so will change
to async
+ mv_not_part_in(querySql, mvName1Rename)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_rewrite_success_without_check_chosen(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
// after refresh,should can rewrite
sql """
REFRESH MATERIALIZED VIEW ${mvName1Rename} auto
"""
waitingMTMVTaskFinishedByMvName(mvName1Rename)
- mv_rewrite_success_without_check_chosen(querySql, mvName1Rename)
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ mv_rewrite_success_without_check_chosen(querySql, mvName1Rename)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_rename_on_commit_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_rename_on_commit_mtmv.groovy
index 02aca18c0f3..4b72ebf92a7 100644
--- a/regression-test/suites/mtmv_p0/test_base_rename_on_commit_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_rename_on_commit_mtmv.groovy
@@ -58,13 +58,27 @@ suite("test_base_rename_on_commit_mtmv","mtmv") {
REFRESH MATERIALIZED VIEW ${mvName} auto
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_select_init "select * from ${mvName}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_select_init "select * from ${mvName}"
+ }
+ })
// rename and recreate
sql """
ALTER TABLE ${tableName1} rename ${tableName2};
"""
- order_qt_rename "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_rename "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ }
+ })
sql """
INSERT INTO ${tableName2} VALUES(2,2);
@@ -72,8 +86,15 @@ suite("test_base_rename_on_commit_mtmv","mtmv") {
// after rename, should not refresh auto
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_rename "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
- order_qt_select_rename "select * from ${mvName}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_rename "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ order_qt_select_rename "select * from ${mvName}"
+ }
+ })
// create t1
sql """
@@ -92,14 +113,30 @@ suite("test_base_rename_on_commit_mtmv","mtmv") {
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_recreate_auto "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
- order_qt_select_recreate_auto "select * from ${mvName}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_recreate_auto "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ order_qt_select_recreate_auto "select * from ${mvName}"
+
+ // t2 should not trigger refresh
+ order_qt_before_trigger "select count(*) from tasks('type'='mv')
where MvName='${mvName}'"
+ }
+ })
- // t2 should not trigger refresh
- order_qt_before_trigger "select count(*) from tasks('type'='mv') where
MvName='${mvName}'"
sql """
INSERT INTO ${tableName2} VALUES(4,4);
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_after_trigger "select count(*) from tasks('type'='mv') where
MvName='${mvName}'"
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_after_trigger "select count(*) from tasks('type'='mv')
where MvName='${mvName}'"
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_rename_p_mv_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_rename_p_mv_multi_level_mtmv.groovy
index e7ba67650f9..f3a66e5704a 100644
---
a/regression-test/suites/mtmv_p0/test_base_rename_p_mv_multi_level_mtmv.groovy
+++
b/regression-test/suites/mtmv_p0/test_base_rename_p_mv_multi_level_mtmv.groovy
@@ -142,13 +142,21 @@ suite("test_base_rename_p_mv_multi_level_mtmv","mtmv") {
sql """
ALTER MATERIALIZED VIEW ${mvName1} rename ${mvName1Rename};
"""
- order_qt_rename_mv_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1Rename}'"
- order_qt_rename_mv_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_rename_mv_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_rename_mv_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName1Rename)
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_rewrite_success_without_check_chosen(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
- mv_not_part_in(querySql, mvName1)
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_rename_mv_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1Rename}'"
+ order_qt_rename_mv_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_rename_mv_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_rename_mv_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ mv_rewrite_success_without_check_chosen(querySql, mvName1Rename)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_rewrite_success_without_check_chosen(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ mv_not_part_in(querySql, mvName1)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_replace_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_replace_multi_level_mtmv.groovy
index d572a818a9b..a3d791e5337 100644
--- a/regression-test/suites/mtmv_p0/test_base_replace_multi_level_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_replace_multi_level_mtmv.groovy
@@ -127,15 +127,23 @@ suite("test_base_replace_multi_level_mtmv","mtmv") {
sql """
ALTER TABLE ${tableName1} REPLACE WITH TABLE ${tableName2}
PROPERTIES('swap' = 'true');
"""
- order_qt_replace_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_replace_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_replace_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_replace_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_not_part_in(querySql, mvName2)
- mv_not_part_in(querySql, mvName1)
- mv_not_part_in(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_replace_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_replace_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_replace_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_replace_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+
+ mv_not_part_in(querySql, mvName2)
+ mv_not_part_in(querySql, mvName1)
+ mv_not_part_in(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
sql """
REFRESH MATERIALIZED VIEW ${mvName1} auto
@@ -157,24 +165,39 @@ suite("test_base_replace_multi_level_mtmv","mtmv") {
"""
waitingMTMVTaskFinishedByMvName(mvName4)
- order_qt_refresh_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_refresh_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_refresh_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_refresh_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_refresh_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_refresh_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_refresh_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_refresh_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- mv_rewrite_success_without_check_chosen(querySql, mvName1)
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_rewrite_success_without_check_chosen(querySql, mvName3)
- mv_rewrite_success_without_check_chosen(querySql, mvName4)
+ mv_rewrite_success_without_check_chosen(querySql, mvName1)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_rewrite_success_without_check_chosen(querySql, mvName3)
+ mv_rewrite_success_without_check_chosen(querySql, mvName4)
+ }
+ })
// replace t1 swap false
sql """
ALTER TABLE ${tableName1} REPLACE WITH TABLE ${tableName2}
PROPERTIES('swap' = 'false');
"""
- order_qt_replace_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_replace_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_replace_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_replace_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_replace_t1_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_replace_t1_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_replace_t1_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_replace_t1_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_replace_mv_multi_level_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_replace_mv_multi_level_mtmv.groovy
index 410f28afd02..4602673975c 100644
---
a/regression-test/suites/mtmv_p0/test_base_replace_mv_multi_level_mtmv.groovy
+++
b/regression-test/suites/mtmv_p0/test_base_replace_mv_multi_level_mtmv.groovy
@@ -144,51 +144,87 @@ suite("test_base_replace_mv_multi_level_mtmv","mtmv") {
sql """
ALTER MATERIALIZED VIEW ${mvName1} REPLACE WITH MATERIALIZED VIEW
${mvName11} PROPERTIES('swap' = 'true');;
"""
- order_qt_replace_true_mv_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_replace_true_mv_mv11 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName11}'"
- order_qt_replace_true_mv_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_replace_true_mv_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_replace_true_mv_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- // replace table will rename default partition name, so will change to
async
- mv_not_part_in(querySql, mvName1)
- mv_not_part_in(querySql, mvName11)
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_rewrite_success_without_check_chosen(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_replace_true_mv_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_replace_true_mv_mv11 "select Name,State,RefreshState
from mv_infos('database'='${dbName}') where Name='${mvName11}'"
+ order_qt_replace_true_mv_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_replace_true_mv_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_replace_true_mv_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ // replace table will rename default partition name, so will
change to async
+ mv_not_part_in(querySql, mvName1)
+ mv_not_part_in(querySql, mvName11)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_rewrite_success_without_check_chosen(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
// after refresh,should can rewrite
sql """
REFRESH MATERIALIZED VIEW ${mvName1} auto
"""
waitingMTMVTaskFinishedByMvName(mvName1)
- mv_rewrite_success_without_check_chosen(querySql, mvName1)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ mv_rewrite_success_without_check_chosen(querySql, mvName1)
+ }
+ })
// after refresh,should can rewrite
sql """
REFRESH MATERIALIZED VIEW ${mvName11} auto
"""
waitingMTMVTaskFinishedByMvName(mvName11)
- mv_rewrite_success_without_check_chosen(querySql, mvName11)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ mv_rewrite_success_without_check_chosen(querySql, mvName11)
+ }
+ })
// replace mv1
sql """
ALTER MATERIALIZED VIEW ${mvName1} REPLACE WITH MATERIALIZED VIEW
${mvName11} PROPERTIES('swap' = 'false');;
"""
- order_qt_replace_false_mv_mv1 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName1}'"
- order_qt_replace_false_mv_mv11 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName11}'"
- order_qt_replace_false_mv_mv2 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName2}'"
- order_qt_replace_false_mv_mv3 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName3}'"
- order_qt_replace_false_mv_mv4 "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName4}'"
- // replace table will rename default partition name, so will change to
async
- mv_not_part_in(querySql, mvName1)
- mv_rewrite_success_without_check_chosen(querySql, mvName2)
- mv_rewrite_success_without_check_chosen(querySql, mvName3)
- mv_not_part_in(querySql, mvName4)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_replace_false_mv_mv1 "select Name,State,RefreshState
from mv_infos('database'='${dbName}') where Name='${mvName1}'"
+ order_qt_replace_false_mv_mv11 "select Name,State,RefreshState
from mv_infos('database'='${dbName}') where Name='${mvName11}'"
+ order_qt_replace_false_mv_mv2 "select Name,State,RefreshState
from mv_infos('database'='${dbName}') where Name='${mvName2}'"
+ order_qt_replace_false_mv_mv3 "select Name,State,RefreshState
from mv_infos('database'='${dbName}') where Name='${mvName3}'"
+ order_qt_replace_false_mv_mv4 "select Name,State,RefreshState
from mv_infos('database'='${dbName}') where Name='${mvName4}'"
+ // replace table will rename default partition name, so will
change to async
+ mv_not_part_in(querySql, mvName1)
+ mv_rewrite_success_without_check_chosen(querySql, mvName2)
+ mv_rewrite_success_without_check_chosen(querySql, mvName3)
+ mv_not_part_in(querySql, mvName4)
+ }
+ })
// after refresh,should can rewrite
sql """
REFRESH MATERIALIZED VIEW ${mvName1} auto
"""
waitingMTMVTaskFinishedByMvName(mvName1)
- mv_rewrite_success_without_check_chosen(querySql, mvName1)
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ mv_rewrite_success_without_check_chosen(querySql, mvName1)
+ }
+ })
}
diff --git
a/regression-test/suites/mtmv_p0/test_base_replace_on_commit_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_base_replace_on_commit_mtmv.groovy
index 8e8c3f599b2..5d8a4f3eb3d 100644
--- a/regression-test/suites/mtmv_p0/test_base_replace_on_commit_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_base_replace_on_commit_mtmv.groovy
@@ -74,27 +74,58 @@ suite("test_base_replace_on_commit_mtmv","mtmv") {
REFRESH MATERIALIZED VIEW ${mvName} auto
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_select_init "select * from ${mvName}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_select_init "select * from ${mvName}"
+ }
+ })
// replace
sql """
ALTER TABLE ${tableName1} REPLACE WITH TABLE ${tableName2}
PROPERTIES('swap' = 'true');
"""
- order_qt_replace "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_replace "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ }
+ })
sql """
INSERT INTO ${tableName1} VALUES(2,2);
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_replace "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
- order_qt_select_replace "select * from ${mvName}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_replace_normal "select Name,State,RefreshState from
mv_infos('database'='${dbName}') where Name='${mvName}'"
+ order_qt_select_replace "select * from ${mvName}"
- // t2 should not trigger refresh
- order_qt_before_trigger "select count(*) from tasks('type'='mv') where
MvName='${mvName}'"
+
+ // t2 should not trigger refresh
+ order_qt_before_trigger "select count(*) from tasks('type'='mv')
where MvName='${mvName}'"
+
+ }
+ })
sql """
INSERT INTO ${tableName2} VALUES(20,20);
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_after_trigger "select count(*) from tasks('type'='mv') where
MvName='${mvName}'"
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_after_trigger "select count(*) from tasks('type'='mv')
where MvName='${mvName}'"
+ }
+ })
}
diff --git a/regression-test/suites/mtmv_p0/test_column_type_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_column_type_mtmv.groovy
index fdf03ad19da..867623f0acb 100644
--- a/regression-test/suites/mtmv_p0/test_column_type_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_column_type_mtmv.groovy
@@ -18,6 +18,7 @@
import org.junit.Assert;
suite("test_column_type_mtmv","mtmv") {
+ String dbName = context.config.getDbNameByFile(context.file)
String suiteName = "test_column_type_mtmv"
String tableName = "${suiteName}_table"
String mvName = "${suiteName}_mv"
@@ -47,15 +48,38 @@ suite("test_column_type_mtmv","mtmv") {
"""
waitingMTMVTaskFinishedByMvName(mvName)
- order_qt_normal "select Name,State,RefreshState from
mv_infos('database'='regression_test_mtmv_p0') where Name='${mvName}'"
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_normal "select Name,State,RefreshState from
mv_infos('database'='regression_test_mtmv_p0') where Name='${mvName}'"
+ }
+ })
sql """alter table ${tableName} modify column class_id bigint;"""
assertEquals("FINISHED", getAlterColumnFinalState("${tableName}"))
- order_qt_after_schema_change "select Name,State,RefreshState from
mv_infos('database'='regression_test_mtmv_p0') where Name='${mvName}'"
+
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_after_schema_change "select Name,State,RefreshState from
mv_infos('database'='regression_test_mtmv_p0') where Name='${mvName}'"
+ }
+ })
sql """
REFRESH MATERIALIZED VIEW ${mvName} auto;
"""
def jobName = getJobName("regression_test_mtmv_p0", mvName);
waitingMTMVTaskFinishedNotNeedSuccess(jobName)
// can not be rewrite
- order_qt_after_refresh "select Name,State,RefreshState from
mv_infos('database'='regression_test_mtmv_p0') where Name='${mvName}'"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_after_refresh "select Name,State,RefreshState from
mv_infos('database'='regression_test_mtmv_p0') where Name='${mvName}'"
+ }
+ })
}
diff --git a/regression-test/suites/mtmv_p0/test_recreate_table_mtmv.groovy
b/regression-test/suites/mtmv_p0/test_recreate_table_mtmv.groovy
index ffae7398e3a..7ff44e27850 100644
--- a/regression-test/suites/mtmv_p0/test_recreate_table_mtmv.groovy
+++ b/regression-test/suites/mtmv_p0/test_recreate_table_mtmv.groovy
@@ -18,6 +18,7 @@
import org.junit.Assert;
suite("test_recreate_table_mtmv","mtmv") {
+ String dbName = context.config.getDbNameByFile(context.file)
String suiteName = "test_recreate_table_mtmv"
String tableName1 = "${suiteName}_table1"
String tableName2 = "${suiteName}_table2"
@@ -63,7 +64,14 @@ suite("test_recreate_table_mtmv","mtmv") {
) AS (SELECT * FROM ${tableName1} );
"""
waitingMTMVTaskFinishedByMvName(mvName1);
- order_qt_mv1 "SELECT * FROM ${mvName1}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_mv1 "SELECT * FROM ${mvName1}"
+ }
+ })
sql """
CREATE MATERIALIZED VIEW IF NOT EXISTS ${mvName2} BUILD IMMEDIATE
REFRESH AUTO ON COMMIT DISTRIBUTED BY RANDOM BUCKETS 2
PROPERTIES (
@@ -71,7 +79,14 @@ suite("test_recreate_table_mtmv","mtmv") {
) AS (SELECT first_name,count(last_name) FROM ${mvName1} GROUP BY
first_name);
"""
waitingMTMVTaskFinishedByMvName(mvName2);
- order_qt_mv2 "SELECT * FROM ${mvName2}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_mv2 "SELECT * FROM ${mvName2}"
+ }
+ })
sql """drop materialized view if exists ${mvName1};"""
sql """
CREATE MATERIALIZED VIEW IF NOT EXISTS ${mvName1} BUILD IMMEDIATE
REFRESH AUTO ON COMMIT DISTRIBUTED BY RANDOM BUCKETS 2
@@ -80,12 +95,26 @@ suite("test_recreate_table_mtmv","mtmv") {
) AS (SELECT * FROM ${tableName2} );
"""
waitingMTMVTaskFinishedByMvName(mvName1);
- order_qt_mv1_recreate "SELECT * FROM ${mvName1}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_mv1_recreate "SELECT * FROM ${mvName1}"
+ }
+ })
sql """
REFRESH MATERIALIZED VIEW ${mvName2} auto
"""
waitingMTMVTaskFinishedByMvName(mvName2);
- order_qt_mv2_recreate "SELECT * FROM ${mvName2}"
+ run_on_follower_and_master({ jdbc_url ->
+ connect(context.config.jdbcUser, context.config.jdbcPassword,
jdbc_url) {
+ sql "sync"
+ sql """set enable_materialized_view_nest_rewrite = true;"""
+ sql "use ${dbName}"
+ order_qt_mv2_recreate "SELECT * FROM ${mvName2}"
+ }
+ })
sql """drop table if exists `${tableName1}`"""
sql """drop table if exists `${tableName2}`"""
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]