Skip to content

feat(parquet): Enable Parquet filter_pushdown by default, with heurstic fallback when projecting few non-filter columns#23420

Draft
zhuqi-lucas wants to merge 17 commits into
apache:mainfrom
zhuqi-lucas:qizhu/parquet-pushdown-adaptive-gate
Draft

feat(parquet): Enable Parquet filter_pushdown by default, with heurstic fallback when projecting few non-filter columns#23420
zhuqi-lucas wants to merge 17 commits into
apache:mainfrom
zhuqi-lucas:qizhu/parquet-pushdown-adaptive-gate

Conversation

@zhuqi-lucas

@zhuqi-lucas zhuqi-lucas commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Part of #3463 (Enable parquet.pushdown_filters by default) — this is the first step of the two-step split @alamb suggested on #23369: land the heuristic on its own now; flip the default in a follow-up.

Rationale for this change

RowFilter has a fixed per-row machinery overhead that only pays for itself when the wide-column decode it lets us skip is meaningful. When the projection is narrow and the filter columns already cover most of it (typical for GROUP BY col-style queries such as ClickBench Q10/Q11/Q40), the overhead dominates and pushdown regresses.

On ClickBench with pushdown_filters=true, the naive path shows 20 slower / 6 faster / 17 no change vs HEAD. Adding this gate on top gave 4 slower / 5 faster / 34 no change (see #23369 CI comparison), with the remaining 4 "slower" queries all inside the CI noise floor. Q23 keeps its ~21× speedup.

What changes are included in this PR?

Single-file change in ParquetSource::try_pushdown_filters: decline pushdown when the projection contains fewer than 3 columns not referenced by the filter. When declined, pushdown_filters is treated as disabled for that scan — the filter stays above the scan in a FilterExec (correctness preserved) and the predicate is still injected into ParquetSource for stats / bloom / page-index pruning.

Kept intentionally simple:

  • No tuning knob — a hardcoded PUSHDOWN_MIN_NON_FILTER_COLS = 3.
  • No byte-weighted / data-type-aware cost model.
  • Complexity budget reserved for the runtime adaptive-placement work in #22883, which will supersede this heuristic when it lands.

Are these changes tested?

By existing tests: this change only affects scans where the user has opted into pushdown_filters=true (config or ParquetSource::pushdown_filters()), and only in the direction of declining pushdown (falling back to the pre-existing FilterExec path). The default pushdown_filters=false behavior is unchanged, so the default test matrix already covers the fallback path.

The ClickBench comparison on #23369 provides the end-to-end validation.

Are there any user-facing changes?

For users who explicitly enable pushdown_filters=true: their queries with narrow projections (fewer than 3 non-filter columns) will no longer push filters into the Parquet scan. This eliminates the Q10-style regressions those users historically hit. Users on the default (pushdown_filters=false) see zero change.

Follow-up

  • Extended benchmarks across other workloads (per @alamb).
  • Follow-up PR to flip pushdown_filters default to true once we're confident this heuristic holds up.
  • Longer term: #22883 runtime adaptive placement.

cc @alamb

Copilot AI review requested due to automatic review settings July 9, 2026 13:10
@zhuqi-lucas

This comment has been minimized.

@github-actions github-actions Bot added the datasource Changes to the datasource crate label Jul 9, 2026
@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a plan-time heuristic to ParquetSource::try_pushdown_filters to decline Parquet RowFilter pushdown when the scan’s projection is narrow and mostly covered by filter columns, aiming to avoid known regressions when parquet.pushdown_filters is enabled.

Changes:

  • Introduces a hardcoded threshold (PUSHDOWN_MIN_NON_FILTER_COLS = 3) to gate RowFilter pushdown based on projected columns not referenced by filters.
  • Collects referenced filter columns and projected columns (via collect_columns) to compute the “non-filter projected” column count before deciding whether to push down.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread datafusion/datasource-parquet/src/source.rs
@zhuqi-lucas

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@zhuqi-lucas

This comment has been minimized.

@adriangbot

This comment has been minimized.

@adriangbot

This comment has been minimized.

@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

@alamb The result looks good also for pushdown benchmark as expected for this PR:

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark clickbench_pushdown.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ QueryHEAD ┃  qizhu_parquet-pushdown-adaptive-gate ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 01.24 / 4.10 ±5.59 / 15.28 ms │          1.22 / 4.01 ±5.45 / 14.91 ms │     no change │
│ QQuery 112.96 / 13.15 ±0.12 / 13.30 ms │        13.57 / 13.86 ±0.28 / 14.39 ms │  1.05x slower │
│ QQuery 236.76 / 37.45 ±0.62 / 38.24 ms │        36.40 / 36.78 ±0.34 / 37.41 ms │     no change │
│ QQuery 331.03 / 31.63 ±0.82 / 33.25 ms │        31.04 / 31.19 ±0.12 / 31.38 ms │     no change │
│ QQuery 4227.12 / 230.25 ±2.21 / 233.66 ms │     226.06 / 227.38 ±0.86 / 228.35 ms │     no change │
│ QQuery 5274.19 / 277.03 ±2.85 / 282.25 ms │     273.51 / 278.30 ±3.38 / 283.52 ms │     no change │
│ QQuery 61.27 / 1.43 ±0.22 / 1.86 ms │           1.26 / 1.40 ±0.21 / 1.82 ms │     no change │
│ QQuery 716.54 / 16.77 ±0.19 / 16.99 ms │        15.08 / 15.15 ±0.05 / 15.24 ms │ +1.11x faster │
│ QQuery 8324.26 / 329.46 ±4.10 / 334.40 ms │     323.61 / 326.84 ±2.56 / 330.68 ms │     no change │
│ QQuery 9455.48 / 469.16 ±8.12 / 476.19 ms │     460.07 / 471.66 ±6.88 / 479.01 ms │     no change │
│ QQuery 1095.23 / 96.87 ±0.94 / 97.86 ms │        69.59 / 71.95 ±1.40 / 73.77 ms │ +1.35x faster │
│ QQuery 11106.87 / 107.79 ±0.95 / 109.41 ms │       83.37 / 87.98 ±7.69 / 103.25 ms │ +1.23x faster │
│ QQuery 12305.74 / 309.05 ±2.69 / 313.44 ms │     268.82 / 272.19 ±2.77 / 277.13 ms │ +1.14x faster │
│ QQuery 13426.27 / 436.14 ±9.16 / 450.87 ms │     370.07 / 375.79 ±5.10 / 383.77 ms │ +1.16x faster │
│ QQuery 14317.97 / 323.55 ±7.98 / 339.25 ms │     286.21 / 289.30 ±4.51 / 298.04 ms │ +1.12x faster │
│ QQuery 15275.93 / 284.48 ±7.07 / 292.21 ms │    274.85 / 287.42 ±11.31 / 305.63 ms │     no change │
│ QQuery 16622.58 / 633.26 ±9.22 / 649.55 ms │     614.49 / 623.14 ±7.08 / 632.86 ms │     no change │
│ QQuery 17634.21 / 637.48 ±2.55 / 641.26 ms │     623.65 / 634.04 ±9.82 / 646.87 ms │     no change │
│ QQuery 181269.87 / 1302.81 ±24.32 / 1345.00 ms │  1264.80 / 1271.50 ±4.83 / 1278.65 ms │     no change │
│ QQuery 1929.25 / 29.59 ±0.21 / 29.76 ms │       28.39 / 36.98 ±15.81 / 68.53 ms │  1.25x slower │
│ QQuery 20517.33 / 526.75 ±11.31 / 547.09 ms │     519.01 / 525.65 ±7.19 / 538.98 ms │     no change │
│ QQuery 21567.02 / 578.69 ±6.88 / 586.50 ms │     521.39 / 526.46 ±4.22 / 532.15 ms │ +1.10x faster │
│ QQuery 22927.00 / 937.75 ±10.48 / 956.68 ms │    990.15 / 993.76 ±4.16 / 1001.68 ms │  1.06x slower │
│ QQuery 23116.66 / 125.46 ±5.87 / 133.61 ms │     116.37 / 124.25 ±5.85 / 132.68 ms │     no change │
│ QQuery 2437.83 / 39.80 ±3.22 / 46.20 ms │        41.28 / 42.28 ±1.88 / 46.05 ms │  1.06x slower │
│ QQuery 25144.81 / 149.31 ±3.42 / 153.64 ms │     112.15 / 119.12 ±7.41 / 132.55 ms │ +1.25x faster │
│ QQuery 2649.92 / 50.96 ±0.86 / 52.31 ms │        42.00 / 42.70 ±0.37 / 43.04 ms │ +1.19x faster │
│ QQuery 27711.11 / 719.52 ±9.57 / 737.84 ms │     673.75 / 683.93 ±6.63 / 692.00 ms │     no change │
│ QQuery 283062.78 / 3091.39 ±19.74 / 3119.93 ms │  3067.46 / 3077.46 ±7.56 / 3085.45 ms │     no change │
│ QQuery 2941.17 / 45.16 ±7.39 / 59.93 ms │        41.71 / 55.51 ±9.80 / 71.56 ms │  1.23x slower │
│ QQuery 30312.51 / 317.83 ±4.76 / 326.73 ms │     307.46 / 314.68 ±4.54 / 321.29 ms │     no change │
│ QQuery 31293.30 / 301.88 ±6.24 / 310.74 ms │    295.00 / 306.48 ±11.50 / 328.33 ms │     no change │
│ QQuery 32926.19 / 968.21 ±25.26 / 1002.64 ms │   950.24 / 994.38 ±23.11 / 1017.51 ms │     no change │
│ QQuery 331451.44 / 1489.42 ±24.90 / 1529.12 ms │ 1474.44 / 1486.27 ±12.10 / 1503.04 ms │     no change │
│ QQuery 341486.33 / 1497.38 ±6.12 / 1505.11 ms │ 1493.04 / 1534.83 ±38.86 / 1585.35 ms │     no change │
│ QQuery 35281.95 / 303.19 ±24.93 / 348.47 ms │    281.46 / 305.21 ±16.40 / 324.06 ms │     no change │
│ QQuery 3667.03 / 73.48 ±4.55 / 80.29 ms │        67.22 / 72.37 ±4.84 / 80.72 ms │     no change │
│ QQuery 3736.59 / 40.92 ±4.82 / 48.33 ms │        35.86 / 41.06 ±4.50 / 47.14 ms │     no change │
│ QQuery 3836.44 / 42.07 ±4.96 / 49.73 ms │        41.81 / 43.46 ±0.90 / 44.56 ms │     no change │
│ QQuery 39141.26 / 143.72 ±2.13 / 147.46 ms │     126.12 / 142.17 ±9.14 / 154.61 ms │     no change │
│ QQuery 4018.39 / 21.19 ±4.94 / 31.06 ms │        14.23 / 16.32 ±2.55 / 21.27 ms │ +1.30x faster │
│ QQuery 4117.21 / 21.75 ±5.29 / 30.45 ms │        14.19 / 14.49 ±0.22 / 14.82 ms │ +1.50x faster │
│ QQuery 4214.71 / 14.98 ±0.21 / 15.23 ms │        13.56 / 13.77 ±0.14 / 13.99 ms │ +1.09x faster │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)17072.27ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)16833.48ms │
│ Average Time (HEAD)397.03ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate)391.48ms │
│ Queries Faster12 │
│ Queries Slower5 │
│ Queries with No Change26 │
│ Queries with Failure0 │
└─────────────────────────────────────────────────────┴────────────┘

@alamb alamb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great. I think we are very close @zhuqi-lucas

I think we need to do the following :

  1. To make this a config setting that can be disabled (so that people who want to force filter pushdown on (to keep the current behavior) can do so
  2. Add a note to the upgrade guide explaining how to get the original behavior
  3. Add some metric so it is clear from the profiling that this heuristic has happened

I would also like to do some profiling of the query that appears consistently get slower

│ QQuery 29 │        41.17 / 45.16 ±7.39 / 59.93 ms │        41.71 / 55.51 ±9.80 / 71.56 ms │  1.23x slower │

@alamb

alamb commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

I will try and work on some of these items

zhuqi-lucas added a commit to zhuqi-lucas/arrow-datafusion that referenced this pull request Jul 10, 2026
… marker

Per @alamb's review on apache#23420:

1. Config opt-out: new
   `datafusion.execution.parquet.pushdown_filter_narrow_projection_gate`
   (default true). Set to false to restore the pre-existing unconditional
   pushdown behavior. Proto + serde support included so the option
   round-trips through the physical plan.

2. Plan-display marker: when the gate declines pushdown for a scan,
   the ParquetSource fmt_extra output includes
   `pushdown_declined=narrow_projection` so profiling / EXPLAIN
   ANALYZE can see the heuristic fired without needing to correlate
   config against per-query symptoms.

3. Upgrade guide: docs/source/library-user-guide/upgrading/55.0.0.md
   documents the new behavior and how to opt out.

Kept the heuristic itself unchanged (single hardcoded
PUSHDOWN_MIN_NON_FILTER_COLS = 3 with no tuning knob) per @alamb's
'complexity budget' note.
@github-actions github-actions Bot added documentation Improvements or additions to documentation common Related to common crate proto Related to proto crate labels Jul 10, 2026
@zhuqi-lucas

zhuqi-lucas commented Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

This is great. I think we are very close @zhuqi-lucas

I think we need to do the following :

  1. To make this a config setting that can be disabled (so that people who want to force filter pushdown on (to keep the current behavior) can do so
  2. Add a note to the upgrade guide explaining how to get the original behavior
  3. Add some metric so it is clear from the profiling that this heuristic has happened

I would also like to do some profiling of the query that appears consistently get slower

│ QQuery 29 │        41.17 / 45.16 ±7.39 / 59.93 ms │        41.71 / 55.51 ±9.80 / 71.56 ms │  1.23x slower │

Thanks @alamb , addressed all three points in 1ef3990:

  1. Config opt-out: added datafusion.execution.parquet.pushdown_filter_narrow_projection_gate (default true). Set to false to restore the pre-existing unconditional pushdown. Proto + serde support round-trips through the physical plan.
  2. Plan-display marker: when the gate declines, ParquetSource's fmt_extra output now includes pushdown_declined=narrow_projection so EXPLAIN / EXPLAIN ANALYZE shows it without needing to correlate config against per-query symptoms.
  3. Upgrade guide: docs/source/library-user-guide/upgrading/55.0.0.md documents the new behavior and the opt-out.

Kept the heuristic itself untouched (single hardcoded PUSHDOWN_MIN_NON_FILTER_COLS = 3, no tuning knob, no byte-weighting) per your complexity-budget note.

Q29 is noise, above triggered another run, and it does not have filter.

QQuery 2941.48 / 50.75 ±17.17 / 85.06 ms │       41.41 / 53.52 ±15.73 / 81.05 ms │  1.05x slower

@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown

Thank you for opening this pull request!

Reviewer note: cargo-semver-checks reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch).

Details
     Cloning apache/main
    Building datafusion v54.0.0 (current)
       Built [ 107.215s] (current)
     Parsing datafusion v54.0.0 (current)
      Parsed [   0.034s] (current)
    Building datafusion v54.0.0 (baseline)
       Built [ 101.769s] (baseline)
     Parsing datafusion v54.0.0 (baseline)
      Parsed [   0.036s] (baseline)
    Checking datafusion v54.0.0 -> v54.0.0 (no change; assume patch)
     Checked [   0.621s] 223 checks: 223 pass, 30 skip
     Summary no semver update required
    Finished [ 211.458s] datafusion
    Building datafusion-common v54.0.0 (current)
       Built [  33.618s] (current)
     Parsing datafusion-common v54.0.0 (current)
      Parsed [   0.061s] (current)
    Building datafusion-common v54.0.0 (baseline)
       Built [  33.813s] (baseline)
     Parsing datafusion-common v54.0.0 (baseline)
      Parsed [   0.061s] (baseline)
    Checking datafusion-common v54.0.0 -> v54.0.0 (no change; assume patch)
     Checked [   0.672s] 223 checks: 222 pass, 1 fail, 0 warn, 30 skip

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field ParquetOptions.pushdown_filter_mode in /home/runner/work/datafusion/datafusion/datafusion/common/src/config.rs:1169

     Summary semver requires new major version: 1 major and 0 minor checks failed
    Finished [  69.199s] datafusion-common
    Building datafusion-datasource-parquet v54.0.0 (current)
       Built [  43.714s] (current)
     Parsing datafusion-datasource-parquet v54.0.0 (current)
      Parsed [   0.030s] (current)
    Building datafusion-datasource-parquet v54.0.0 (baseline)
       Built [  42.644s] (baseline)
     Parsing datafusion-datasource-parquet v54.0.0 (baseline)
      Parsed [   0.030s] (baseline)
    Checking datafusion-datasource-parquet v54.0.0 -> v54.0.0 (no change; assume patch)
     Checked [   0.154s] 223 checks: 223 pass, 30 skip
     Summary no semver update required
    Finished [  87.858s] datafusion-datasource-parquet
    Building datafusion-proto v54.0.0 (current)
       Built [  60.557s] (current)
     Parsing datafusion-proto v54.0.0 (current)
      Parsed [   0.017s] (current)
    Building datafusion-proto v54.0.0 (baseline)
       Built [  60.560s] (baseline)
     Parsing datafusion-proto v54.0.0 (baseline)
      Parsed [   0.018s] (baseline)
    Checking datafusion-proto v54.0.0 -> v54.0.0 (no change; assume patch)
     Checked [   0.230s] 223 checks: 223 pass, 30 skip
     Summary no semver update required
    Finished [ 122.546s] datafusion-proto
    Building datafusion-proto-common v54.0.0 (current)
       Built [  22.138s] (current)
     Parsing datafusion-proto-common v54.0.0 (current)
      Parsed [   0.048s] (current)
    Building datafusion-proto-common v54.0.0 (baseline)
       Built [  22.199s] (baseline)
     Parsing datafusion-proto-common v54.0.0 (baseline)
      Parsed [   0.049s] (baseline)
    Checking datafusion-proto-common v54.0.0 -> v54.0.0 (no change; assume patch)
     Checked [   1.107s] 223 checks: 222 pass, 1 fail, 0 warn, 30 skip

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field ParquetOptions.pushdown_filter_mode in /home/runner/work/datafusion/datafusion/datafusion/proto-common/src/generated/prost.rs:819
  field ParquetOptions.pushdown_filter_mode in /home/runner/work/datafusion/datafusion/datafusion/proto-common/src/generated/prost.rs:819
  field ParquetOptions.pushdown_filter_mode in /home/runner/work/datafusion/datafusion/datafusion/proto-common/src/generated/prost.rs:819

     Summary semver requires new major version: 1 major and 0 minor checks failed
    Finished [  46.362s] datafusion-proto-common
    Building datafusion-proto-models v54.0.0 (current)
       Built [  25.579s] (current)
     Parsing datafusion-proto-models v54.0.0 (current)
      Parsed [   0.131s] (current)
    Building datafusion-proto-models v54.0.0 (baseline)
       Built [  25.610s] (baseline)
     Parsing datafusion-proto-models v54.0.0 (baseline)
      Parsed [   0.132s] (baseline)
    Checking datafusion-proto-models v54.0.0 -> v54.0.0 (no change; assume patch)
     Checked [   1.791s] 223 checks: 222 pass, 1 fail, 0 warn, 30 skip

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field ParquetOptions.pushdown_filter_mode in /home/runner/work/datafusion/datafusion/datafusion/proto-models/src/generated/datafusion_proto_common.rs:819
  field ParquetOptions.pushdown_filter_mode in /home/runner/work/datafusion/datafusion/datafusion/proto-models/src/generated/datafusion_proto_common.rs:819

     Summary semver requires new major version: 1 major and 0 minor checks failed
    Finished [  54.430s] datafusion-proto-models
    Building datafusion-sqllogictest v54.0.0 (current)
       Built [ 181.742s] (current)
     Parsing datafusion-sqllogictest v54.0.0 (current)
      Parsed [   0.021s] (current)
    Building datafusion-sqllogictest v54.0.0 (baseline)
       Built [ 180.426s] (baseline)
     Parsing datafusion-sqllogictest v54.0.0 (baseline)
      Parsed [   0.022s] (baseline)
    Checking datafusion-sqllogictest v54.0.0 -> v54.0.0 (no change; assume patch)
     Checked [   0.096s] 223 checks: 223 pass, 30 skip
     Summary no semver update required
    Finished [ 365.480s] datafusion-sqllogictest

@github-actions github-actions Bot added the auto detected api change Auto detected API change label Jul 10, 2026
zhuqi-lucas added a commit to zhuqi-lucas/arrow-datafusion that referenced this pull request Jul 10, 2026
Per Copilot's review on apache#23420 line 887: TableSchema layout is
[file, partition, virtual], and only file columns are actually decoded
from parquet. Partition and virtual columns don't incur decode cost,
so counting them as 'non-filter projected cols' can keep pushdown
enabled for partitioned tables whose *file* projection is actually
narrow — reintroducing the very regressions this heuristic protects
against.

Now both the filter-column set and the non-filter projected count
restrict to indices `< file_schema().fields().len()`.
@github-actions github-actions Bot added the core Core DataFusion crate label Jul 10, 2026
@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ qizhu_parquet-pushdown-adaptive-gate ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.30 / 5.77 ±0.87 / 7.51 ms │          5.40 / 5.92 ±0.91 / 7.73 ms │     no change │
│ QQuery 2  │        81.21 / 81.48 ±0.18 / 81.70 ms │       44.78 / 44.99 ±0.22 / 45.40 ms │ +1.81x faster │
│ QQuery 3  │        29.64 / 29.77 ±0.11 / 29.90 ms │       26.95 / 27.15 ±0.12 / 27.27 ms │ +1.10x faster │
│ QQuery 4  │     492.43 / 504.72 ±6.18 / 508.72 ms │    388.19 / 391.38 ±2.79 / 396.26 ms │ +1.29x faster │
│ QQuery 5  │        51.36 / 51.98 ±0.56 / 52.93 ms │       76.45 / 77.63 ±0.68 / 78.51 ms │  1.49x slower │
│ QQuery 6  │        36.28 / 37.09 ±0.43 / 37.56 ms │       37.66 / 38.07 ±0.31 / 38.58 ms │     no change │
│ QQuery 7  │       94.64 / 96.35 ±2.38 / 101.03 ms │      97.09 / 98.27 ±1.40 / 100.71 ms │     no change │
│ QQuery 8  │        36.92 / 37.44 ±0.48 / 38.22 ms │       13.53 / 13.92 ±0.24 / 14.27 ms │ +2.69x faster │
│ QQuery 9  │        52.99 / 54.01 ±1.02 / 55.85 ms │       51.57 / 53.68 ±2.28 / 57.65 ms │     no change │
│ QQuery 10 │        64.07 / 64.35 ±0.32 / 64.93 ms │       75.48 / 77.29 ±2.05 / 81.18 ms │  1.20x slower │
│ QQuery 11 │     307.43 / 314.53 ±4.52 / 321.16 ms │    239.41 / 241.35 ±2.67 / 246.64 ms │ +1.30x faster │
│ QQuery 12 │        29.12 / 29.33 ±0.15 / 29.54 ms │       28.04 / 28.48 ±0.39 / 29.14 ms │     no change │
│ QQuery 13 │     119.12 / 121.29 ±3.32 / 127.85 ms │    106.88 / 109.02 ±3.09 / 115.11 ms │ +1.11x faster │
│ QQuery 14 │     414.89 / 416.03 ±1.04 / 417.47 ms │    403.68 / 406.16 ±1.40 / 407.90 ms │     no change │
│ QQuery 15 │        59.19 / 60.28 ±0.89 / 61.40 ms │       24.85 / 26.44 ±2.71 / 31.85 ms │ +2.28x faster │
│ QQuery 16 │           6.60 / 6.74 ±0.20 / 7.14 ms │          6.56 / 6.76 ±0.21 / 7.16 ms │     no change │
│ QQuery 17 │        81.44 / 82.22 ±1.07 / 84.34 ms │    116.60 / 117.07 ±0.32 / 117.46 ms │  1.42x slower │
│ QQuery 18 │     124.39 / 126.36 ±1.74 / 129.31 ms │    334.76 / 343.49 ±5.47 / 348.99 ms │  2.72x slower │
│ QQuery 19 │        42.03 / 42.21 ±0.26 / 42.72 ms │       38.90 / 39.86 ±0.59 / 40.75 ms │ +1.06x faster │
│ QQuery 20 │        36.12 / 36.96 ±0.82 / 38.50 ms │       38.76 / 39.24 ±0.56 / 40.31 ms │  1.06x slower │
│ QQuery 21 │        17.90 / 18.36 ±0.69 / 19.74 ms │       19.25 / 20.20 ±1.69 / 23.58 ms │  1.10x slower │
│ QQuery 22 │        63.72 / 64.45 ±0.77 / 65.90 ms │       61.81 / 62.03 ±0.18 / 62.22 ms │     no change │
│ QQuery 23 │     347.17 / 351.32 ±5.59 / 362.26 ms │    393.25 / 398.39 ±5.45 / 407.36 ms │  1.13x slower │
│ QQuery 24 │     225.41 / 228.28 ±3.94 / 236.09 ms │    446.41 / 451.38 ±6.49 / 463.84 ms │  1.98x slower │
│ QQuery 25 │     110.73 / 111.16 ±0.30 / 111.63 ms │    119.93 / 121.72 ±2.99 / 127.66 ms │  1.09x slower │
│ QQuery 26 │        58.95 / 60.79 ±2.59 / 65.86 ms │       58.31 / 59.26 ±1.34 / 61.89 ms │     no change │
│ QQuery 27 │           6.03 / 6.24 ±0.20 / 6.62 ms │          6.17 / 6.26 ±0.16 / 6.57 ms │     no change │
│ QQuery 28 │        57.36 / 60.72 ±1.79 / 62.73 ms │       56.79 / 60.96 ±2.13 / 62.30 ms │     no change │
│ QQuery 29 │      96.60 / 100.17 ±5.14 / 110.30 ms │    152.27 / 155.51 ±3.72 / 162.01 ms │  1.55x slower │
│ QQuery 30 │        32.80 / 34.00 ±1.45 / 36.77 ms │       33.54 / 33.60 ±0.07 / 33.73 ms │     no change │
│ QQuery 31 │     112.12 / 112.98 ±0.78 / 114.13 ms │    130.19 / 130.76 ±0.41 / 131.32 ms │  1.16x slower │
│ QQuery 32 │        20.85 / 21.05 ±0.17 / 21.34 ms │       18.00 / 18.49 ±0.37 / 19.10 ms │ +1.14x faster │
│ QQuery 33 │        38.14 / 38.42 ±0.23 / 38.69 ms │       37.61 / 37.90 ±0.23 / 38.24 ms │     no change │
│ QQuery 34 │        10.16 / 10.99 ±1.13 / 13.13 ms │       10.01 / 10.37 ±0.30 / 10.89 ms │ +1.06x faster │
│ QQuery 35 │        73.69 / 74.12 ±0.52 / 75.09 ms │       83.33 / 85.34 ±1.99 / 87.86 ms │  1.15x slower │
│ QQuery 36 │           5.78 / 5.93 ±0.20 / 6.33 ms │          5.67 / 5.83 ±0.21 / 6.24 ms │     no change │
│ QQuery 37 │           6.91 / 6.98 ±0.04 / 7.02 ms │          6.40 / 7.13 ±1.26 / 9.64 ms │     no change │
│ QQuery 38 │        62.77 / 63.04 ±0.20 / 63.33 ms │       73.69 / 75.17 ±1.57 / 77.68 ms │  1.19x slower │
│ QQuery 39 │        90.96 / 92.85 ±2.63 / 98.05 ms │       89.54 / 90.92 ±1.50 / 93.77 ms │     no change │
│ QQuery 40 │        23.69 / 23.93 ±0.20 / 24.16 ms │       22.53 / 22.61 ±0.05 / 22.67 ms │ +1.06x faster │
│ QQuery 41 │        11.89 / 11.97 ±0.06 / 12.05 ms │       12.78 / 13.53 ±1.27 / 16.05 ms │  1.13x slower │
│ QQuery 42 │        24.03 / 24.30 ±0.37 / 25.01 ms │       23.21 / 23.63 ±0.41 / 24.38 ms │     no change │
│ QQuery 43 │           4.90 / 5.05 ±0.17 / 5.39 ms │          4.75 / 4.85 ±0.16 / 5.18 ms │     no change │
│ QQuery 44 │           9.24 / 9.36 ±0.08 / 9.49 ms │          9.09 / 9.38 ±0.22 / 9.65 ms │     no change │
│ QQuery 45 │        39.02 / 40.11 ±0.78 / 41.02 ms │       25.62 / 25.99 ±0.32 / 26.50 ms │ +1.54x faster │
│ QQuery 46 │        11.74 / 12.99 ±1.95 / 16.87 ms │       11.63 / 11.81 ±0.15 / 12.04 ms │ +1.10x faster │
│ QQuery 47 │     227.67 / 231.51 ±3.33 / 237.04 ms │    223.67 / 227.67 ±3.30 / 231.94 ms │     no change │
│ QQuery 48 │        96.23 / 96.79 ±0.67 / 98.05 ms │    119.83 / 121.58 ±1.31 / 123.07 ms │  1.26x slower │
│ QQuery 49 │        76.59 / 78.54 ±3.16 / 84.83 ms │    121.67 / 122.53 ±0.78 / 123.96 ms │  1.56x slower │
│ QQuery 50 │        59.63 / 60.71 ±1.13 / 62.75 ms │    135.38 / 139.74 ±5.77 / 150.92 ms │  2.30x slower │
│ QQuery 51 │        94.16 / 94.80 ±0.62 / 95.67 ms │     99.64 / 104.32 ±5.04 / 113.59 ms │  1.10x slower │
│ QQuery 52 │        24.78 / 24.91 ±0.14 / 25.18 ms │       23.58 / 26.41 ±2.97 / 32.00 ms │  1.06x slower │
│ QQuery 53 │        30.43 / 31.43 ±1.37 / 34.00 ms │       28.73 / 29.18 ±0.26 / 29.43 ms │ +1.08x faster │
│ QQuery 54 │        57.94 / 58.36 ±0.28 / 58.71 ms │       30.71 / 31.83 ±0.93 / 33.01 ms │ +1.83x faster │
│ QQuery 55 │        24.16 / 24.74 ±0.48 / 25.39 ms │       22.53 / 22.71 ±0.18 / 23.02 ms │ +1.09x faster │
│ QQuery 56 │        40.04 / 40.35 ±0.19 / 40.58 ms │       35.38 / 35.73 ±0.23 / 36.01 ms │ +1.13x faster │
│ QQuery 57 │     178.44 / 180.98 ±2.02 / 184.23 ms │    141.47 / 143.68 ±1.76 / 145.72 ms │ +1.26x faster │
│ QQuery 58 │     116.61 / 118.78 ±1.97 / 122.28 ms │       72.37 / 72.91 ±0.40 / 73.35 ms │ +1.63x faster │
│ QQuery 59 │     119.70 / 120.68 ±0.65 / 121.69 ms │       83.00 / 86.71 ±3.62 / 91.47 ms │ +1.39x faster │
│ QQuery 60 │        40.20 / 41.30 ±1.67 / 44.64 ms │       38.69 / 39.34 ±0.35 / 39.61 ms │     no change │
│ QQuery 61 │        12.05 / 12.23 ±0.15 / 12.50 ms │       11.97 / 12.13 ±0.12 / 12.33 ms │     no change │
│ QQuery 62 │        47.22 / 47.62 ±0.55 / 48.69 ms │       44.69 / 44.90 ±0.21 / 45.25 ms │ +1.06x faster │
│ QQuery 63 │        29.98 / 30.44 ±0.29 / 30.88 ms │       29.04 / 30.55 ±1.86 / 33.84 ms │     no change │
│ QQuery 64 │     415.70 / 419.69 ±2.64 / 422.38 ms │    739.47 / 743.96 ±3.17 / 749.09 ms │  1.77x slower │
│ QQuery 65 │     146.71 / 150.50 ±5.11 / 160.63 ms │    336.97 / 342.10 ±3.20 / 344.79 ms │  2.27x slower │
│ QQuery 66 │        80.63 / 81.44 ±0.44 / 81.97 ms │       65.15 / 66.23 ±0.72 / 67.21 ms │ +1.23x faster │
│ QQuery 67 │     253.64 / 256.19 ±2.41 / 260.26 ms │    255.60 / 261.68 ±3.25 / 264.14 ms │     no change │
│ QQuery 68 │        12.34 / 15.25 ±5.25 / 25.73 ms │       11.91 / 12.28 ±0.29 / 12.75 ms │ +1.24x faster │
│ QQuery 69 │        59.04 / 60.07 ±1.38 / 62.74 ms │       72.20 / 74.39 ±3.40 / 81.16 ms │  1.24x slower │
│ QQuery 70 │     107.33 / 109.87 ±2.78 / 115.22 ms │    122.61 / 127.49 ±4.14 / 133.57 ms │  1.16x slower │
│ QQuery 71 │        35.62 / 38.06 ±3.05 / 43.77 ms │       33.30 / 36.64 ±4.25 / 45.03 ms │     no change │
│ QQuery 72 │ 2098.20 / 2161.58 ±54.53 / 2258.26 ms │    223.56 / 230.37 ±9.24 / 248.65 ms │ +9.38x faster │
│ QQuery 73 │          9.78 / 9.92 ±0.14 / 10.11 ms │         9.76 / 9.96 ±0.16 / 10.17 ms │     no change │
│ QQuery 74 │     176.97 / 181.67 ±5.39 / 192.15 ms │    158.61 / 162.82 ±5.30 / 172.92 ms │ +1.12x faster │
│ QQuery 75 │     150.15 / 154.48 ±6.37 / 167.01 ms │    188.52 / 192.80 ±5.66 / 204.00 ms │  1.25x slower │
│ QQuery 76 │        35.37 / 35.73 ±0.29 / 36.18 ms │       42.23 / 43.91 ±1.29 / 46.22 ms │  1.23x slower │
│ QQuery 77 │        61.64 / 62.65 ±0.73 / 63.64 ms │       59.94 / 60.30 ±0.23 / 60.64 ms │     no change │
│ QQuery 78 │     199.47 / 205.33 ±6.53 / 215.02 ms │    149.38 / 152.12 ±3.84 / 159.66 ms │ +1.35x faster │
│ QQuery 79 │        67.47 / 68.03 ±0.53 / 69.02 ms │       66.24 / 66.77 ±0.33 / 67.25 ms │     no change │
│ QQuery 80 │       98.40 / 98.94 ±0.60 / 100.07 ms │       75.23 / 78.76 ±4.43 / 87.27 ms │ +1.26x faster │
│ QQuery 81 │        26.43 / 28.26 ±3.14 / 34.52 ms │       28.66 / 28.79 ±0.09 / 28.92 ms │     no change │
│ QQuery 82 │        17.16 / 17.93 ±0.44 / 18.47 ms │       36.70 / 37.08 ±0.48 / 37.99 ms │  2.07x slower │
│ QQuery 83 │        40.31 / 40.90 ±0.58 / 41.66 ms │       35.38 / 35.77 ±0.32 / 36.22 ms │ +1.14x faster │
│ QQuery 84 │        30.52 / 30.94 ±0.38 / 31.59 ms │       31.55 / 31.98 ±0.37 / 32.65 ms │     no change │
│ QQuery 85 │     107.78 / 110.91 ±5.48 / 121.86 ms │    154.25 / 159.53 ±4.93 / 167.79 ms │  1.44x slower │
│ QQuery 86 │        26.39 / 27.43 ±1.37 / 30.13 ms │       29.38 / 29.83 ±0.25 / 30.17 ms │  1.09x slower │
│ QQuery 87 │        64.71 / 65.46 ±0.89 / 67.18 ms │       76.85 / 78.16 ±1.12 / 79.51 ms │  1.19x slower │
│ QQuery 88 │        63.47 / 64.14 ±0.38 / 64.56 ms │       69.48 / 74.51 ±5.29 / 81.65 ms │  1.16x slower │
│ QQuery 89 │        36.34 / 36.76 ±0.47 / 37.63 ms │       41.47 / 42.02 ±0.40 / 42.51 ms │  1.14x slower │
│ QQuery 90 │        17.55 / 18.41 ±1.34 / 21.07 ms │       19.00 / 19.16 ±0.12 / 19.32 ms │     no change │
│ QQuery 91 │        46.64 / 47.63 ±0.63 / 48.64 ms │       52.49 / 55.64 ±2.79 / 59.74 ms │  1.17x slower │
│ QQuery 92 │        30.51 / 31.18 ±0.65 / 32.38 ms │       27.40 / 28.37 ±0.55 / 28.93 ms │ +1.10x faster │
│ QQuery 93 │        51.06 / 51.57 ±0.39 / 51.96 ms │       50.54 / 51.52 ±0.78 / 52.85 ms │     no change │
│ QQuery 94 │        38.76 / 39.28 ±0.43 / 39.94 ms │       36.44 / 37.25 ±1.03 / 39.02 ms │ +1.05x faster │
│ QQuery 95 │        82.85 / 85.01 ±2.25 / 88.70 ms │    125.77 / 130.26 ±3.79 / 135.04 ms │  1.53x slower │
│ QQuery 96 │        24.57 / 24.80 ±0.13 / 24.98 ms │       26.68 / 27.70 ±0.58 / 28.46 ms │  1.12x slower │
│ QQuery 97 │        47.00 / 47.42 ±0.25 / 47.78 ms │       49.90 / 50.55 ±0.58 / 51.43 ms │  1.07x slower │
│ QQuery 98 │        42.47 / 43.23 ±0.62 / 44.22 ms │       39.87 / 40.72 ±0.95 / 42.52 ms │ +1.06x faster │
│ QQuery 99 │        70.65 / 73.22 ±3.14 / 78.97 ms │       70.33 / 74.40 ±3.45 / 78.59 ms │     no change │
└───────────┴───────────────────────────────────────┴──────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 10076.51ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │  9116.99ms │
│ Average Time (HEAD)                                 │   101.78ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │    92.09ms │
│ Queries Faster                                      │         31 │
│ Queries Slower                                      │         35 │
│ Queries with No Change                              │         33 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 55.0s
Peak memory 2.1 GiB
Avg memory 1.4 GiB
CPU user 228.6s
CPU sys 5.9s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 50.0s
Peak memory 2.2 GiB
Avg memory 1.4 GiB
CPU user 128.8s
CPU sys 5.6s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃  qizhu_parquet-pushdown-adaptive-gate ┃         Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.25 / 4.12 ±5.60 / 15.32 ms │          1.21 / 3.94 ±5.33 / 14.61 ms │      no change │
│ QQuery 1  │        12.56 / 13.06 ±0.29 / 13.45 ms │        12.75 / 13.16 ±0.20 / 13.28 ms │      no change │
│ QQuery 2  │        36.66 / 36.97 ±0.31 / 37.48 ms │        36.14 / 36.64 ±0.27 / 36.94 ms │      no change │
│ QQuery 3  │        31.47 / 32.20 ±0.63 / 33.12 ms │        31.19 / 31.46 ±0.19 / 31.78 ms │      no change │
│ QQuery 4  │     225.12 / 229.39 ±3.57 / 234.65 ms │     220.94 / 227.05 ±3.22 / 229.82 ms │      no change │
│ QQuery 5  │     272.55 / 274.52 ±1.95 / 278.18 ms │     270.55 / 273.98 ±1.82 / 275.93 ms │      no change │
│ QQuery 6  │           1.31 / 1.55 ±0.37 / 2.29 ms │           1.26 / 1.41 ±0.23 / 1.86 ms │  +1.10x faster │
│ QQuery 7  │        14.18 / 14.24 ±0.07 / 14.36 ms │        14.26 / 14.46 ±0.14 / 14.68 ms │      no change │
│ QQuery 8  │     329.25 / 333.40 ±4.01 / 339.59 ms │     327.72 / 329.63 ±1.35 / 331.71 ms │      no change │
│ QQuery 9  │     464.98 / 475.21 ±8.58 / 487.92 ms │     452.78 / 461.78 ±5.93 / 471.03 ms │      no change │
│ QQuery 10 │        69.47 / 70.53 ±0.64 / 71.41 ms │        69.86 / 70.56 ±0.64 / 71.33 ms │      no change │
│ QQuery 11 │       82.04 / 86.82 ±6.89 / 100.51 ms │        82.56 / 83.32 ±0.80 / 84.83 ms │      no change │
│ QQuery 12 │     272.20 / 276.70 ±4.92 / 282.95 ms │     268.41 / 272.15 ±3.62 / 279.00 ms │      no change │
│ QQuery 13 │     366.89 / 377.36 ±9.49 / 394.64 ms │    368.68 / 384.08 ±14.02 / 405.94 ms │      no change │
│ QQuery 14 │     283.10 / 287.27 ±3.61 / 292.71 ms │     283.84 / 285.12 ±1.17 / 286.76 ms │      no change │
│ QQuery 15 │     269.24 / 280.95 ±9.69 / 296.59 ms │    270.61 / 280.94 ±10.96 / 301.13 ms │      no change │
│ QQuery 16 │    609.77 / 624.57 ±11.63 / 641.92 ms │     612.21 / 628.18 ±9.02 / 638.57 ms │      no change │
│ QQuery 17 │     617.21 / 628.60 ±8.85 / 643.66 ms │    614.09 / 630.16 ±12.32 / 648.23 ms │      no change │
│ QQuery 18 │ 1252.23 / 1274.12 ±18.02 / 1302.30 ms │ 1244.45 / 1281.71 ±23.58 / 1308.41 ms │      no change │
│ QQuery 19 │       28.49 / 39.23 ±20.83 / 80.88 ms │       28.57 / 35.37 ±13.27 / 61.91 ms │  +1.11x faster │
│ QQuery 20 │     517.66 / 526.03 ±8.79 / 542.81 ms │     521.93 / 526.40 ±3.49 / 530.33 ms │      no change │
│ QQuery 21 │     517.63 / 525.32 ±7.23 / 535.13 ms │     519.40 / 523.98 ±4.69 / 532.70 ms │      no change │
│ QQuery 22 │   993.22 / 1001.20 ±6.73 / 1009.77 ms │   992.23 / 1001.62 ±7.03 / 1013.27 ms │      no change │
│ QQuery 23 │ 3085.76 / 3110.13 ±19.96 / 3141.89 ms │     136.63 / 145.80 ±7.97 / 160.38 ms │ +21.33x faster │
│ QQuery 24 │        42.70 / 48.03 ±9.07 / 66.10 ms │        54.85 / 56.59 ±2.31 / 60.84 ms │   1.18x slower │
│ QQuery 25 │     111.94 / 112.93 ±1.18 / 115.25 ms │     147.86 / 153.10 ±4.05 / 159.74 ms │   1.36x slower │
│ QQuery 26 │        41.78 / 43.31 ±1.24 / 44.92 ms │        58.55 / 61.13 ±1.70 / 63.22 ms │   1.41x slower │
│ QQuery 27 │     665.45 / 673.89 ±5.22 / 678.88 ms │     673.30 / 681.02 ±6.81 / 691.87 ms │      no change │
│ QQuery 28 │ 3049.13 / 3066.10 ±14.22 / 3088.24 ms │ 3035.62 / 3081.11 ±31.83 / 3115.26 ms │      no change │
│ QQuery 29 │        41.40 / 46.10 ±5.23 / 52.82 ms │        41.13 / 44.74 ±6.83 / 58.38 ms │      no change │
│ QQuery 30 │     303.92 / 308.59 ±5.17 / 315.83 ms │     310.11 / 313.65 ±2.44 / 316.84 ms │      no change │
│ QQuery 31 │     282.39 / 291.14 ±9.18 / 308.24 ms │     289.97 / 304.51 ±9.91 / 315.98 ms │      no change │
│ QQuery 32 │   943.15 / 992.63 ±33.93 / 1047.03 ms │    923.98 / 945.12 ±23.56 / 990.23 ms │      no change │
│ QQuery 33 │ 1439.31 / 1482.83 ±32.82 / 1528.09 ms │ 1487.44 / 1501.52 ±11.89 / 1514.61 ms │      no change │
│ QQuery 34 │ 1457.89 / 1512.08 ±38.95 / 1570.44 ms │ 1506.93 / 1538.48 ±29.83 / 1593.73 ms │      no change │
│ QQuery 35 │    288.76 / 315.71 ±39.87 / 395.07 ms │    288.44 / 308.69 ±31.02 / 369.19 ms │      no change │
│ QQuery 36 │        66.55 / 69.05 ±2.55 / 73.75 ms │        68.48 / 77.91 ±5.46 / 84.75 ms │   1.13x slower │
│ QQuery 37 │        36.06 / 37.58 ±1.63 / 40.71 ms │        35.53 / 38.43 ±3.73 / 45.73 ms │      no change │
│ QQuery 38 │        42.29 / 45.15 ±1.88 / 47.38 ms │        43.54 / 46.37 ±4.39 / 55.00 ms │      no change │
│ QQuery 39 │    136.04 / 156.19 ±12.42 / 172.89 ms │     136.68 / 143.00 ±3.72 / 147.94 ms │  +1.09x faster │
│ QQuery 40 │        14.14 / 14.47 ±0.27 / 14.96 ms │        14.35 / 14.53 ±0.21 / 14.93 ms │      no change │
│ QQuery 41 │        14.08 / 16.04 ±2.02 / 18.96 ms │        14.12 / 14.22 ±0.09 / 14.38 ms │  +1.13x faster │
│ QQuery 42 │        13.53 / 13.62 ±0.08 / 13.71 ms │        13.47 / 13.61 ±0.23 / 14.07 ms │      no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴────────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 19768.97ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 16880.61ms │
│ Average Time (HEAD)                                 │   459.74ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │   392.57ms │
│ Queries Faster                                      │          5 │
│ Queries Slower                                      │          4 │
│ Queries with No Change                              │         34 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 100.0s
Peak memory 10.1 GiB
Avg memory 4.2 GiB
CPU user 1015.5s
CPU sys 70.8s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 85.0s
Peak memory 11.2 GiB
Avg memory 4.7 GiB
CPU user 861.5s
CPU sys 57.1s
Peak spill 0 B

File an issue against this benchmark runner

@zhuqi-lucas

zhuqi-lucas commented Jul 11, 2026

Copy link
Copy Markdown
Contributor Author

The has_dynamic_filter bypass may cause regressions (TopK dynamic filter re-enabling RowFilter for narrow-projection queries with low-selectivity static filters). Removing it — and after rethinking the #22450 dynamic RG pruning cascade activates purely from source.predicate, not the pushdown_filters flag, so removing the bypass is safe. Will rerun benchmarks.

@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

run benchmarks

@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

run benchmark clickbench_partitioned

env:
  SIMULATE_LATENCY: "true"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4946119422-987-xnzxr 6.12.85+ #1 SMP Mon May 11 08:17:35 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing qizhu/parquet-pushdown-adaptive-gate (cd95750) to 95398f0 (merge-base) diff using: clickbench_partitioned
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4946118229-984-vhs9h 6.12.85+ #1 SMP Mon May 11 08:17:35 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing qizhu/parquet-pushdown-adaptive-gate (cd95750) to 95398f0 (merge-base) diff using: clickbench_partitioned
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4946118229-986-wtb8f 6.12.85+ #1 SMP Mon May 11 08:17:35 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing qizhu/parquet-pushdown-adaptive-gate (cd95750) to 95398f0 (merge-base) diff using: tpch
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4946118229-985-qdbtm 6.12.85+ #1 SMP Mon May 11 08:17:35 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing qizhu/parquet-pushdown-adaptive-gate (cd95750) to 95398f0 (merge-base) diff using: tpcds
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ qizhu_parquet-pushdown-adaptive-gate ┃       Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 1  │ 38.23 / 40.01 ±1.31 / 41.64 ms │       39.00 / 40.22 ±2.22 / 44.64 ms │    no change │
│ QQuery 2  │ 19.05 / 19.28 ±0.24 / 19.74 ms │       19.29 / 20.02 ±0.79 / 21.40 ms │    no change │
│ QQuery 3  │ 30.70 / 33.80 ±2.31 / 36.44 ms │       39.31 / 40.53 ±1.04 / 42.11 ms │ 1.20x slower │
│ QQuery 4  │ 17.66 / 18.33 ±0.70 / 19.31 ms │       17.65 / 18.12 ±0.68 / 19.46 ms │    no change │
│ QQuery 5  │ 38.14 / 40.99 ±1.77 / 43.70 ms │       56.83 / 57.81 ±0.69 / 58.87 ms │ 1.41x slower │
│ QQuery 6  │ 16.10 / 16.33 ±0.13 / 16.48 ms │       16.11 / 16.72 ±0.73 / 17.93 ms │    no change │
│ QQuery 7  │ 44.39 / 45.54 ±1.12 / 47.65 ms │       66.99 / 68.42 ±0.86 / 69.44 ms │ 1.50x slower │
│ QQuery 8  │ 43.34 / 43.70 ±0.35 / 44.33 ms │       43.17 / 44.18 ±0.93 / 45.53 ms │    no change │
│ QQuery 9  │ 50.36 / 51.08 ±0.54 / 51.96 ms │       65.84 / 66.85 ±0.62 / 67.67 ms │ 1.31x slower │
│ QQuery 10 │ 42.60 / 42.78 ±0.18 / 43.12 ms │       44.76 / 45.71 ±0.70 / 46.78 ms │ 1.07x slower │
│ QQuery 11 │ 13.35 / 13.71 ±0.20 / 13.94 ms │       13.83 / 14.03 ±0.16 / 14.32 ms │    no change │
│ QQuery 12 │ 23.91 / 24.29 ±0.37 / 24.80 ms │       23.94 / 24.67 ±0.93 / 26.50 ms │    no change │
│ QQuery 13 │ 32.34 / 33.82 ±1.02 / 35.42 ms │       32.61 / 33.11 ±0.46 / 33.73 ms │    no change │
│ QQuery 14 │ 23.87 / 23.98 ±0.08 / 24.09 ms │       24.99 / 25.26 ±0.34 / 25.90 ms │ 1.05x slower │
│ QQuery 15 │ 31.41 / 31.56 ±0.16 / 31.87 ms │       40.68 / 41.50 ±0.85 / 42.70 ms │ 1.31x slower │
│ QQuery 16 │ 14.01 / 14.29 ±0.29 / 14.83 ms │       14.18 / 14.43 ±0.18 / 14.69 ms │    no change │
│ QQuery 17 │ 74.70 / 75.86 ±1.47 / 78.68 ms │       74.69 / 76.04 ±1.24 / 78.35 ms │    no change │
│ QQuery 18 │ 59.43 / 60.17 ±0.66 / 61.13 ms │       59.08 / 60.15 ±1.31 / 62.73 ms │    no change │
│ QQuery 19 │ 33.04 / 33.33 ±0.20 / 33.65 ms │       34.62 / 35.76 ±1.55 / 38.82 ms │ 1.07x slower │
│ QQuery 20 │ 32.24 / 32.46 ±0.21 / 32.84 ms │       52.44 / 53.29 ±0.62 / 54.07 ms │ 1.64x slower │
│ QQuery 21 │ 55.40 / 56.72 ±1.23 / 59.01 ms │       64.67 / 67.55 ±2.96 / 72.45 ms │ 1.19x slower │
│ QQuery 22 │ 14.00 / 14.17 ±0.12 / 14.30 ms │       14.11 / 14.23 ±0.11 / 14.38 ms │    no change │
└───────────┴────────────────────────────────┴──────────────────────────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 766.20ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 878.58ms │
│ Average Time (HEAD)                                 │  34.83ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │  39.94ms │
│ Queries Faster                                      │        0 │
│ Queries Slower                                      │       10 │
│ Queries with No Change                              │       12 │
│ Queries with Failure                                │        0 │
└─────────────────────────────────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 535.4 MiB
CPU user 22.3s
CPU sys 1.7s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.3 GiB
Avg memory 761.4 MiB
CPU user 24.7s
CPU sys 1.6s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ qizhu_parquet-pushdown-adaptive-gate ┃         Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.73 / 6.30 ±0.94 / 8.17 ms │          5.71 / 6.23 ±0.90 / 8.03 ms │      no change │
│ QQuery 2  │        80.97 / 81.91 ±0.67 / 82.59 ms │       80.99 / 81.73 ±0.58 / 82.56 ms │      no change │
│ QQuery 3  │        29.51 / 29.91 ±0.38 / 30.47 ms │       29.43 / 29.74 ±0.18 / 29.98 ms │      no change │
│ QQuery 4  │     489.98 / 498.52 ±5.42 / 506.16 ms │    390.34 / 395.95 ±4.39 / 401.59 ms │  +1.26x faster │
│ QQuery 5  │        52.13 / 52.79 ±0.51 / 53.59 ms │       51.76 / 52.31 ±0.44 / 52.96 ms │      no change │
│ QQuery 6  │        36.85 / 37.09 ±0.18 / 37.27 ms │       36.61 / 37.52 ±0.91 / 39.18 ms │      no change │
│ QQuery 7  │       95.78 / 97.65 ±2.25 / 102.01 ms │      98.81 / 99.72 ±0.90 / 101.13 ms │      no change │
│ QQuery 8  │        37.11 / 37.71 ±0.63 / 38.68 ms │       37.63 / 38.23 ±0.56 / 39.15 ms │      no change │
│ QQuery 9  │        52.97 / 55.15 ±1.64 / 57.08 ms │       54.43 / 56.94 ±1.46 / 58.24 ms │      no change │
│ QQuery 10 │        63.40 / 63.91 ±0.43 / 64.50 ms │       64.44 / 67.44 ±4.58 / 76.53 ms │   1.06x slower │
│ QQuery 11 │     306.36 / 313.08 ±4.12 / 318.96 ms │    311.14 / 313.99 ±4.22 / 322.28 ms │      no change │
│ QQuery 12 │        28.84 / 29.06 ±0.14 / 29.26 ms │       31.79 / 33.19 ±1.99 / 37.08 ms │   1.14x slower │
│ QQuery 13 │     119.02 / 120.74 ±2.07 / 124.79 ms │    108.53 / 110.55 ±2.25 / 114.94 ms │  +1.09x faster │
│ QQuery 14 │     413.88 / 420.58 ±4.15 / 425.89 ms │    413.64 / 420.83 ±3.87 / 424.62 ms │      no change │
│ QQuery 15 │        57.48 / 58.13 ±0.58 / 59.03 ms │       57.75 / 58.52 ±0.59 / 59.23 ms │      no change │
│ QQuery 16 │           6.73 / 6.94 ±0.24 / 7.40 ms │          6.59 / 6.77 ±0.20 / 7.15 ms │      no change │
│ QQuery 17 │        81.54 / 82.88 ±1.79 / 86.26 ms │       77.60 / 79.42 ±1.24 / 80.78 ms │      no change │
│ QQuery 18 │     124.89 / 128.28 ±3.13 / 132.60 ms │    132.88 / 134.40 ±2.12 / 138.43 ms │      no change │
│ QQuery 19 │        44.80 / 45.35 ±0.56 / 46.41 ms │       41.75 / 42.16 ±0.36 / 42.83 ms │  +1.08x faster │
│ QQuery 20 │        38.39 / 40.51 ±1.44 / 42.84 ms │       39.62 / 40.47 ±1.07 / 42.55 ms │      no change │
│ QQuery 21 │        19.03 / 19.62 ±0.43 / 20.33 ms │       17.89 / 18.75 ±1.25 / 21.22 ms │      no change │
│ QQuery 22 │        70.63 / 71.73 ±0.85 / 72.79 ms │       63.89 / 64.96 ±1.09 / 67.01 ms │  +1.10x faster │
│ QQuery 23 │     356.88 / 365.88 ±8.18 / 380.17 ms │    333.67 / 334.85 ±0.76 / 335.93 ms │  +1.09x faster │
│ QQuery 24 │     229.36 / 232.83 ±5.44 / 243.58 ms │    229.96 / 233.11 ±3.67 / 239.50 ms │      no change │
│ QQuery 25 │     111.10 / 113.66 ±1.71 / 115.96 ms │       91.82 / 92.87 ±0.70 / 94.01 ms │  +1.22x faster │
│ QQuery 26 │        58.10 / 58.69 ±0.45 / 59.27 ms │       57.84 / 59.40 ±1.95 / 63.23 ms │      no change │
│ QQuery 27 │           6.23 / 6.36 ±0.19 / 6.74 ms │          6.08 / 6.20 ±0.19 / 6.57 ms │      no change │
│ QQuery 28 │        61.34 / 62.33 ±0.55 / 63.03 ms │       58.77 / 60.86 ±1.25 / 62.71 ms │      no change │
│ QQuery 29 │      98.25 / 100.22 ±1.26 / 101.66 ms │       93.93 / 94.28 ±0.21 / 94.49 ms │  +1.06x faster │
│ QQuery 30 │        32.58 / 33.07 ±0.29 / 33.47 ms │       31.23 / 33.02 ±2.21 / 37.38 ms │      no change │
│ QQuery 31 │     112.48 / 113.98 ±1.95 / 117.80 ms │    119.11 / 120.13 ±1.18 / 121.76 ms │   1.05x slower │
│ QQuery 32 │        20.78 / 21.17 ±0.35 / 21.82 ms │       22.23 / 22.46 ±0.18 / 22.75 ms │   1.06x slower │
│ QQuery 33 │        37.95 / 38.46 ±0.34 / 38.86 ms │       39.85 / 41.28 ±2.27 / 45.79 ms │   1.07x slower │
│ QQuery 34 │         9.79 / 10.01 ±0.17 / 10.29 ms │       11.23 / 11.25 ±0.04 / 11.34 ms │   1.12x slower │
│ QQuery 35 │        72.71 / 73.44 ±0.50 / 73.96 ms │       77.82 / 79.97 ±3.27 / 86.47 ms │   1.09x slower │
│ QQuery 36 │           5.87 / 6.01 ±0.17 / 6.33 ms │          5.64 / 5.75 ±0.17 / 6.09 ms │      no change │
│ QQuery 37 │           6.86 / 6.95 ±0.05 / 7.01 ms │          6.44 / 6.48 ±0.05 / 6.57 ms │  +1.07x faster │
│ QQuery 38 │        63.07 / 63.70 ±0.42 / 64.37 ms │       61.99 / 62.93 ±1.14 / 65.15 ms │      no change │
│ QQuery 39 │        91.07 / 91.68 ±0.39 / 92.11 ms │      91.47 / 97.48 ±3.81 / 103.51 ms │   1.06x slower │
│ QQuery 40 │        23.51 / 23.72 ±0.14 / 23.88 ms │       24.68 / 25.15 ±0.34 / 25.62 ms │   1.06x slower │
│ QQuery 41 │        11.46 / 11.68 ±0.17 / 11.97 ms │       13.18 / 13.30 ±0.08 / 13.41 ms │   1.14x slower │
│ QQuery 42 │        24.32 / 24.64 ±0.24 / 25.07 ms │       24.32 / 25.29 ±0.96 / 26.96 ms │      no change │
│ QQuery 43 │           5.00 / 5.13 ±0.17 / 5.47 ms │          4.77 / 4.92 ±0.15 / 5.19 ms │      no change │
│ QQuery 44 │           9.28 / 9.49 ±0.14 / 9.66 ms │          9.32 / 9.41 ±0.10 / 9.58 ms │      no change │
│ QQuery 45 │        39.04 / 41.10 ±2.17 / 44.53 ms │       39.98 / 40.62 ±0.51 / 41.45 ms │      no change │
│ QQuery 46 │        12.09 / 12.60 ±0.46 / 13.29 ms │       12.05 / 12.82 ±0.98 / 14.71 ms │      no change │
│ QQuery 47 │     230.67 / 234.96 ±5.10 / 243.99 ms │    229.71 / 232.85 ±2.72 / 237.69 ms │      no change │
│ QQuery 48 │        97.19 / 98.09 ±1.01 / 99.42 ms │    118.52 / 119.50 ±1.08 / 121.25 ms │   1.22x slower │
│ QQuery 49 │        78.26 / 80.39 ±2.34 / 84.65 ms │                                 FAIL │   incomparable │
│ QQuery 50 │        60.08 / 60.52 ±0.44 / 61.33 ms │       55.67 / 56.17 ±0.40 / 56.61 ms │  +1.08x faster │
│ QQuery 51 │        91.57 / 94.01 ±2.11 / 97.57 ms │       92.38 / 94.54 ±1.57 / 96.52 ms │      no change │
│ QQuery 52 │        25.14 / 25.76 ±0.82 / 27.31 ms │       24.03 / 24.25 ±0.23 / 24.70 ms │  +1.06x faster │
│ QQuery 53 │        29.66 / 30.33 ±0.69 / 31.63 ms │       29.53 / 29.91 ±0.27 / 30.20 ms │      no change │
│ QQuery 54 │        55.68 / 56.04 ±0.30 / 56.40 ms │       55.85 / 57.24 ±1.98 / 61.12 ms │      no change │
│ QQuery 55 │        23.27 / 23.66 ±0.34 / 24.26 ms │       23.45 / 24.01 ±0.54 / 24.87 ms │      no change │
│ QQuery 56 │        39.04 / 39.76 ±0.41 / 40.16 ms │       39.50 / 40.24 ±0.70 / 41.54 ms │      no change │
│ QQuery 57 │     177.33 / 180.33 ±3.26 / 184.94 ms │    175.39 / 178.12 ±2.13 / 181.96 ms │      no change │
│ QQuery 58 │     116.49 / 118.02 ±0.91 / 119.18 ms │    115.25 / 117.81 ±1.65 / 119.86 ms │      no change │
│ QQuery 59 │     119.22 / 119.86 ±0.61 / 120.94 ms │    118.72 / 119.64 ±0.77 / 120.97 ms │      no change │
│ QQuery 60 │        42.19 / 43.41 ±1.21 / 45.33 ms │       40.31 / 40.76 ±0.81 / 42.38 ms │  +1.06x faster │
│ QQuery 61 │        13.46 / 13.65 ±0.17 / 13.88 ms │       11.88 / 12.04 ±0.20 / 12.44 ms │  +1.13x faster │
│ QQuery 62 │        49.07 / 49.28 ±0.18 / 49.53 ms │       46.78 / 48.25 ±2.28 / 52.80 ms │      no change │
│ QQuery 63 │        31.24 / 31.54 ±0.23 / 31.87 ms │       29.88 / 30.32 ±0.37 / 30.95 ms │      no change │
│ QQuery 64 │    411.84 / 427.96 ±11.20 / 445.70 ms │    489.82 / 494.39 ±2.97 / 498.20 ms │   1.16x slower │
│ QQuery 65 │     152.05 / 156.34 ±3.34 / 160.21 ms │    148.40 / 153.48 ±3.64 / 158.62 ms │      no change │
│ QQuery 66 │        80.47 / 81.17 ±0.52 / 82.05 ms │       64.61 / 64.95 ±0.24 / 65.22 ms │  +1.25x faster │
│ QQuery 67 │     244.46 / 246.41 ±1.53 / 248.24 ms │    241.64 / 247.98 ±5.85 / 258.01 ms │      no change │
│ QQuery 68 │        11.79 / 11.97 ±0.17 / 12.28 ms │       11.85 / 13.66 ±3.34 / 20.34 ms │   1.14x slower │
│ QQuery 69 │        57.59 / 57.81 ±0.29 / 58.37 ms │       58.64 / 60.24 ±1.74 / 63.56 ms │      no change │
│ QQuery 70 │     106.29 / 109.01 ±3.47 / 115.59 ms │    112.19 / 114.32 ±2.41 / 118.82 ms │      no change │
│ QQuery 71 │        35.57 / 36.73 ±1.22 / 38.99 ms │       36.63 / 37.36 ±0.47 / 37.98 ms │      no change │
│ QQuery 72 │ 2093.87 / 2175.80 ±67.80 / 2261.53 ms │    151.12 / 155.22 ±3.01 / 160.43 ms │ +14.02x faster │
│ QQuery 73 │          9.48 / 9.67 ±0.31 / 10.30 ms │         9.76 / 9.96 ±0.24 / 10.42 ms │      no change │
│ QQuery 74 │     172.50 / 177.56 ±4.32 / 183.65 ms │    172.04 / 173.97 ±1.14 / 175.38 ms │      no change │
│ QQuery 75 │     150.02 / 152.48 ±2.87 / 156.78 ms │    189.44 / 193.03 ±2.00 / 194.61 ms │   1.27x slower │
│ QQuery 76 │        36.06 / 36.70 ±0.57 / 37.44 ms │      92.93 / 95.05 ±3.19 / 101.27 ms │   2.59x slower │
│ QQuery 77 │        64.19 / 66.94 ±4.11 / 75.01 ms │       61.73 / 62.21 ±0.51 / 63.02 ms │  +1.08x faster │
│ QQuery 78 │     215.99 / 219.66 ±2.63 / 223.68 ms │    148.53 / 152.19 ±3.94 / 159.61 ms │  +1.44x faster │
│ QQuery 79 │        73.37 / 73.70 ±0.26 / 74.15 ms │       66.30 / 67.20 ±1.50 / 70.19 ms │  +1.10x faster │
│ QQuery 80 │     109.78 / 111.68 ±2.84 / 117.33 ms │       73.85 / 74.96 ±1.66 / 78.25 ms │  +1.49x faster │
│ QQuery 81 │        28.59 / 28.82 ±0.26 / 29.30 ms │       25.51 / 27.07 ±2.48 / 32.00 ms │  +1.06x faster │
│ QQuery 82 │        18.24 / 18.36 ±0.08 / 18.46 ms │       18.82 / 19.03 ±0.29 / 19.59 ms │      no change │
│ QQuery 83 │        43.04 / 43.30 ±0.32 / 43.93 ms │       40.09 / 40.69 ±0.35 / 41.02 ms │  +1.06x faster │
│ QQuery 84 │        32.16 / 33.89 ±2.51 / 38.83 ms │       30.35 / 31.12 ±0.83 / 32.65 ms │  +1.09x faster │
│ QQuery 85 │     113.08 / 114.88 ±1.59 / 117.88 ms │    111.64 / 116.32 ±3.69 / 122.29 ms │      no change │
│ QQuery 86 │        27.52 / 27.70 ±0.21 / 28.11 ms │       25.67 / 25.82 ±0.21 / 26.23 ms │  +1.07x faster │
│ QQuery 87 │        70.29 / 71.68 ±1.48 / 74.35 ms │       62.98 / 64.04 ±0.75 / 65.18 ms │  +1.12x faster │
│ QQuery 88 │        66.71 / 68.19 ±2.17 / 72.51 ms │       62.99 / 64.31 ±1.78 / 67.84 ms │  +1.06x faster │
│ QQuery 89 │        38.50 / 39.23 ±0.46 / 39.72 ms │       36.21 / 36.83 ±0.53 / 37.73 ms │  +1.07x faster │
│ QQuery 90 │        18.77 / 18.92 ±0.14 / 19.14 ms │       17.21 / 17.47 ±0.15 / 17.66 ms │  +1.08x faster │
│ QQuery 91 │        48.54 / 49.17 ±0.38 / 49.62 ms │       46.43 / 46.87 ±0.38 / 47.45 ms │      no change │
│ QQuery 92 │        32.87 / 34.65 ±2.99 / 40.58 ms │       29.93 / 30.35 ±0.40 / 31.06 ms │  +1.14x faster │
│ QQuery 93 │        53.47 / 55.00 ±0.96 / 56.36 ms │       49.72 / 50.74 ±0.67 / 51.59 ms │  +1.08x faster │
│ QQuery 94 │        41.43 / 41.93 ±0.31 / 42.31 ms │       35.35 / 35.59 ±0.30 / 36.16 ms │  +1.18x faster │
│ QQuery 95 │        86.08 / 87.08 ±0.83 / 88.54 ms │       79.44 / 82.39 ±2.20 / 85.93 ms │  +1.06x faster │
│ QQuery 96 │        25.88 / 26.50 ±1.00 / 28.48 ms │       24.12 / 24.49 ±0.31 / 25.03 ms │  +1.08x faster │
│ QQuery 97 │        50.29 / 51.54 ±1.95 / 55.43 ms │       46.83 / 47.12 ±0.34 / 47.75 ms │  +1.09x faster │
│ QQuery 98 │        47.03 / 48.00 ±0.81 / 49.18 ms │       46.15 / 46.90 ±0.49 / 47.58 ms │      no change │
│ QQuery 99 │        73.84 / 74.78 ±0.52 / 75.23 ms │       71.06 / 72.24 ±1.54 / 75.29 ms │      no change │
└───────────┴───────────────────────────────────────┴──────────────────────────────────────┴────────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 10129.06ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │  7958.83ms │
│ Average Time (HEAD)                                 │   103.36ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │    81.21ms │
│ Queries Faster                                      │         32 │
│ Queries Slower                                      │         15 │
│ Queries with No Change                              │         51 │
│ Queries with Failure                                │          1 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 55.0s
Peak memory 2.2 GiB
Avg memory 1.5 GiB
CPU user 229.6s
CPU sys 6.4s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 45.0s
Peak memory 2.1 GiB
Avg memory 1.3 GiB
CPU user 119.2s
CPU sys 5.4s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃  qizhu_parquet-pushdown-adaptive-gate ┃         Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.26 / 3.95 ±5.28 / 14.50 ms │          1.21 / 3.90 ±5.29 / 14.47 ms │      no change │
│ QQuery 1  │        12.54 / 12.88 ±0.21 / 13.13 ms │        12.58 / 12.85 ±0.17 / 13.09 ms │      no change │
│ QQuery 2  │        36.13 / 36.41 ±0.31 / 36.80 ms │        36.46 / 36.71 ±0.28 / 37.25 ms │      no change │
│ QQuery 3  │        30.77 / 31.72 ±0.76 / 32.92 ms │        30.87 / 31.39 ±0.42 / 32.15 ms │      no change │
│ QQuery 4  │     222.58 / 225.98 ±3.15 / 230.23 ms │     223.20 / 225.85 ±3.38 / 232.31 ms │      no change │
│ QQuery 5  │     270.50 / 273.86 ±1.93 / 275.65 ms │     269.59 / 272.46 ±2.35 / 276.60 ms │      no change │
│ QQuery 6  │           1.27 / 1.42 ±0.23 / 1.87 ms │           1.25 / 1.40 ±0.22 / 1.83 ms │      no change │
│ QQuery 7  │        14.16 / 14.51 ±0.30 / 14.96 ms │        13.79 / 13.90 ±0.09 / 14.04 ms │      no change │
│ QQuery 8  │     325.40 / 328.08 ±2.53 / 332.38 ms │     324.56 / 326.04 ±1.62 / 328.19 ms │      no change │
│ QQuery 9  │     455.60 / 460.29 ±4.99 / 469.48 ms │    448.05 / 466.04 ±12.76 / 484.75 ms │      no change │
│ QQuery 10 │        69.51 / 71.03 ±1.01 / 72.15 ms │        70.31 / 71.68 ±1.05 / 73.08 ms │      no change │
│ QQuery 11 │        81.80 / 83.05 ±0.81 / 84.22 ms │        82.62 / 83.58 ±0.99 / 85.41 ms │      no change │
│ QQuery 12 │     266.12 / 271.15 ±3.15 / 274.74 ms │     266.52 / 270.99 ±3.38 / 275.19 ms │      no change │
│ QQuery 13 │     367.72 / 383.87 ±8.60 / 390.25 ms │    369.92 / 381.60 ±10.07 / 397.96 ms │      no change │
│ QQuery 14 │    280.78 / 291.79 ±13.74 / 318.54 ms │     282.37 / 289.08 ±8.42 / 305.26 ms │      no change │
│ QQuery 15 │     269.34 / 275.84 ±7.18 / 289.82 ms │    275.09 / 285.76 ±10.06 / 303.65 ms │      no change │
│ QQuery 16 │     606.63 / 614.60 ±5.04 / 620.75 ms │     612.48 / 620.15 ±7.75 / 633.61 ms │      no change │
│ QQuery 17 │     617.31 / 628.95 ±9.56 / 640.92 ms │     610.49 / 620.23 ±6.61 / 629.06 ms │      no change │
│ QQuery 18 │ 1232.13 / 1261.13 ±21.56 / 1294.91 ms │ 1240.29 / 1272.60 ±19.64 / 1299.26 ms │      no change │
│ QQuery 19 │        27.79 / 32.27 ±8.62 / 49.51 ms │       28.00 / 37.76 ±13.72 / 63.46 ms │   1.17x slower │
│ QQuery 20 │     514.32 / 523.52 ±9.32 / 540.65 ms │     514.14 / 524.97 ±8.12 / 538.52 ms │      no change │
│ QQuery 21 │     510.94 / 520.99 ±6.07 / 528.49 ms │     515.96 / 523.30 ±4.36 / 527.99 ms │      no change │
│ QQuery 22 │     986.04 / 990.87 ±3.70 / 995.29 ms │  983.12 / 1003.38 ±11.25 / 1016.89 ms │      no change │
│ QQuery 23 │ 3048.04 / 3075.16 ±14.32 / 3090.31 ms │     137.09 / 141.95 ±5.35 / 152.02 ms │ +21.66x faster │
│ QQuery 24 │       41.33 / 50.23 ±10.18 / 65.41 ms │        40.83 / 41.09 ±0.20 / 41.43 ms │  +1.22x faster │
│ QQuery 25 │     112.38 / 114.05 ±1.66 / 116.86 ms │     112.31 / 114.23 ±1.65 / 117.21 ms │      no change │
│ QQuery 26 │        41.58 / 42.66 ±0.71 / 43.78 ms │        42.60 / 45.64 ±3.14 / 51.35 ms │   1.07x slower │
│ QQuery 27 │     665.89 / 673.02 ±6.07 / 682.41 ms │     668.96 / 675.85 ±4.95 / 683.39 ms │      no change │
│ QQuery 28 │ 3029.69 / 3058.34 ±17.73 / 3084.29 ms │ 3033.44 / 3068.80 ±25.88 / 3113.62 ms │      no change │
│ QQuery 29 │        41.29 / 41.59 ±0.27 / 42.01 ms │       41.22 / 60.10 ±22.65 / 94.30 ms │   1.45x slower │
│ QQuery 30 │     304.88 / 311.97 ±8.83 / 328.52 ms │    310.65 / 326.18 ±14.19 / 352.53 ms │      no change │
│ QQuery 31 │     285.61 / 291.93 ±4.29 / 297.65 ms │     291.49 / 299.92 ±5.29 / 305.74 ms │      no change │
│ QQuery 32 │    911.48 / 925.98 ±16.61 / 953.05 ms │   931.86 / 964.18 ±22.67 / 1001.52 ms │      no change │
│ QQuery 33 │ 1450.87 / 1471.09 ±17.51 / 1498.90 ms │ 1452.16 / 1479.11 ±17.93 / 1505.89 ms │      no change │
│ QQuery 34 │ 1469.54 / 1484.16 ±12.93 / 1507.16 ms │ 1460.30 / 1482.75 ±16.80 / 1501.74 ms │      no change │
│ QQuery 35 │    282.10 / 304.56 ±28.56 / 357.59 ms │    278.12 / 315.95 ±36.84 / 375.99 ms │      no change │
│ QQuery 36 │        66.05 / 68.97 ±3.51 / 75.77 ms │        64.76 / 72.94 ±5.10 / 79.24 ms │   1.06x slower │
│ QQuery 37 │        35.51 / 41.62 ±5.09 / 49.16 ms │        35.76 / 39.56 ±4.82 / 48.72 ms │      no change │
│ QQuery 38 │        40.42 / 44.82 ±2.84 / 48.60 ms │        42.01 / 45.20 ±3.93 / 52.71 ms │      no change │
│ QQuery 39 │    138.37 / 153.70 ±10.74 / 166.72 ms │     130.09 / 138.57 ±7.26 / 148.83 ms │  +1.11x faster │
│ QQuery 40 │        14.38 / 14.66 ±0.20 / 14.93 ms │        14.43 / 16.70 ±3.64 / 23.93 ms │   1.14x slower │
│ QQuery 41 │        13.93 / 14.40 ±0.48 / 15.24 ms │        13.65 / 13.91 ±0.31 / 14.43 ms │      no change │
│ QQuery 42 │        13.05 / 16.29 ±4.14 / 23.76 ms │        12.90 / 13.96 ±1.67 / 17.28 ms │  +1.17x faster │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴────────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 19537.36ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 16732.22ms │
│ Average Time (HEAD)                                 │   454.36ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │   389.12ms │
│ Queries Faster                                      │          4 │
│ Queries Slower                                      │          5 │
│ Queries with No Change                              │         34 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 100.0s
Peak memory 11.3 GiB
Avg memory 4.4 GiB
CPU user 1008.5s
CPU sys 66.3s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 85.0s
Peak memory 11.2 GiB
Avg memory 4.5 GiB
CPU user 854.9s
CPU sys 54.2s
Peak spill 0 B

File an issue against this benchmark runner

@zhuqi-lucas

zhuqi-lucas commented Jul 11, 2026

Copy link
Copy Markdown
Contributor Author

@alamb @adriangb
Updated, still regression for benchmark for several tries, especially for tpch, i will continue investigating, but it seems very hard to make it no regression, i am thinking we may need to continue adaptive filter solution.

Converted to a draft PR.

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                   HEAD ┃   qizhu_parquet-pushdown-adaptive-gate ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │           1.23 / 4.03 ±5.50 / 15.02 ms │           1.22 / 4.03 ±5.51 / 15.05 ms │     no change │
│ QQuery 1  │  1892.51 / 1944.03 ±32.98 / 1983.32 ms │  1875.33 / 1912.32 ±21.54 / 1939.98 ms │     no change │
│ QQuery 2  │  2186.61 / 2264.72 ±50.82 / 2333.74 ms │  2163.96 / 2221.02 ±55.44 / 2303.02 ms │     no change │
│ QQuery 3  │  2158.15 / 2228.22 ±67.49 / 2351.61 ms │  2146.76 / 2200.47 ±52.94 / 2298.70 ms │     no change │
│ QQuery 4  │  2289.80 / 2339.27 ±32.84 / 2369.41 ms │  2290.84 / 2337.51 ±27.26 / 2370.94 ms │     no change │
│ QQuery 5  │  2383.29 / 2451.22 ±54.36 / 2522.01 ms │  2382.28 / 2460.11 ±64.89 / 2548.73 ms │     no change │
│ QQuery 6  │            1.44 / 1.59 ±0.19 / 1.96 ms │            1.25 / 1.41 ±0.23 / 1.87 ms │ +1.13x faster │
│ QQuery 7  │  1882.31 / 1982.59 ±60.98 / 2050.66 ms │  1931.47 / 2002.70 ±50.23 / 2071.92 ms │     no change │
│ QQuery 8  │  2448.20 / 2472.49 ±20.61 / 2499.82 ms │  2401.96 / 2458.61 ±41.16 / 2524.07 ms │     no change │
│ QQuery 9  │  2675.92 / 2758.72 ±72.64 / 2879.91 ms │  2594.87 / 2696.40 ±64.38 / 2785.51 ms │     no change │
│ QQuery 10 │  2181.54 / 2250.89 ±52.07 / 2341.86 ms │  2204.10 / 2246.51 ±48.01 / 2332.05 ms │     no change │
│ QQuery 11 │  2211.77 / 2288.11 ±62.48 / 2381.90 ms │  2242.60 / 2271.34 ±30.92 / 2329.14 ms │     no change │
│ QQuery 12 │  2316.83 / 2428.26 ±83.99 / 2527.80 ms │  2407.78 / 2443.62 ±52.42 / 2547.36 ms │     no change │
│ QQuery 13 │  2433.39 / 2519.61 ±51.41 / 2573.80 ms │  2467.26 / 2527.93 ±39.74 / 2589.52 ms │     no change │
│ QQuery 14 │  2386.96 / 2431.05 ±30.03 / 2471.07 ms │  2383.80 / 2454.08 ±61.66 / 2559.53 ms │     no change │
│ QQuery 15 │  2342.66 / 2418.72 ±67.48 / 2533.43 ms │  2370.34 / 2446.14 ±54.63 / 2521.63 ms │     no change │
│ QQuery 16 │  2619.69 / 2675.44 ±31.38 / 2707.70 ms │  2694.09 / 2740.24 ±36.61 / 2804.86 ms │     no change │
│ QQuery 17 │  2674.82 / 2703.67 ±25.20 / 2748.99 ms │  2612.00 / 2702.54 ±52.35 / 2759.95 ms │     no change │
│ QQuery 18 │ 3126.21 / 3257.71 ±113.87 / 3402.63 ms │  3147.67 / 3173.35 ±14.96 / 3188.41 ms │     no change │
│ QQuery 19 │  1749.24 / 1817.67 ±37.82 / 1859.11 ms │  1773.10 / 1826.86 ±39.40 / 1881.97 ms │     no change │
│ QQuery 20 │  2585.15 / 2681.44 ±62.22 / 2772.61 ms │  2641.47 / 2700.27 ±57.10 / 2808.35 ms │     no change │
│ QQuery 21 │  2618.49 / 2695.38 ±68.74 / 2783.61 ms │  2659.10 / 2723.06 ±50.12 / 2810.64 ms │     no change │
│ QQuery 22 │  3044.81 / 3184.97 ±84.52 / 3261.45 ms │  3144.03 / 3207.94 ±47.14 / 3270.16 ms │     no change │
│ QQuery 23 │  5020.38 / 5097.89 ±54.46 / 5187.72 ms │ 1083.56 / 1233.50 ±104.72 / 1377.59 ms │ +4.13x faster │
│ QQuery 24 │      487.33 / 495.67 ±6.16 / 505.62 ms │     443.03 / 485.12 ±23.59 / 508.78 ms │     no change │
│ QQuery 25 │  2261.37 / 2363.61 ±68.53 / 2459.95 ms │  2251.08 / 2315.10 ±32.98 / 2346.10 ms │     no change │
│ QQuery 26 │     438.01 / 481.63 ±26.06 / 518.80 ms │     483.96 / 515.21 ±35.42 / 576.91 ms │  1.07x slower │
│ QQuery 27 │  2786.85 / 2847.09 ±36.27 / 2894.34 ms │  2900.03 / 2950.95 ±30.07 / 2988.48 ms │     no change │
│ QQuery 28 │ 5089.09 / 5242.65 ±132.91 / 5466.32 ms │  5208.10 / 5251.58 ±42.56 / 5325.23 ms │     no change │
│ QQuery 29 │  2203.72 / 2270.46 ±85.20 / 2436.52 ms │  2226.57 / 2260.68 ±29.27 / 2304.93 ms │     no change │
│ QQuery 30 │  2421.66 / 2541.14 ±84.82 / 2675.98 ms │  4612.19 / 4671.17 ±42.62 / 4733.00 ms │  1.84x slower │
│ QQuery 31 │  2422.94 / 2491.89 ±59.79 / 2597.22 ms │  4550.07 / 4618.78 ±41.50 / 4674.09 ms │  1.85x slower │
│ QQuery 32 │  2513.91 / 2585.40 ±37.69 / 2626.31 ms │  2598.65 / 2649.96 ±30.87 / 2689.79 ms │     no change │
│ QQuery 33 │  3462.98 / 3511.71 ±36.73 / 3569.42 ms │  3416.09 / 3561.14 ±93.79 / 3695.97 ms │     no change │
│ QQuery 34 │  3521.01 / 3568.27 ±47.57 / 3645.78 ms │  3456.77 / 3538.02 ±66.18 / 3641.39 ms │     no change │
│ QQuery 35 │  2420.08 / 2472.81 ±35.46 / 2511.07 ms │  2434.85 / 2514.56 ±66.24 / 2590.80 ms │     no change │
│ QQuery 36 │     233.06 / 298.15 ±43.77 / 359.63 ms │     180.09 / 294.12 ±77.47 / 402.01 ms │     no change │
│ QQuery 37 │     150.19 / 240.11 ±57.63 / 315.87 ms │     137.27 / 248.16 ±75.19 / 349.51 ms │     no change │
│ QQuery 38 │     177.59 / 267.47 ±57.40 / 344.55 ms │     131.96 / 270.91 ±87.19 / 380.81 ms │     no change │
│ QQuery 39 │     272.49 / 340.09 ±52.94 / 409.04 ms │     619.47 / 700.71 ±48.85 / 739.95 ms │  2.06x slower │
│ QQuery 40 │     146.52 / 241.56 ±60.09 / 311.19 ms │     113.77 / 168.02 ±35.91 / 215.65 ms │ +1.44x faster │
│ QQuery 41 │     144.04 / 233.26 ±55.07 / 301.13 ms │     116.51 / 173.44 ±33.44 / 214.66 ms │ +1.34x faster │
│ QQuery 42 │     143.74 / 232.34 ±54.35 / 300.53 ms │     116.74 / 170.24 ±34.98 / 215.35 ms │ +1.36x faster │
└───────────┴────────────────────────────────────────┴────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 89622.98ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 90349.84ms │
│ Average Time (HEAD)                                 │  2084.26ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │  2101.16ms │
│ Queries Faster                                      │          5 │
│ Queries Slower                                      │          4 │
│ Queries with No Change                              │         34 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 450.1s
Peak memory 9.1 GiB
Avg memory 1.8 GiB
CPU user 1027.3s
CPU sys 116.6s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 455.1s
Peak memory 8.8 GiB
Avg memory 1.8 GiB
CPU user 869.2s
CPU sys 102.6s
Peak spill 0 B

File an issue against this benchmark runner

@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

run benchmarks

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4949974055-991-296jd 6.12.85+ #1 SMP Mon May 11 08:17:35 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing qizhu/parquet-pushdown-adaptive-gate (a318fb3) to 761f7f6 (merge-base) diff using: tpch
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4949974055-990-dkfh4 6.12.85+ #1 SMP Mon May 11 08:17:35 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing qizhu/parquet-pushdown-adaptive-gate (a318fb3) to 761f7f6 (merge-base) diff using: tpcds
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4949974055-989-7f9dn 6.12.85+ #1 SMP Mon May 11 08:17:35 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing qizhu/parquet-pushdown-adaptive-gate (a318fb3) to 761f7f6 (merge-base) diff using: clickbench_partitioned
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ qizhu_parquet-pushdown-adaptive-gate ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 39.04 / 39.99 ±1.01 / 41.40 ms │       39.12 / 40.74 ±1.37 / 42.61 ms │     no change │
│ QQuery 2  │ 19.25 / 19.45 ±0.28 / 19.99 ms │       18.50 / 18.89 ±0.33 / 19.49 ms │     no change │
│ QQuery 3  │ 31.42 / 34.02 ±1.74 / 36.81 ms │       36.70 / 37.05 ±0.31 / 37.47 ms │  1.09x slower │
│ QQuery 4  │ 17.59 / 17.74 ±0.14 / 17.93 ms │       17.03 / 17.76 ±0.63 / 18.55 ms │     no change │
│ QQuery 5  │ 41.23 / 42.54 ±1.19 / 43.97 ms │       56.50 / 57.46 ±1.31 / 60.03 ms │  1.35x slower │
│ QQuery 6  │ 16.44 / 17.26 ±0.92 / 18.44 ms │       16.03 / 16.14 ±0.07 / 16.25 ms │ +1.07x faster │
│ QQuery 7  │ 44.72 / 46.46 ±1.89 / 49.78 ms │       67.95 / 69.70 ±2.30 / 74.24 ms │  1.50x slower │
│ QQuery 8  │ 43.77 / 44.65 ±0.86 / 46.17 ms │       40.39 / 40.62 ±0.18 / 40.87 ms │ +1.10x faster │
│ QQuery 9  │ 50.50 / 51.14 ±0.76 / 52.35 ms │       65.53 / 66.63 ±1.10 / 68.49 ms │  1.30x slower │
│ QQuery 10 │ 42.61 / 44.20 ±1.17 / 45.48 ms │       48.20 / 48.95 ±0.57 / 49.67 ms │  1.11x slower │
│ QQuery 11 │ 13.54 / 13.96 ±0.52 / 14.98 ms │       13.11 / 13.57 ±0.23 / 13.74 ms │     no change │
│ QQuery 12 │ 24.17 / 25.30 ±1.21 / 26.96 ms │       23.27 / 23.74 ±0.42 / 24.38 ms │ +1.07x faster │
│ QQuery 13 │ 32.22 / 33.31 ±0.71 / 34.10 ms │       31.88 / 33.32 ±1.16 / 35.37 ms │     no change │
│ QQuery 14 │ 23.78 / 24.10 ±0.24 / 24.49 ms │       24.80 / 25.54 ±0.71 / 26.59 ms │  1.06x slower │
│ QQuery 15 │ 31.34 / 32.59 ±0.77 / 33.76 ms │       39.31 / 40.88 ±0.79 / 41.34 ms │  1.25x slower │
│ QQuery 16 │ 14.10 / 14.29 ±0.17 / 14.56 ms │       13.63 / 13.71 ±0.08 / 13.86 ms │     no change │
│ QQuery 17 │ 73.90 / 75.40 ±0.85 / 76.52 ms │       65.92 / 66.65 ±0.93 / 68.49 ms │ +1.13x faster │
│ QQuery 18 │ 58.95 / 60.65 ±1.18 / 61.92 ms │       58.54 / 58.96 ±0.27 / 59.28 ms │     no change │
│ QQuery 19 │ 33.72 / 33.97 ±0.25 / 34.42 ms │       34.26 / 35.31 ±1.33 / 37.88 ms │     no change │
│ QQuery 20 │ 32.11 / 32.95 ±0.98 / 34.69 ms │       36.33 / 36.81 ±0.47 / 37.63 ms │  1.12x slower │
│ QQuery 21 │ 54.26 / 56.92 ±2.09 / 59.83 ms │       55.35 / 56.12 ±0.65 / 57.13 ms │     no change │
│ QQuery 22 │ 14.00 / 14.21 ±0.14 / 14.43 ms │       13.54 / 13.74 ±0.20 / 14.05 ms │     no change │
└───────────┴────────────────────────────────┴──────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 775.07ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 832.30ms │
│ Average Time (HEAD)                                 │  35.23ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │  37.83ms │
│ Queries Faster                                      │        4 │
│ Queries Slower                                      │        8 │
│ Queries with No Change                              │       10 │
│ Queries with Failure                                │        0 │
└─────────────────────────────────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 526.9 MiB
CPU user 22.6s
CPU sys 1.7s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.3 GiB
Avg memory 795.3 MiB
CPU user 24.3s
CPU sys 1.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ qizhu_parquet-pushdown-adaptive-gate ┃         Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.48 / 6.00 ±0.89 / 7.76 ms │          5.15 / 5.70 ±0.97 / 7.64 ms │  +1.05x faster │
│ QQuery 2  │        81.71 / 82.20 ±0.28 / 82.46 ms │       79.85 / 80.13 ±0.16 / 80.31 ms │      no change │
│ QQuery 3  │        30.33 / 30.70 ±0.28 / 31.15 ms │       28.92 / 29.24 ±0.22 / 29.61 ms │      no change │
│ QQuery 4  │     515.16 / 518.45 ±4.20 / 526.39 ms │    389.87 / 398.90 ±5.87 / 406.71 ms │  +1.30x faster │
│ QQuery 5  │        51.64 / 52.73 ±0.58 / 53.30 ms │       50.46 / 50.87 ±0.26 / 51.21 ms │      no change │
│ QQuery 6  │        36.76 / 37.28 ±0.33 / 37.63 ms │       36.31 / 38.60 ±3.91 / 46.40 ms │      no change │
│ QQuery 7  │        95.06 / 96.71 ±1.47 / 99.31 ms │      95.53 / 97.18 ±2.02 / 101.02 ms │      no change │
│ QQuery 8  │        37.85 / 38.14 ±0.34 / 38.78 ms │       35.96 / 36.43 ±0.47 / 37.34 ms │      no change │
│ QQuery 9  │        51.43 / 54.68 ±1.99 / 57.54 ms │       49.90 / 52.95 ±1.63 / 54.62 ms │      no change │
│ QQuery 10 │        64.30 / 64.77 ±0.41 / 65.48 ms │       66.63 / 68.19 ±1.86 / 71.82 ms │   1.05x slower │
│ QQuery 11 │     320.54 / 324.21 ±3.48 / 330.51 ms │    318.98 / 321.16 ±1.76 / 324.26 ms │      no change │
│ QQuery 12 │        29.19 / 29.76 ±0.45 / 30.53 ms │       32.18 / 34.32 ±3.02 / 40.28 ms │   1.15x slower │
│ QQuery 13 │     121.37 / 122.39 ±1.10 / 124.50 ms │    107.43 / 109.49 ±2.36 / 113.85 ms │  +1.12x faster │
│ QQuery 14 │     417.18 / 420.07 ±1.95 / 423.30 ms │    406.43 / 409.91 ±3.02 / 414.72 ms │      no change │
│ QQuery 15 │        58.48 / 59.58 ±0.75 / 60.43 ms │       66.85 / 68.78 ±1.19 / 70.02 ms │   1.15x slower │
│ QQuery 16 │           6.61 / 6.76 ±0.20 / 7.15 ms │         6.24 / 7.37 ±1.94 / 11.25 ms │   1.09x slower │
│ QQuery 17 │        81.72 / 84.52 ±4.99 / 94.48 ms │       75.01 / 76.93 ±1.56 / 79.64 ms │  +1.10x faster │
│ QQuery 18 │     125.75 / 127.42 ±0.85 / 128.00 ms │    121.36 / 122.92 ±1.28 / 124.96 ms │      no change │
│ QQuery 19 │        42.51 / 42.84 ±0.45 / 43.74 ms │       41.35 / 41.66 ±0.24 / 42.00 ms │      no change │
│ QQuery 20 │        37.15 / 39.09 ±1.71 / 41.21 ms │       41.51 / 42.90 ±1.58 / 45.90 ms │   1.10x slower │
│ QQuery 21 │        18.31 / 18.43 ±0.10 / 18.59 ms │       30.17 / 30.48 ±0.32 / 31.03 ms │   1.65x slower │
│ QQuery 22 │        63.75 / 65.54 ±2.56 / 70.62 ms │       63.86 / 66.41 ±2.60 / 71.06 ms │      no change │
│ QQuery 23 │     354.32 / 358.29 ±3.51 / 364.61 ms │    333.73 / 338.77 ±3.79 / 343.74 ms │  +1.06x faster │
│ QQuery 24 │     227.67 / 230.21 ±2.66 / 235.24 ms │    223.72 / 226.00 ±2.95 / 231.80 ms │      no change │
│ QQuery 25 │     111.56 / 114.39 ±3.22 / 120.68 ms │       89.19 / 89.76 ±0.33 / 90.06 ms │  +1.27x faster │
│ QQuery 26 │        59.14 / 59.48 ±0.34 / 60.05 ms │       57.49 / 59.23 ±1.77 / 62.64 ms │      no change │
│ QQuery 27 │           6.21 / 6.42 ±0.17 / 6.70 ms │          6.07 / 6.46 ±0.23 / 6.76 ms │      no change │
│ QQuery 28 │        61.11 / 61.77 ±0.69 / 62.95 ms │       59.95 / 60.58 ±0.46 / 61.28 ms │      no change │
│ QQuery 29 │      99.14 / 102.10 ±3.41 / 108.31 ms │       90.83 / 92.33 ±1.30 / 94.02 ms │  +1.11x faster │
│ QQuery 30 │        32.98 / 33.56 ±0.48 / 34.34 ms │       30.76 / 33.16 ±3.25 / 39.52 ms │      no change │
│ QQuery 31 │     113.95 / 114.68 ±0.73 / 115.96 ms │    109.83 / 110.75 ±1.13 / 112.95 ms │      no change │
│ QQuery 32 │        21.35 / 22.86 ±2.17 / 27.16 ms │       39.60 / 40.58 ±0.88 / 42.07 ms │   1.78x slower │
│ QQuery 33 │        39.48 / 40.22 ±0.78 / 41.56 ms │       37.17 / 37.98 ±0.72 / 39.15 ms │  +1.06x faster │
│ QQuery 34 │        10.42 / 10.68 ±0.34 / 11.33 ms │       10.06 / 10.27 ±0.24 / 10.70 ms │      no change │
│ QQuery 35 │        73.70 / 74.77 ±1.04 / 76.50 ms │       80.06 / 80.81 ±0.54 / 81.56 ms │   1.08x slower │
│ QQuery 36 │           5.65 / 5.90 ±0.31 / 6.50 ms │          5.50 / 5.75 ±0.23 / 6.04 ms │      no change │
│ QQuery 37 │           6.82 / 6.89 ±0.05 / 6.96 ms │          6.62 / 6.94 ±0.17 / 7.07 ms │      no change │
│ QQuery 38 │        63.21 / 65.66 ±1.78 / 68.55 ms │       62.18 / 63.22 ±0.82 / 64.38 ms │      no change │
│ QQuery 39 │        91.92 / 92.82 ±0.62 / 93.57 ms │    145.07 / 148.21 ±4.45 / 156.74 ms │   1.60x slower │
│ QQuery 40 │        24.02 / 24.39 ±0.51 / 25.38 ms │       49.37 / 50.26 ±0.63 / 51.07 ms │   2.06x slower │
│ QQuery 41 │        11.85 / 12.12 ±0.14 / 12.21 ms │       10.00 / 10.31 ±0.21 / 10.59 ms │  +1.18x faster │
│ QQuery 42 │        24.31 / 24.62 ±0.26 / 25.08 ms │       24.00 / 24.50 ±0.39 / 25.09 ms │      no change │
│ QQuery 43 │           4.86 / 4.97 ±0.18 / 5.32 ms │          4.80 / 4.96 ±0.14 / 5.16 ms │      no change │
│ QQuery 44 │           9.14 / 9.22 ±0.05 / 9.28 ms │       48.21 / 48.80 ±0.68 / 50.12 ms │   5.29x slower │
│ QQuery 45 │        40.02 / 41.65 ±1.91 / 45.30 ms │       38.30 / 38.91 ±0.71 / 40.29 ms │  +1.07x faster │
│ QQuery 46 │        11.99 / 12.46 ±0.42 / 12.99 ms │       12.23 / 12.53 ±0.31 / 13.13 ms │      no change │
│ QQuery 47 │     241.28 / 245.35 ±6.26 / 257.65 ms │    232.08 / 234.05 ±1.52 / 236.53 ms │      no change │
│ QQuery 48 │        97.35 / 98.22 ±0.63 / 99.20 ms │    117.91 / 120.49 ±3.27 / 126.81 ms │   1.23x slower │
│ QQuery 49 │        78.11 / 80.89 ±3.08 / 86.74 ms │    102.56 / 103.77 ±1.77 / 107.23 ms │   1.28x slower │
│ QQuery 50 │        60.41 / 60.80 ±0.28 / 61.19 ms │       54.64 / 55.15 ±0.34 / 55.58 ms │  +1.10x faster │
│ QQuery 51 │       94.89 / 97.45 ±3.97 / 105.35 ms │       91.35 / 93.44 ±2.17 / 97.18 ms │      no change │
│ QQuery 52 │        25.07 / 25.39 ±0.27 / 25.85 ms │       24.21 / 24.54 ±0.32 / 25.03 ms │      no change │
│ QQuery 53 │        30.55 / 30.81 ±0.30 / 31.33 ms │       29.13 / 29.45 ±0.22 / 29.75 ms │      no change │
│ QQuery 54 │        57.52 / 57.74 ±0.19 / 58.08 ms │       62.03 / 63.66 ±2.13 / 67.82 ms │   1.10x slower │
│ QQuery 55 │        24.34 / 24.51 ±0.11 / 24.64 ms │       23.79 / 24.26 ±0.62 / 25.47 ms │      no change │
│ QQuery 56 │        40.21 / 40.80 ±0.44 / 41.41 ms │       38.06 / 38.68 ±0.36 / 39.09 ms │  +1.05x faster │
│ QQuery 57 │     180.32 / 183.54 ±4.22 / 191.85 ms │    173.86 / 175.17 ±0.89 / 176.22 ms │      no change │
│ QQuery 58 │     120.28 / 121.46 ±1.12 / 123.06 ms │    114.59 / 115.68 ±0.84 / 116.68 ms │      no change │
│ QQuery 59 │     121.27 / 123.70 ±3.15 / 129.58 ms │    117.82 / 118.70 ±1.40 / 121.50 ms │      no change │
│ QQuery 60 │        40.34 / 41.26 ±0.56 / 41.94 ms │       38.77 / 39.29 ±0.41 / 39.87 ms │      no change │
│ QQuery 61 │        12.39 / 12.64 ±0.17 / 12.88 ms │       11.97 / 12.08 ±0.09 / 12.23 ms │      no change │
│ QQuery 62 │        48.34 / 48.56 ±0.21 / 48.88 ms │       45.83 / 47.25 ±2.37 / 51.97 ms │      no change │
│ QQuery 63 │        30.55 / 30.75 ±0.14 / 30.97 ms │       29.70 / 30.21 ±0.57 / 31.26 ms │      no change │
│ QQuery 64 │     418.94 / 422.63 ±2.94 / 427.64 ms │    487.24 / 493.23 ±3.59 / 498.03 ms │   1.17x slower │
│ QQuery 65 │     151.18 / 155.31 ±2.86 / 159.57 ms │       66.57 / 68.10 ±1.72 / 71.34 ms │  +2.28x faster │
│ QQuery 66 │        82.27 / 84.88 ±4.44 / 93.73 ms │       65.49 / 68.16 ±3.67 / 75.08 ms │  +1.25x faster │
│ QQuery 67 │     255.57 / 260.66 ±4.98 / 269.56 ms │    251.34 / 256.73 ±4.04 / 263.56 ms │      no change │
│ QQuery 68 │        12.22 / 12.36 ±0.10 / 12.51 ms │       12.08 / 12.26 ±0.18 / 12.60 ms │      no change │
│ QQuery 69 │        60.06 / 60.36 ±0.26 / 60.72 ms │       60.91 / 61.31 ±0.33 / 61.81 ms │      no change │
│ QQuery 70 │     108.98 / 115.28 ±9.10 / 132.87 ms │    106.78 / 111.12 ±8.20 / 127.52 ms │      no change │
│ QQuery 71 │        35.42 / 36.37 ±0.77 / 37.66 ms │       35.07 / 35.70 ±0.70 / 37.02 ms │      no change │
│ QQuery 72 │ 2236.01 / 2310.77 ±69.13 / 2420.43 ms │    142.88 / 145.05 ±1.89 / 147.48 ms │ +15.93x faster │
│ QQuery 73 │        10.93 / 15.23 ±7.73 / 30.67 ms │        9.94 / 10.30 ±0.29 / 10.75 ms │  +1.48x faster │
│ QQuery 74 │     178.76 / 183.98 ±3.28 / 188.56 ms │    177.82 / 179.96 ±1.50 / 182.31 ms │      no change │
│ QQuery 75 │     151.55 / 152.65 ±1.19 / 154.11 ms │    162.21 / 165.46 ±4.31 / 173.56 ms │   1.08x slower │
│ QQuery 76 │        35.64 / 36.08 ±0.36 / 36.57 ms │       37.16 / 38.28 ±1.66 / 41.56 ms │   1.06x slower │
│ QQuery 77 │        62.40 / 63.59 ±0.94 / 65.09 ms │       60.23 / 60.31 ±0.10 / 60.52 ms │  +1.05x faster │
│ QQuery 78 │     200.39 / 204.84 ±3.25 / 207.86 ms │    149.90 / 153.43 ±3.48 / 159.59 ms │  +1.34x faster │
│ QQuery 79 │        68.32 / 68.69 ±0.34 / 69.22 ms │       66.87 / 68.35 ±1.30 / 70.80 ms │      no change │
│ QQuery 80 │     100.08 / 105.87 ±5.87 / 115.82 ms │       74.52 / 76.14 ±1.44 / 78.84 ms │  +1.39x faster │
│ QQuery 81 │        26.32 / 26.88 ±0.48 / 27.59 ms │       25.34 / 25.87 ±0.42 / 26.39 ms │      no change │
│ QQuery 82 │        16.80 / 17.18 ±0.34 / 17.78 ms │       23.81 / 24.06 ±0.14 / 24.20 ms │   1.40x slower │
│ QQuery 83 │        40.50 / 41.17 ±0.61 / 41.92 ms │       39.48 / 39.78 ±0.25 / 40.18 ms │      no change │
│ QQuery 84 │        30.93 / 31.28 ±0.27 / 31.72 ms │       30.29 / 31.30 ±1.71 / 34.70 ms │      no change │
│ QQuery 85 │     108.64 / 113.22 ±4.88 / 122.43 ms │    109.88 / 113.05 ±2.96 / 117.04 ms │      no change │
│ QQuery 86 │        25.78 / 26.35 ±0.43 / 26.77 ms │       25.54 / 26.28 ±1.05 / 28.33 ms │      no change │
│ QQuery 87 │        63.58 / 65.16 ±1.27 / 67.01 ms │       63.10 / 64.90 ±1.43 / 67.40 ms │      no change │
│ QQuery 88 │        64.26 / 64.95 ±1.20 / 67.34 ms │       59.90 / 61.60 ±2.36 / 66.23 ms │  +1.05x faster │
│ QQuery 89 │        37.40 / 37.93 ±0.43 / 38.60 ms │       36.01 / 36.63 ±0.54 / 37.37 ms │      no change │
│ QQuery 90 │        17.27 / 17.61 ±0.37 / 18.29 ms │       16.64 / 16.89 ±0.23 / 17.27 ms │      no change │
│ QQuery 91 │        46.96 / 47.51 ±0.39 / 48.04 ms │       43.87 / 44.23 ±0.26 / 44.63 ms │  +1.07x faster │
│ QQuery 92 │        30.28 / 30.76 ±0.41 / 31.26 ms │       29.79 / 30.70 ±1.12 / 32.87 ms │      no change │
│ QQuery 93 │        51.05 / 51.68 ±0.64 / 52.68 ms │       50.83 / 51.69 ±1.02 / 53.62 ms │      no change │
│ QQuery 94 │        39.59 / 41.37 ±2.22 / 45.65 ms │       35.42 / 36.96 ±1.35 / 39.01 ms │  +1.12x faster │
│ QQuery 95 │        83.45 / 84.03 ±0.62 / 84.81 ms │       77.36 / 78.06 ±0.48 / 78.65 ms │  +1.08x faster │
│ QQuery 96 │        24.65 / 24.96 ±0.21 / 25.30 ms │       24.45 / 25.23 ±1.28 / 27.78 ms │      no change │
│ QQuery 97 │        47.06 / 47.85 ±0.60 / 48.67 ms │       47.32 / 48.12 ±0.52 / 48.68 ms │      no change │
│ QQuery 98 │        44.46 / 48.13 ±5.22 / 58.41 ms │       46.43 / 47.73 ±0.94 / 49.32 ms │      no change │
│ QQuery 99 │        71.27 / 71.86 ±0.36 / 72.29 ms │       70.22 / 70.51 ±0.27 / 70.98 ms │      no change │
└───────────┴───────────────────────────────────────┴──────────────────────────────────────┴────────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 10355.65ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │  7994.95ms │
│ Average Time (HEAD)                                 │   104.60ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │    80.76ms │
│ Queries Faster                                      │         23 │
│ Queries Slower                                      │         18 │
│ Queries with No Change                              │         58 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 55.0s
Peak memory 2.1 GiB
Avg memory 1.4 GiB
CPU user 237.1s
CPU sys 6.2s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 45.0s
Peak memory 2.2 GiB
Avg memory 1.4 GiB
CPU user 116.9s
CPU sys 5.9s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and qizhu_parquet-pushdown-adaptive-gate
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃  qizhu_parquet-pushdown-adaptive-gate ┃         Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.21 / 4.08 ±5.59 / 15.26 ms │          1.23 / 4.12 ±5.64 / 15.40 ms │      no change │
│ QQuery 1  │        12.69 / 13.26 ±0.34 / 13.72 ms │        11.59 / 12.10 ±0.30 / 12.43 ms │  +1.10x faster │
│ QQuery 2  │        36.92 / 37.26 ±0.29 / 37.68 ms │        36.74 / 37.02 ±0.19 / 37.22 ms │      no change │
│ QQuery 3  │        31.22 / 32.13 ±0.91 / 33.56 ms │        32.03 / 34.17 ±1.77 / 36.07 ms │   1.06x slower │
│ QQuery 4  │     227.01 / 231.28 ±4.34 / 238.70 ms │     228.56 / 236.46 ±4.07 / 239.91 ms │      no change │
│ QQuery 5  │     277.55 / 281.18 ±2.47 / 284.02 ms │     278.22 / 282.16 ±4.59 / 290.06 ms │      no change │
│ QQuery 6  │           1.27 / 1.42 ±0.25 / 1.92 ms │           1.29 / 1.43 ±0.22 / 1.87 ms │      no change │
│ QQuery 7  │        14.54 / 14.63 ±0.06 / 14.74 ms │        13.03 / 13.29 ±0.14 / 13.40 ms │  +1.10x faster │
│ QQuery 8  │     331.13 / 340.13 ±5.53 / 346.19 ms │     334.86 / 348.29 ±7.30 / 355.62 ms │      no change │
│ QQuery 9  │     471.76 / 484.48 ±7.84 / 493.13 ms │    468.90 / 488.79 ±12.25 / 504.03 ms │      no change │
│ QQuery 10 │        72.85 / 73.64 ±0.72 / 74.82 ms │       68.85 / 75.73 ±10.03 / 95.07 ms │      no change │
│ QQuery 11 │        84.36 / 84.77 ±0.29 / 85.16 ms │        80.04 / 81.66 ±0.94 / 82.54 ms │      no change │
│ QQuery 12 │     276.46 / 280.53 ±2.70 / 283.72 ms │     275.85 / 285.85 ±7.96 / 299.53 ms │      no change │
│ QQuery 13 │     370.21 / 383.78 ±9.67 / 398.49 ms │    383.63 / 403.31 ±27.91 / 456.31 ms │   1.05x slower │
│ QQuery 14 │     292.58 / 298.21 ±4.97 / 307.06 ms │     292.21 / 298.92 ±8.88 / 316.43 ms │      no change │
│ QQuery 15 │     282.69 / 291.19 ±7.72 / 305.67 ms │    290.87 / 302.44 ±14.64 / 330.49 ms │      no change │
│ QQuery 16 │     641.77 / 653.30 ±7.33 / 661.02 ms │     637.07 / 645.37 ±4.88 / 651.60 ms │      no change │
│ QQuery 17 │     642.64 / 649.27 ±8.31 / 664.48 ms │     646.90 / 654.37 ±8.07 / 668.71 ms │      no change │
│ QQuery 18 │ 1308.50 / 1324.02 ±14.35 / 1351.13 ms │ 1287.08 / 1317.25 ±16.20 / 1335.56 ms │      no change │
│ QQuery 19 │        28.46 / 28.71 ±0.22 / 29.10 ms │       31.18 / 38.59 ±13.58 / 65.73 ms │   1.34x slower │
│ QQuery 20 │    518.52 / 537.38 ±18.11 / 570.94 ms │     519.11 / 527.49 ±5.62 / 534.55 ms │      no change │
│ QQuery 21 │     518.24 / 526.83 ±6.58 / 535.33 ms │     519.76 / 523.72 ±4.33 / 532.06 ms │      no change │
│ QQuery 22 │  999.95 / 1021.09 ±11.06 / 1032.23 ms │  1002.89 / 1016.26 ±8.63 / 1025.95 ms │      no change │
│ QQuery 23 │ 3165.79 / 3185.41 ±15.60 / 3204.75 ms │     138.83 / 151.19 ±7.30 / 157.95 ms │ +21.07x faster │
│ QQuery 24 │        41.96 / 42.35 ±0.32 / 42.79 ms │     166.04 / 169.71 ±3.72 / 176.10 ms │   4.01x slower │
│ QQuery 25 │     113.50 / 117.05 ±3.33 / 122.01 ms │     108.31 / 109.94 ±0.95 / 111.29 ms │  +1.06x faster │
│ QQuery 26 │        42.05 / 43.27 ±1.64 / 46.50 ms │     166.16 / 167.65 ±1.20 / 169.63 ms │   3.87x slower │
│ QQuery 27 │     670.98 / 679.91 ±7.65 / 691.23 ms │     673.72 / 682.26 ±5.54 / 691.13 ms │      no change │
│ QQuery 28 │ 3065.69 / 3087.78 ±12.91 / 3105.05 ms │ 3070.69 / 3092.62 ±11.90 / 3106.62 ms │      no change │
│ QQuery 29 │        41.82 / 50.38 ±7.36 / 60.59 ms │       41.37 / 51.84 ±14.24 / 78.12 ms │      no change │
│ QQuery 30 │    311.58 / 325.00 ±12.16 / 344.30 ms │     326.54 / 332.69 ±5.41 / 341.88 ms │      no change │
│ QQuery 31 │     289.77 / 299.01 ±5.96 / 307.91 ms │     300.55 / 312.34 ±9.26 / 327.67 ms │      no change │
│ QQuery 32 │  976.31 / 1049.03 ±51.59 / 1114.02 ms │  982.59 / 1004.38 ±18.54 / 1030.41 ms │      no change │
│ QQuery 33 │ 1507.73 / 1546.49 ±31.79 / 1583.21 ms │ 1491.12 / 1526.16 ±20.48 / 1552.08 ms │      no change │
│ QQuery 34 │ 1511.91 / 1556.11 ±26.45 / 1585.42 ms │ 1519.12 / 1549.46 ±22.63 / 1587.19 ms │      no change │
│ QQuery 35 │    295.03 / 350.13 ±63.07 / 437.75 ms │    301.71 / 339.63 ±34.99 / 399.62 ms │      no change │
│ QQuery 36 │        72.08 / 77.71 ±3.93 / 81.97 ms │     438.91 / 447.71 ±5.81 / 455.63 ms │   5.76x slower │
│ QQuery 37 │        36.31 / 37.39 ±1.17 / 39.41 ms │     440.96 / 450.15 ±7.99 / 463.80 ms │  12.04x slower │
│ QQuery 38 │        41.28 / 47.51 ±4.89 / 52.99 ms │     439.88 / 450.46 ±9.99 / 469.13 ms │   9.48x slower │
│ QQuery 39 │    141.29 / 160.73 ±14.59 / 178.07 ms │    135.62 / 155.23 ±12.61 / 175.34 ms │      no change │
│ QQuery 40 │        15.01 / 16.66 ±2.16 / 20.82 ms │        90.27 / 92.24 ±1.32 / 93.97 ms │   5.54x slower │
│ QQuery 41 │        14.45 / 19.60 ±5.68 / 27.60 ms │        91.74 / 92.70 ±0.85 / 93.70 ms │   4.73x slower │
│ QQuery 42 │        13.97 / 16.20 ±4.12 / 24.44 ms │        80.14 / 81.59 ±0.75 / 82.17 ms │   5.04x slower │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴────────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 20300.28ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 18888.74ms │
│ Average Time (HEAD)                                 │   472.10ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │   439.27ms │
│ Queries Faster                                      │          4 │
│ Queries Slower                                      │         11 │
│ Queries with No Change                              │         28 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 105.0s
Peak memory 12.1 GiB
Avg memory 4.6 GiB
CPU user 1037.1s
CPU sys 73.3s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 95.0s
Peak memory 12.1 GiB
Avg memory 4.6 GiB
CPU user 964.2s
CPU sys 67.5s
Peak spill 0 B

File an issue against this benchmark runner

@zhuqi-lucas zhuqi-lucas marked this pull request as draft July 12, 2026 05:41
@zhuqi-lucas zhuqi-lucas force-pushed the qizhu/parquet-pushdown-adaptive-gate branch from a318fb3 to f4ec013 Compare July 12, 2026 05:49
@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

Reverted the PR to only included the flip default to true commit, so better for us to profile more details.

@zhuqi-lucas zhuqi-lucas force-pushed the qizhu/parquet-pushdown-adaptive-gate branch from f4ec013 to e6e0072 Compare July 12, 2026 05:56
@alamb

alamb commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

@zhuqi-lucas -- what is the status of this PR? I sort of lost track with all the changes. Is there anything I can do to help?

@zhuqi-lucas

zhuqi-lucas commented Jul 12, 2026

Copy link
Copy Markdown
Contributor Author

@zhuqi-lucas -- what is the status of this PR? I sort of lost track with all the changes. Is there anything I can do to help?

Thanks @alamb. Marked as draft — hit a few regressions I couldn't fully explain in this PR's scope:

  • TPCH SF1: ~32% total regression (0 faster / 19 slower / 3 no change) with pushdown_filters=true default.
  • ClickBench + SIMULATE_LATENCY=true: several queries 1.85-2.01x slower. Local disk ClickBench is +15% net (Q23 4.4x), so the tax is mostly latency-sensitive.
  • tpcds also has regression, but total time is reduced, need investigation also

Tried something to improve it, but i can't make it worked well, so i force-pushed back to the minimal "flip default + pushdown_filter_mode enum + gate" state which is based on your latest commit that only enables it by default. Investigating as follow-up.

@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

Update on the TPCH regression from my previous comment (@alamb):

Opened #23532 — caches the remapped expression inside DynamicFilterPhysicalExpr::current(). That method is called per batch on the RowFilter path and, for filters carrying a large InListExpr (HashJoin pushing down col IN build_keys), was dominated by InListExpr::with_new_children cloning the whole list on every call. samply on Q17 had that + its drop_glue at the top.

TPCH SF1 (10 iterations, pushdown_filters=true):

HEAD #23532 pushdown=false baseline
Q17 128 ms 53 ms (2.4×) 55 ms
Q18 69 ms 56 ms 49 ms
Total (22) 743 ms 644 ms (−13%) 531 ms

Q17 reaches parity with pushdown=false — DynamicFilter tax fully eliminated on that shape. Row counts identical pre/post across all 22 queries.

This doesn't resolve the whole TPCH regression from the earlier comment. Remaining gap between #23532 (644 ms) and pushdown=false baseline (531 ms) is the fundamental two-phase-read tax on queries where selectivity + narrow non-filter projection don't repay the coordination overhead (Q12 is the archetype). That looks like it needs the full adaptive-filter direction — @adriangb's stack (#22384#22237) is the right shape but is stalled; happy to help push #22384 forward first since it's the foundation.

ClickBench simulate-latency and tpcds numbers I'll re-run against #23532 as follow-up.

@adriangb

Copy link
Copy Markdown
Contributor

This doesn't resolve the whole TPCH regression from the earlier comment. Remaining gap between #23532 (644 ms) and pushdown=false baseline (531 ms) is the fundamental two-phase-read tax on queries where selectivity + narrow non-filter projection don't repay the coordination overhead (Q12 is the archetype). That looks like it needs the full adaptive-filter direction — @adriangb's stack (#22384#22237) is the right shape but is stalled; happy to help push #22384 forward first since it's the foundation.

The fundamental issue is that (1) evaluating partition routing hashes is expensive and (2) is sometimes a big win if the join is selective but is the join is a 90% match you end up just paying the hashing price twice for no benefit, especially if the late materialization benefit is small as well. We can't know this statically, so yes I think the only way to work around it is to dynamically drop dynamic filters that are not earning their keep.

happy to help push #22384 forward first since it's the foundation

I think that would be very nice. It is both a good chunk of the code but also resolves some theoretical issues that mean we could return wrong results in cases where ParquetSource accepts a filter for pushdown but then based on the physical schema cannot actually evaluate it (I haven't been able to find a concrete case where this happens, but it's a latent foot gun). I think the main blocker there is the benchmark numbers, in particular hitting the same issue as above: currently if filter pushdown is off the hash join dynamic filters bubble back up to the join in most cases and then don't get evaluated anywhere. If we keep them and evaluate them in parquet scan it means they will always get evaluated so any cases where they were not earning their keep will show up as performance regressions. I do wonder if one path forward isn't to attack that specific case by e.g. splitting out the min/max range dynamic filters that HashJoinExec pushes down from the hash table ones and then we could turn off the hash table ones by default (a minor breaking change but I think justifiable if benchmarks improve or it unblocks other work).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto detected api change Auto detected API change common Related to common crate core Core DataFusion crate datasource Changes to the datasource crate documentation Improvements or additions to documentation proto Related to proto crate sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable parquet filter pushdown (filter_pushdown) by default

5 participants