This is an automated email from the ASF dual-hosted git repository.

yujun777 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 25edbbef6ea [test](ivm) Disable transparent rewrite in IVM base-vs-MV 
comparison cases (#68812)
25edbbef6ea is described below

commit 25edbbef6ea57055a241b7a8c4b353682d326bde
Author: yujun <[email protected]>
AuthorDate: Fri Oct 9 19:51:55 2026 +0800

    [test](ivm) Disable transparent rewrite in IVM base-vs-MV comparison cases 
(#68812)
    
    Several IVM regression cases under `regression-test/suites/mtmv_p0/ivm/`
    read the base table directly in order to assert that it returns the same
    rows as the materialized view. With transparent rewrite enabled, that
    base-table query can itself be rewritten to the MV, so the comparison is
    circular and asserts nothing about the base table.
---
 regression-test/suites/mtmv_p0/ivm/test_ivm_agg_array_1.groovy     | 2 ++
 regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_1.groovy    | 2 ++
 regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_2.groovy    | 2 ++
 .../suites/mtmv_p0/ivm/test_ivm_bitmap_runtime_fallback.groovy     | 2 ++
 regression-test/suites/mtmv_p0/ivm/test_ivm_decimal_avg.groovy     | 2 ++
 .../suites/mtmv_p0/ivm/test_ivm_minmax_runtime_fallback.groovy     | 2 ++
 .../ivm/test_ivm_partition_baseline_rebuild_dup_keys.groovy        | 2 ++
 .../suites/mtmv_p0/ivm/test_ivm_partition_drop_live_delta.groovy   | 2 ++
 regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_1.groovy        | 2 ++
 regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_2.groovy        | 2 ++
 regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_join_1.groovy   | 2 ++
 .../suites/mtmv_p0/ivm/test_ivm_rewrite_projection.groovy          | 7 +++++++
 .../suites/mtmv_p0/ivm/test_ivm_union_delete_same_base.groovy      | 2 ++
 13 files changed, 31 insertions(+)

diff --git a/regression-test/suites/mtmv_p0/ivm/test_ivm_agg_array_1.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_agg_array_1.groovy
index 6e109fb5289..045e3af45e8 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_agg_array_1.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_agg_array_1.groovy
@@ -20,6 +20,8 @@
 // array_sort keeps the .out output stable.
 
 suite("test_ivm_agg_array_1") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
 
     def base = "test_ivm_array_agg_collect_base"
     def aggMv = "test_ivm_array_agg_collect_agg_mv"
diff --git a/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_1.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_1.groovy
index 910f59b8dfe..a01b8bb803f 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_1.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_1.groovy
@@ -19,6 +19,8 @@ import org.awaitility.Awaitility
 import static java.util.concurrent.TimeUnit.SECONDS
 
 suite("test_ivm_bitmap_agg_1") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """drop materialized view if exists test_ivm_bitmap_agg_1_mv;"""
     sql """drop table if exists test_ivm_bitmap_agg_1_t;"""
 
diff --git a/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_2.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_2.groovy
index 1aaac7fcd8c..51bfa0defba 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_2.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_agg_2.groovy
@@ -19,6 +19,8 @@ import org.awaitility.Awaitility
 import static java.util.concurrent.TimeUnit.SECONDS
 
 suite("test_ivm_bitmap_agg_2") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """drop materialized view if exists test_ivm_bitmap_agg_2_mv;"""
     sql """drop table if exists test_ivm_bitmap_agg_2_t;"""
     sql """drop materialized view if exists test_ivm_bitmap_agg_2_all_mv;"""
diff --git 
a/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_runtime_fallback.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_runtime_fallback.groovy
index c49540bdc44..a36491b5497 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_runtime_fallback.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_bitmap_runtime_fallback.groovy
@@ -19,6 +19,8 @@ import org.awaitility.Awaitility
 import static java.util.concurrent.TimeUnit.SECONDS
 
 suite("test_ivm_bitmap_runtime_fallback") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """drop materialized view if exists ivm_bm_fb_mv"""
     sql """drop table if exists ivm_bm_fb_t"""
 
diff --git a/regression-test/suites/mtmv_p0/ivm/test_ivm_decimal_avg.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_decimal_avg.groovy
index c6bf7d2056e..ee63d4b4582 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_decimal_avg.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_decimal_avg.groovy
@@ -16,6 +16,8 @@
 // under the License.
 
 suite("test_ivm_decimal_avg", "mtmv") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     def tableName = "test_ivm_decimal_avg_base"
     def mvName = "test_ivm_decimal_avg_mv"
 
diff --git 
a/regression-test/suites/mtmv_p0/ivm/test_ivm_minmax_runtime_fallback.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_minmax_runtime_fallback.groovy
index 4bc1f069d78..ed9bcac6b7f 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_minmax_runtime_fallback.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_minmax_runtime_fallback.groovy
@@ -19,6 +19,8 @@ import org.awaitility.Awaitility
 import static java.util.concurrent.TimeUnit.SECONDS
 
 suite("test_ivm_minmax_runtime_fallback") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """drop materialized view if exists ivm_mm_fb_mv"""
     sql """drop table if exists ivm_mm_fb_t"""
 
diff --git 
a/regression-test/suites/mtmv_p0/ivm/test_ivm_partition_baseline_rebuild_dup_keys.groovy
 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_partition_baseline_rebuild_dup_keys.groovy
index 8f849196d47..7f0dbe6c13c 100644
--- 
a/regression-test/suites/mtmv_p0/ivm/test_ivm_partition_baseline_rebuild_dup_keys.groovy
+++ 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_partition_baseline_rebuild_dup_keys.groovy
@@ -31,6 +31,8 @@ import static java.util.concurrent.TimeUnit.SECONDS
  * sets, so row multiplicities are part of the expectation.
  */
 suite("test_ivm_partition_baseline_rebuild_dup_keys") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     def tableName = "ivm_part_dup_t"
     def mvName = "ivm_part_dup_mv"
 
diff --git 
a/regression-test/suites/mtmv_p0/ivm/test_ivm_partition_drop_live_delta.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_partition_drop_live_delta.groovy
index bea9eca24ef..32c6c9d0d76 100644
--- 
a/regression-test/suites/mtmv_p0/ivm/test_ivm_partition_drop_live_delta.groovy
+++ 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_partition_drop_live_delta.groovy
@@ -39,6 +39,8 @@ import static java.util.concurrent.TimeUnit.SECONDS
  * the case is fully deterministic.
  */
 suite("test_ivm_partition_drop_live_delta") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     def tableName = "ivm_part_drop_t"
     def mvName = "ivm_part_drop_mv"
 
diff --git a/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_1.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_1.groovy
index 4561a9dbbc0..7676ae393b9 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_1.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_1.groovy
@@ -16,6 +16,8 @@
 // under the License.
 
 suite("test_ivm_repeat_1") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """drop materialized view if exists test_ivm_repeat_1_mv;"""
     sql """drop table if exists test_ivm_repeat_1_t;"""
 
diff --git a/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_2.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_2.groovy
index e627f002f92..e2c0a1431ae 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_2.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_2.groovy
@@ -16,6 +16,8 @@
 // under the License.
 
 suite("test_ivm_repeat_2") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """drop materialized view if exists test_ivm_repeat_2_mv;"""
     sql """drop table if exists test_ivm_repeat_2_t;"""
 
diff --git a/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_join_1.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_join_1.groovy
index 7613425700d..97a307ba66d 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_join_1.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_repeat_join_1.groovy
@@ -16,6 +16,8 @@
 // under the License.
 
 suite("test_ivm_repeat_join_1") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """drop materialized view if exists test_ivm_repeat_join_1_mv;"""
     sql """drop table if exists test_ivm_repeat_join_1_sales;"""
     sql """drop table if exists test_ivm_repeat_join_1_product;"""
diff --git 
a/regression-test/suites/mtmv_p0/ivm/test_ivm_rewrite_projection.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_rewrite_projection.groovy
index fd9f41e168d..76fea1e7065 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_rewrite_projection.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_rewrite_projection.groovy
@@ -16,6 +16,11 @@
 // under the License.
 
 suite("test_ivm_rewrite_projection") {
+    // The order_qt_rewrite_projection_base query below must read the base 
table instead of being
+    // answered by the MV, so transparent rewrite is off by default and 
enabled only around the
+    // rewrite-hit check. A SET_VAR hint cannot do this: the switch is read 
during
+    // collectAndLockTable, before analyze() applies hints.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """drop materialized view if exists rewrite_projection_ivm;"""
     sql """drop table if exists rewrite_projection_base;"""
 
@@ -57,12 +62,14 @@ suite("test_ivm_rewrite_projection") {
     sql """REFRESH MATERIALIZED VIEW rewrite_projection_ivm COMPLETE"""
     waitingMTMVTaskFinishedByMvName("rewrite_projection_ivm")
 
+    sql """set enable_materialized_view_rewrite = true;"""
     mv_rewrite_success_without_check_chosen("""
         SELECT id, category, amount
         FROM rewrite_projection_base
         WHERE amount >= 10
         ORDER BY id
     """, "rewrite_projection_ivm")
+    sql """set enable_materialized_view_rewrite = false;"""
 
     order_qt_rewrite_projection_base """
         SELECT id, category, amount
diff --git 
a/regression-test/suites/mtmv_p0/ivm/test_ivm_union_delete_same_base.groovy 
b/regression-test/suites/mtmv_p0/ivm/test_ivm_union_delete_same_base.groovy
index 65cc90febc4..d53c6f5c177 100644
--- a/regression-test/suites/mtmv_p0/ivm/test_ivm_union_delete_same_base.groovy
+++ b/regression-test/suites/mtmv_p0/ivm/test_ivm_union_delete_same_base.groovy
@@ -16,6 +16,8 @@
 // under the License.
 
 suite("test_ivm_union_delete_same_base") {
+    // Base-table queries below assert the same rows as the MV, so transparent 
rewrite must be off.
+    sql """set enable_materialized_view_rewrite = false;"""
     sql """DROP MATERIALIZED VIEW IF EXISTS ivm_udsb_mv"""
     sql """DROP TABLE IF EXISTS ivm_udsb_events"""
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to