diff --git a/regression-test/suites/rollup_p0/test_create_mv_and_mtmv.groovy b/regression-test/suites/rollup_p0/test_create_mv_and_mtmv.groovy index b8c3639fb42841..67fd5548b668ca 100644 --- a/regression-test/suites/rollup_p0/test_create_mv_and_mtmv.groovy +++ b/regression-test/suites/rollup_p0/test_create_mv_and_mtmv.groovy @@ -52,9 +52,10 @@ suite("test_create_mv_and_mtmv") { dt; """) + // The MTMV must read the sync MV to cover partition-column resolution through the rollup. explain { sql(""" - SELECT dt,advertiser, + SELECT /*+ use_mv(${tableName}.${mvName}) */ dt,advertiser, count(DISTINCT user_id) FROM ${tableName} GROUP BY dt,advertiser""") @@ -68,7 +69,7 @@ suite("test_create_mv_and_mtmv") { DISTRIBUTED BY RANDOM BUCKETS 1 PROPERTIES ('replication_num' = '1') AS - select dt, advertiser, count(distinct user_id) + select /*+ use_mv(${tableName}.${mvName}) */ dt, advertiser, count(distinct user_id) from ${tableName} group by dt, advertiser; """ @@ -94,6 +95,14 @@ AND RefreshMode = '${refreshMode}';""" wait_mtmv_refresh_finish("COMPLETE") qt_mtmv_init """ SELECT * FROM ${mtmvName} ORDER BY dt, advertiser""" + // Verify that the MTMV definition can build a rewrite cache and produce a rewrite candidate. + // The final CBO choice is intentionally not asserted because either valid plan may be cheaper. + mv_rewrite_success_without_check_chosen(""" + SELECT dt, advertiser, count(distinct user_id) + FROM ${tableName} + GROUP BY dt, advertiser + """, mtmvName) + sql """INSERT INTO ${tableName} VALUES("2024-07-03",'b', "2024-07-03", 'b',2);""" refreshTime = (int) (System.currentTimeMillis() / 1000L) sql """REFRESH MATERIALIZED VIEW ${mtmvName} AUTO;""" @@ -109,4 +118,4 @@ AND RefreshMode = '${refreshMode}';""" sql """ DROP TABLE IF EXISTS ${tableName} """ sql """ DROP MATERIALIZED VIEW IF EXISTS ${mtmvName} """ -} \ No newline at end of file +}