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]