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

zhangstar333 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 5c502fc0828 [fix](regression) Pin Paimon Rust runtime filter test 
settings (#69721)
5c502fc0828 is described below

commit 5c502fc08289c57ce8b8a9c521714196752473a9
Author: Gabriel <[email protected]>
AuthorDate: Wed Oct 28 21:29:31 2026 +0800

    [fix](regression) Pin Paimon Rust runtime filter test settings (#69721)
    
    ### What problem does this PR solve?
    
    `external_table_p0/paimon/test_paimon_rust_reader_eq_for_null.groovy`
    can fail under session-variable fuzzing even when the Rust
    runtime-filter converter works correctly. The suite forces IN runtime
    filters and waits for their arrival, but it does not set an IN-filter
    capacity until the later oversized-filter section.
    
    When fuzzing sets `runtime_filter_max_in_num=0`, the positive integer
    join builds a filter with two values. The filter is disabled with `reach
    max in num`, and `RustRuntimeFiltersApplied` remains zero, failing the
    assertion that the positive control reaches Rust. Waiting longer cannot
    activate a filter that was disabled by its capacity limit.
    
    Set a sufficient capacity and disable selectivity-based runtime-filter
    pruning before the reader/profile checks. Keep the separate 70000-value
    capacity for the oversized-filter boundary tests and use the existing
    `finally` block to restore both inherited settings. The positive,
    residual, reader-routing, and oversized-filter assertions remain intact.
---
 .../paimon/test_paimon_rust_reader_eq_for_null.groovy                | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git 
a/regression-test/suites/external_table_p0/paimon/test_paimon_rust_reader_eq_for_null.groovy
 
b/regression-test/suites/external_table_p0/paimon/test_paimon_rust_reader_eq_for_null.groovy
index 0619b7e9a57..1638926391c 100644
--- 
a/regression-test/suites/external_table_p0/paimon/test_paimon_rust_reader_eq_for_null.groovy
+++ 
b/regression-test/suites/external_table_p0/paimon/test_paimon_rust_reader_eq_for_null.groovy
@@ -226,6 +226,9 @@ suite("test_paimon_rust_reader_eq_for_null", 
"p0,external,paimon") {
         sql """set runtime_filter_wait_infinitely=true"""
         // TRuntimeFilterType.IN == 1: force the IN runtime-filter shape.
         sql """set runtime_filter_type=1"""
+        // Fuzzing can disable the positive IN control or prune it before Rust 
sees it.
+        sql "set runtime_filter_max_in_num=1024"
+        sql "set enable_runtime_filter_prune=false"
 
         // Reuse the framework's profile readiness polling and configured HTTP 
credentials.
         def profileAction = new ProfileAction(context)
@@ -489,8 +492,6 @@ suite("test_paimon_rust_reader_eq_for_null", 
"p0,external,paimon") {
         sql """INSERT INTO t_large_runtime_filter
             SELECT cast(number as int) FROM numbers('number'='65537')"""
         sql "set runtime_filter_max_in_num=70000"
-        // Preserve the large filter even when statistics predict low 
selectivity.
-        sql "set enable_runtime_filter_prune=false"
         // The probe child plus these distinct literals crosses the 16-bit 
expression
         // boundary. Pushing only the wrapped prefix would lose almost all 
matching rows.
         [65535, 65536, 65537].each { keyCount ->


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

Reply via email to