diff --git a/regression-test/data/mv_p0/multi_slot_k1p2ap3ps/multi_slot_k1p2ap3ps.out b/regression-test/data/mv_p0/multi_slot_k1p2ap3ps/multi_slot_k1p2ap3ps.out index 8397a2ecf0..fc5071acb7 100644 --- a/regression-test/data/mv_p0/multi_slot_k1p2ap3ps/multi_slot_k1p2ap3ps.out +++ b/regression-test/data/mv_p0/multi_slot_k1p2ap3ps/multi_slot_k1p2ap3ps.out @@ -2,12 +2,18 @@ -- !select_star -- -4 -4 -4 d 1 1 1 a +1 1 1 a +1 1 1 a 2 2 2 b +2 2 2 b +2 2 2 b +3 -3 \N c +3 -3 \N c 3 -3 \N c -- !select_mv -- -3 1 -2 7 -3 9 +2 21 +3 27 4 \N diff --git a/regression-test/data/nereids_rules_p0/mv/partition_mv_rewrite.out b/regression-test/data/nereids_rules_p0/mv/partition_mv_rewrite.out index bf22739583..c6b66a5974 100644 --- a/regression-test/data/nereids_rules_p0/mv/partition_mv_rewrite.out +++ b/regression-test/data/nereids_rules_p0/mv/partition_mv_rewrite.out @@ -1,107 +1,107 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !query_3_0_before -- -2023-10-17 2023-10-17 2 3 199.00 -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-17 2023-10-17 2 3 1990.00 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 -- !query_3_0_after -- -2023-10-17 2023-10-17 2 3 199.00 -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-17 2023-10-17 2 3 1990.00 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 -- !query_4_0_before -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 -- !query_4_0_after -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 -- !query_7_0_before -- -2023-10-17 2023-10-17 2 3 199.00 -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-17 2023-10-17 2 3 1990.00 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 2023-10-21 \N 2 3 \N -- !query_7_0_after -- -2023-10-17 2023-10-17 2 3 199.00 -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-17 2023-10-17 2 3 1990.00 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 2023-10-21 \N 2 3 \N -- !query_8_0_before -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 -- !query_8_0_after -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 -- !query_11_0_before -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 2023-10-21 \N 2 3 \N -- !query_11_0_after -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 2023-10-21 \N 2 3 \N -- !query_12_0_before -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 -- !query_12_0_after -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2 3 1592.00 -- !query_16_0_before -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 436.80 +2023-10-19 2023-10-19 2 3 398.00 -- !query_16_0_after -- -2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2 3 436.80 +2023-10-19 2023-10-19 2 3 398.00 -- !query_17_0_before -- -2023-10-18 2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2023-10-19 2 3 1592.00 2023-10-21 2023-10-21 \N 2 3 \N 2023-11-21 2023-11-21 \N 2 3 \N -- !query_17_0_after -- -2023-10-18 2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2023-10-19 2 3 1592.00 2023-10-21 2023-10-21 \N 2 3 \N 2023-11-21 2023-11-21 \N 2 3 \N -- !query_18_0_before -- -2023-10-18 2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2023-10-19 2 3 1592.00 -- !query_18_0_after -- -2023-10-18 2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2023-10-19 2 3 1592.00 -- !query_19_0_before -- -2023-10-18 2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2023-10-19 2 3 1592.00 2023-10-21 2023-10-21 \N 2 3 \N 2023-11-21 2023-11-21 \N 2 3 \N 2023-11-22 2023-11-22 \N 2 3 \N -- !query_19_0_after -- -2023-10-18 2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2023-10-19 2 3 1592.00 2023-10-21 2023-10-21 \N 2 3 \N 2023-11-21 2023-11-21 \N 2 3 \N 2023-11-22 2023-11-22 \N 2 3 \N -- !query_20_0_before -- -2023-10-18 2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2023-10-19 2 3 1592.00 -- !query_20_0_after -- -2023-10-18 2023-10-18 2023-10-18 2 3 109.20 -2023-10-19 2023-10-19 2023-10-19 2 3 99.50 +2023-10-18 2023-10-18 2023-10-18 2 3 1747.20 +2023-10-19 2023-10-19 2023-10-19 2 3 1592.00 diff --git a/regression-test/suites/mv_p0/multi_slot_k1p2ap3ps/multi_slot_k1p2ap3ps.groovy b/regression-test/suites/mv_p0/multi_slot_k1p2ap3ps/multi_slot_k1p2ap3ps.groovy index e9fef2a425..650b93800a 100644 --- a/regression-test/suites/mv_p0/multi_slot_k1p2ap3ps/multi_slot_k1p2ap3ps.groovy +++ b/regression-test/suites/mv_p0/multi_slot_k1p2ap3ps/multi_slot_k1p2ap3ps.groovy @@ -32,8 +32,14 @@ suite ("multi_slot_k1p2ap3ps") { properties("replication_num" = "1"); """ + sql "insert into d_table select 1,1,1,'a';" + sql "insert into d_table select 1,1,1,'a';" sql "insert into d_table select 1,1,1,'a';" sql "insert into d_table select 2,2,2,'b';" + sql "insert into d_table select 2,2,2,'b';" + sql "insert into d_table select 2,2,2,'b';" + sql "insert into d_table select 3,-3,null,'c';" + sql "insert into d_table select 3,-3,null,'c';" sql "insert into d_table select 3,-3,null,'c';" createMV ("create materialized view k1p2ap3ps as select k1+1,sum(abs(k2+2)+k3+3) from d_table group by k1+1;") @@ -41,13 +47,13 @@ suite ("multi_slot_k1p2ap3ps") { sql "insert into d_table select -4,-4,-4,'d';" sql "analyze table d_table with sync;" - sql """alter table d_table modify column k1 set stats ('row_count'='5');""" + sql """alter table d_table modify column k1 set stats ('row_count'='11');""" sql """set enable_stats=false;""" - qt_select_star "select * from d_table order by k1;" + order_qt_select_star "select * from d_table order by k1;" mv_rewrite_success("select k1+1,sum(abs(k2+2)+k3+3) from d_table group by k1+1 order by k1+1;", "k1p2ap3ps") - qt_select_mv "select k1+1,sum(abs(k2+2)+k3+3) from d_table group by k1+1 order by k1+1;" + order_qt_select_mv "select k1+1,sum(abs(k2+2)+k3+3) from d_table group by k1+1 order by k1+1;" sql """set enable_stats=true;""" mv_rewrite_success("select k1+1,sum(abs(k2+2)+k3+3) from d_table group by k1+1 order by k1+1;", "k1p2ap3ps") diff --git a/regression-test/suites/mv_p0/ssb/q_1_1/q_1_1.groovy b/regression-test/suites/mv_p0/ssb/q_1_1/q_1_1.groovy index c7aa6e67c6..5ff94e8852 100644 --- a/regression-test/suites/mv_p0/ssb/q_1_1/q_1_1.groovy +++ b/regression-test/suites/mv_p0/ssb/q_1_1/q_1_1.groovy @@ -80,7 +80,7 @@ suite ("mv_ssb_q_1_1") { (19930101 , 1 , 1 , 1 , 1 , 1 , '1' , 1 , 1 , 1 , 1 , 100 , 1 , 1 , 1 , '2023-06-09' , 'shipmode' , 'name' , 'address' , 'city' , 'nation' , 'AMERICA' , 'phone' , 'mktsegment' , 'name' , 'address' , 'city' , 'nation' , 'AMERICA' ,'phone', 'name', 'MFGR#1', 'category', 'brand', 'color', 'type', 4 ,'container'), (19930101 , 1 , 1 , 1 , 1 , 1 , '1' , 1 , 1 , 1 , 1 , 100 , 1 , 1 , 1 , '2023-06-09' , 'shipmode' , 'name' , 'address' , 'city' , 'nation' , 'AMERICA' , 'phone' , 'mktsegment' , 'name' , 'address' , 'city' , 'nation' , 'AMERICA' ,'phone', 'name', 'MFGR#1', 'category', 'brand', 'color', 'type', 4 ,'container');""" - sql """alter table lineorder_flat modify column LO_ORDERDATE set stats ('row_count'='6');""" + sql """alter table lineorder_flat modify column C_CITY set stats ('row_count'='6');""" createMV ("""create materialized view lineorder_q_1_1 as SELECT LO_ORDERKEY, SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue @@ -101,6 +101,7 @@ suite ("mv_ssb_q_1_1") { qt_select_star "select * from lineorder_flat order by 1,2, P_MFGR;" sql "analyze table lineorder_flat with sync;" + sql """alter table lineorder_flat modify column C_CITY set stats ('row_count'='6');""" mv_rewrite_success("""SELECT SUM(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM lineorder_flat WHERE diff --git a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/create_commit_mtmv_many_task.groovy b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/create_commit_mtmv_many_task.groovy index b61918fe71..ec5054f919 100644 --- a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/create_commit_mtmv_many_task.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/create_commit_mtmv_many_task.groovy @@ -20,8 +20,6 @@ import java.time.LocalDate suite("create_commit_mtmv_many_tasks", "p2") { def src_database_name = context.config.getDbNameByFile(context.file) - sql """drop database if exists ${src_database_name};""" - sql """create database ${src_database_name};""" sql """use ${src_database_name};""" def table_name1 = "lineitem" diff --git a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_datetrunc_part_up.groovy b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_datetrunc_part_up.groovy index c86f5d6a14..a2fcb2eba1 100644 --- a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_datetrunc_part_up.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_datetrunc_part_up.groovy @@ -71,6 +71,7 @@ suite("mtmv_range_date_datetrunc_date_part_up") { (1, 2, 3, null, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy', '2023-10-29 03:00:00'), (2, 3, 2, 1, 5.5, 6.5, 7.5, 8.5, 'o', 'k', null, '2023-10-18', 'a', 'b', 'yyyyyyyyy', '2023-10-29 04:00:00'); """ + sql """alter table ${tb_name} modify column l_comment set stats ('row_count'='5');""" def compare_res = { def stmt -> sql "SET enable_materialized_view_rewrite=false" diff --git a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_part_up.groovy b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_part_up.groovy index 5be6b1afdc..4c5b01ff59 100644 --- a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_part_up.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_part_up.groovy @@ -119,6 +119,8 @@ suite("mtmv_range_date_part_up") { (1, 3, 2, 2, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy', '2023-10-29'); """ + sql """alter table lineitem_range_date modify column l_comment set stats ('row_count'='7');""" + def get_part = { def mv_name -> def part_res = sql """show partitions from ${mv_name}""" return part_res.size() diff --git a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_part_up_rewrite.groovy b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_part_up_rewrite.groovy index b5e766ef62..35d4a60e62 100644 --- a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_part_up_rewrite.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_date_part_up_rewrite.groovy @@ -169,7 +169,7 @@ suite("mtmv_range_date_part_up_rewrite") { for (int i = 0; i < mv_name_list.size(); i++) { def job_name = getJobName(db, mv_name_list[i]) waitingMTMVTaskFinished(job_name) - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } @@ -177,45 +177,39 @@ suite("mtmv_range_date_part_up_rewrite") { sql """alter table lineitem_range_date_union add partition p4 values [("2023-11-01"), ("2023-11-02"));""" sql """insert into lineitem_range_date_union values (1, null, 3, 1, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy', '2023-11-01')""" - sql """analyze table ${mv_prefix}_mv1 with sync""" - sql """analyze table ${mv_prefix}_mv2 with sync""" for (int i = 0; i < mv_name_list.size(); i++) { - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } for (int i = 0; i < mv_name_list.size(); i++) { sql """refresh MATERIALIZED VIEW ${mv_name_list[i]} auto;""" - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } sql """insert into lineitem_range_date_union values (2, null, 3, 1, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy', '2023-11-01');""" - sql """analyze table ${mv_prefix}_mv1 with sync""" - sql """analyze table ${mv_prefix}_mv2 with sync""" for (int i = 0; i < mv_name_list.size(); i++) { - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } for (int i = 0; i < mv_name_list.size(); i++) { sql """refresh MATERIALIZED VIEW ${mv_name_list[i]} auto;""" - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } sql """ALTER TABLE lineitem_range_date_union DROP PARTITION IF EXISTS p4 FORCE""" - sql """analyze table ${mv_prefix}_mv1 with sync""" - sql """analyze table ${mv_prefix}_mv2 with sync""" for (int i = 0; i < mv_name_list.size(); i++) { - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } for (int i = 0; i < mv_name_list.size(); i++) { sql """refresh MATERIALIZED VIEW ${mv_name_list[i]} auto;""" - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } diff --git a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_datetime_part_up_rewrite.groovy b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_datetime_part_up_rewrite.groovy index 100fec5c4f..6956123f85 100644 --- a/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_datetime_part_up_rewrite.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/create_part_and_up/range_datetime_part_up_rewrite.groovy @@ -25,13 +25,14 @@ suite("mtmv_range_datetime_part_up_rewrite") { sql "SET enable_materialized_view_nest_rewrite=true" sql "SET enable_materialized_view_union_rewrite=true" sql "SET enable_nereids_timeout = false" - String mv_prefix = "range_datetime_up_union" - + String mv_prefix = "mtmv_range_datetime_part_up_rewrite" + String lineitemName = "${mv_prefix}_lineitem" + String ordersName = "${mv_prefix}_orders" sql """ - drop table if exists lineitem_range_datetime_union + drop table if exists ${lineitemName} """ - sql """CREATE TABLE `lineitem_range_datetime_union` ( + sql """CREATE TABLE `${lineitemName}` ( `l_orderkey` BIGINT NULL, `l_linenumber` INT NULL, `l_partkey` INT NULL, @@ -61,10 +62,10 @@ suite("mtmv_range_datetime_part_up_rewrite") { );""" sql """ - drop table if exists orders_range_datetime_union + drop table if exists ${ordersName} """ - sql """CREATE TABLE `orders_range_datetime_union` ( + sql """CREATE TABLE `${ordersName}` ( `o_orderkey` BIGINT NULL, `o_custkey` INT NULL, `o_orderstatus` VARCHAR(1) NULL, @@ -89,7 +90,7 @@ suite("mtmv_range_datetime_part_up_rewrite") { );""" sql """ - insert into lineitem_range_datetime_union values + insert into ${lineitemName} values (null, 1, 2, 3, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy', '2023-10-29 00:00:00'), (1, null, 3, 1, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy', '2023-10-29 00:00:00'), (3, 3, null, 2, 7.5, 8.5, 9.5, 10.5, 'k', 'o', '2023-10-19', '2023-10-19', 'c', 'd', 'xxxxxxxxx', '2023-10-29 02:00:00'), @@ -98,9 +99,10 @@ suite("mtmv_range_datetime_part_up_rewrite") { (3, 1, 1, 2, 7.5, 8.5, 9.5, 10.5, 'k', 'o', '2023-10-19', null, 'c', 'd', 'xxxxxxxxx', '2023-10-29 02:00:00'), (1, 3, 2, 2, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy', '2023-10-29 00:00:00'); """ + sql """alter table ${lineitemName} modify column l_comment set stats ('row_count'='7');""" sql """ - insert into orders_range_datetime_union values + insert into ${ordersName} values (null, 1, 'k', 99.5, 'a', 'b', 1, 'yy', '2023-10-29 00:00:00'), (1, null, 'o', 109.2, 'c','d',2, 'mm', '2023-10-29 00:00:00'), (3, 3, null, 99.5, 'a', 'b', 1, 'yy', '2023-10-29 01:00:00'), @@ -112,24 +114,18 @@ suite("mtmv_range_datetime_part_up_rewrite") { (3, 2, 'k', 99.5, 'a', 'b', 1, 'yy', '2023-10-29 00:00:00'), (4, 5, 'k', 99.5, 'a', 'b', 1, 'yy', '2023-10-29 02:00:00'); """ - - sql """alter table lineitem_range_datetime_union modify column l_shipdate set stats - ('row_count'='7.0', 'ndv'='3.0', 'num_nulls'='0.0', 'data_size'='56.0', 'min_value'='2023-10-29 00:00:00', 'max_value'='2023-10-29 02:00:00');""" - sql """alter table lineitem_range_datetime_union modify column l_orderkey set stats - ('row_count'='7.0', 'ndv'='3.0', 'num_nulls'='1.0', 'data_size'='56.0', 'min_value'='1', 'max_value'='3');""" - sql """alter table orders_range_datetime_union modify column o_orderkey set stats - ('row_count'='7.0', 'ndv'='3.0', 'num_nulls'='1.0', 'data_size'='56.0', 'min_value'='1', 'max_value'='3');""" + sql """alter table ${ordersName} modify column o_comment set stats ('row_count'='10');""" sql """DROP MATERIALIZED VIEW if exists ${mv_prefix}_mv1;""" sql """CREATE MATERIALIZED VIEW ${mv_prefix}_mv1 BUILD IMMEDIATE REFRESH AUTO ON MANUAL partition by(date_trunc(`col1`, 'month')) DISTRIBUTED BY RANDOM BUCKETS 2 PROPERTIES ('replication_num' = '1') AS - select date_trunc(`l_shipdate`, 'day') as col1, l_shipdate, l_orderkey from lineitem_range_datetime_union as t1 left join orders_range_datetime_union as t2 on t1.l_orderkey = t2.o_orderkey group by col1, l_shipdate, l_orderkey;""" + select date_trunc(`l_shipdate`, 'day') as col1, l_shipdate, l_orderkey from ${lineitemName} as t1 left join ${ordersName} as t2 on t1.l_orderkey = t2.o_orderkey group by col1, l_shipdate, l_orderkey;""" sql """DROP MATERIALIZED VIEW if exists ${mv_prefix}_mv2;""" sql """CREATE MATERIALIZED VIEW ${mv_prefix}_mv2 BUILD IMMEDIATE REFRESH AUTO ON MANUAL partition by(date_trunc(`col1`, 'month')) DISTRIBUTED BY RANDOM BUCKETS 2 PROPERTIES ('replication_num' = '1') AS - select date_trunc(`l_shipdate`, 'hour') as col1, l_shipdate, l_orderkey from lineitem_range_datetime_union as t1 left join orders_range_datetime_union as t2 on t1.l_orderkey = t2.o_orderkey group by col1, l_shipdate, l_orderkey;""" + select date_trunc(`l_shipdate`, 'hour') as col1, l_shipdate, l_orderkey from ${lineitemName} as t1 left join ${ordersName} as t2 on t1.l_orderkey = t2.o_orderkey group by col1, l_shipdate, l_orderkey;""" - def sql1 = """select date_trunc(`l_shipdate`, 'day') as col1, l_shipdate, l_orderkey from lineitem_range_datetime_union as t1 left join orders_range_datetime_union as t2 on t1.l_orderkey = t2.o_orderkey group by col1, l_shipdate, l_orderkey""" - def sql2 = """select date_trunc(`l_shipdate`, 'hour') as col1, l_shipdate, l_orderkey from lineitem_range_datetime_union as t1 left join orders_range_datetime_union as t2 on t1.l_orderkey = t2.o_orderkey group by col1, l_shipdate, l_orderkey""" + def sql1 = """select date_trunc(`l_shipdate`, 'day') as col1, l_shipdate, l_orderkey from ${lineitemName} as t1 left join ${ordersName} as t2 on t1.l_orderkey = t2.o_orderkey group by col1, l_shipdate, l_orderkey""" + def sql2 = """select date_trunc(`l_shipdate`, 'hour') as col1, l_shipdate, l_orderkey from ${lineitemName} as t1 left join ${ordersName} as t2 on t1.l_orderkey = t2.o_orderkey group by col1, l_shipdate, l_orderkey""" def localWaitingMTMVTaskFinished = { def jobName -> Thread.sleep(2000); @@ -168,60 +164,60 @@ suite("mtmv_range_datetime_part_up_rewrite") { } } - sql """analyze table ${mv_prefix}_mv1 with sync""" - sql """analyze table ${mv_prefix}_mv2 with sync""" def query_stmt_list = [sql1, sql2] def mv_name_list = ["${mv_prefix}_mv1", "${mv_prefix}_mv2"] for (int i = 0; i < mv_name_list.size(); i++) { def job_name = getJobName(db, mv_name_list[i]) waitingMTMVTaskFinished(job_name) - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } - sql """alter table lineitem_range_datetime_union add partition p4 values [("2023-11-29 03:00:00"), ("2023-11-29 04:00:00"));""" - sql """insert into lineitem_range_datetime_union values + sql """alter table ${lineitemName} add partition p4 values [("2023-11-29 03:00:00"), ("2023-11-29 04:00:00"));""" + sql """insert into ${lineitemName} values (1, null, 3, 1, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy', '2023-11-29 03:00:00')""" - sql """analyze table ${mv_prefix}_mv1 with sync""" - sql """analyze table ${mv_prefix}_mv2 with sync""" + sql """alter table ${lineitemName} modify column l_comment set stats ('row_count'='8');""" for (int i = 0; i < mv_name_list.size(); i++) { - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + // both mv should rewrite success + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } for (int i = 0; i < mv_name_list.size(); i++) { sql """refresh MATERIALIZED VIEW ${mv_name_list[i]} auto;""" - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + // both mv should rewrite success + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } - sql """insert into lineitem_range_datetime_union values + sql """insert into ${lineitemName} values (3, null, 3, 1, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy', '2023-11-29 03:00:00');""" - sql """analyze table ${mv_prefix}_mv1 with sync""" - sql """analyze table ${mv_prefix}_mv2 with sync""" + sql """alter table ${lineitemName} modify column l_comment set stats ('row_count'='9');""" for (int i = 0; i < mv_name_list.size(); i++) { - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + // both mv should rewrite success + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } for (int i = 0; i < mv_name_list.size(); i++) { sql """refresh MATERIALIZED VIEW ${mv_name_list[i]} auto;""" - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + // both mv should rewrite success + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } - sql """ALTER TABLE lineitem_range_datetime_union DROP PARTITION IF EXISTS p4 FORCE""" - sql """analyze table ${mv_prefix}_mv1 with sync""" - sql """analyze table ${mv_prefix}_mv2 with sync""" + sql """ALTER TABLE ${lineitemName} DROP PARTITION IF EXISTS p4 FORCE""" for (int i = 0; i < mv_name_list.size(); i++) { - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + // both mv should rewrite success + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } for (int i = 0; i < mv_name_list.size(); i++) { sql """refresh MATERIALIZED VIEW ${mv_name_list[i]} auto;""" - mv_rewrite_success(query_stmt_list[i], mv_name_list[i]) + // both mv should rewrite success + mv_rewrite_any_success(query_stmt_list[i], mv_name_list) compare_res(query_stmt_list[i] + " order by 1,2,3") } diff --git a/regression-test/suites/nereids_rules_p0/mv/partition_mv_rewrite.groovy b/regression-test/suites/nereids_rules_p0/mv/partition_mv_rewrite.groovy index f8023a9e1e..eba1edd94b 100644 --- a/regression-test/suites/nereids_rules_p0/mv/partition_mv_rewrite.groovy +++ b/regression-test/suites/nereids_rules_p0/mv/partition_mv_rewrite.groovy @@ -84,14 +84,32 @@ suite("partition_mv_rewrite") { sql""" insert into orders values (1, 1, 'ok', 99.5, '2023-10-17', 'a', 'b', 1, 'yy'), + (1, 1, 'ok', 99.5, '2023-10-17', 'a', 'b', 1, 'yy'), + (1, 1, 'ok', 99.5, '2023-10-17', 'a', 'b', 1, 'yy'), + (1, 1, 'ok', 99.5, '2023-10-17', 'a', 'b', 1, 'yy'), (2, 2, 'ok', 109.2, '2023-10-18', 'c','d',2, 'mm'), + (2, 2, 'ok', 109.2, '2023-10-18', 'c','d',2, 'mm'), + (2, 2, 'ok', 109.2, '2023-10-18', 'c','d',2, 'mm'), + (2, 2, 'ok', 109.2, '2023-10-18', 'c','d',2, 'mm'), + (3, 3, 'ok', 99.5, '2023-10-19', 'a', 'b', 1, 'yy'), + (3, 3, 'ok', 99.5, '2023-10-19', 'a', 'b', 1, 'yy'), + (3, 3, 'ok', 99.5, '2023-10-19', 'a', 'b', 1, 'yy'), (3, 3, 'ok', 99.5, '2023-10-19', 'a', 'b', 1, 'yy'); """ sql """ insert into lineitem values (1, 2, 3, 4, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy'), + (1, 2, 3, 4, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy'), + (1, 2, 3, 4, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy'), + (1, 2, 3, 4, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-17', '2023-10-17', '2023-10-17', 'a', 'b', 'yyyyyyyyy'), (2, 2, 3, 4, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy'), + (2, 2, 3, 4, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy'), + (2, 2, 3, 4, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy'), + (2, 2, 3, 4, 5.5, 6.5, 7.5, 8.5, 'o', 'k', '2023-10-18', '2023-10-18', '2023-10-18', 'a', 'b', 'yyyyyyyyy'), + (3, 2, 3, 6, 7.5, 8.5, 9.5, 10.5, 'k', 'o', '2023-10-19', '2023-10-19', '2023-10-19', 'c', 'd', 'xxxxxxxxx'), + (3, 2, 3, 6, 7.5, 8.5, 9.5, 10.5, 'k', 'o', '2023-10-19', '2023-10-19', '2023-10-19', 'c', 'd', 'xxxxxxxxx'), + (3, 2, 3, 6, 7.5, 8.5, 9.5, 10.5, 'k', 'o', '2023-10-19', '2023-10-19', '2023-10-19', 'c', 'd', 'xxxxxxxxx'), (3, 2, 3, 6, 7.5, 8.5, 9.5, 10.5, 'k', 'o', '2023-10-19', '2023-10-19', '2023-10-19', 'c', 'd', 'xxxxxxxxx'); """