Skip to content

feat(parquet): decline pushdown when projection has few non-filter columns#23420

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

feat(parquet): decline pushdown when projection has few non-filter columns#23420
zhuqi-lucas wants to merge 2 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

…lumns

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), the overhead
dominates and pushdown regresses.

Add a plan-time heuristic in ParquetSource::try_pushdown_filters that
declines pushdown when the projection contains fewer than 3 columns
not referenced by the filter. When declined, 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 — a plan-time column-count check with no
tuning knob. Complexity budget is reserved for the runtime
adaptive-placement work tracked in apache#22883.

Part of apache#3463.
Copilot AI review requested due to automatic review settings July 9, 2026 13:10
@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

run benchmarks

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

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4925376572-950-9n645 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 (6584f59) to 215ebb8 (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-c4925376572-952-mw9s9 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 (6584f59) to 215ebb8 (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-c4925376572-951-gfkwp 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 (6584f59) to 215ebb8 (merge-base) diff using: tpcds
Results will be posted here when complete


File an issue against this benchmark runner

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 on lines +851 to +863
let filter_col_indices: std::collections::HashSet<usize> = filters
.iter()
.flat_map(|f| collect_columns(f).into_iter().map(|c| c.index()))
.collect();
let non_filter_projected = self
.projection
.as_ref()
.iter()
.flat_map(|pe| collect_columns(&pe.expr))
.map(|c| c.index())
.filter(|idx| !filter_col_indices.contains(idx))
.collect::<std::collections::HashSet<_>>()
.len();
@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

run benchmark clickbench_pushdown

@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.55 / 39.79 ±1.22 / 41.48 ms │       38.32 / 40.44 ±2.49 / 44.79 ms │ no change │
│ QQuery 2  │ 19.41 / 20.09 ±0.55 / 20.94 ms │       19.34 / 19.95 ±0.48 / 20.64 ms │ no change │
│ QQuery 3  │ 30.84 / 33.84 ±2.00 / 37.10 ms │       31.34 / 32.75 ±1.09 / 33.97 ms │ no change │
│ QQuery 4  │ 17.75 / 18.10 ±0.55 / 19.20 ms │       17.37 / 17.89 ±0.51 / 18.87 ms │ no change │
│ QQuery 5  │ 37.48 / 40.22 ±1.47 / 41.67 ms │       37.41 / 38.81 ±1.35 / 40.54 ms │ no change │
│ QQuery 6  │ 16.34 / 16.52 ±0.15 / 16.79 ms │       16.15 / 16.86 ±1.01 / 18.88 ms │ no change │
│ QQuery 7  │ 44.99 / 46.36 ±0.91 / 47.52 ms │       44.14 / 45.84 ±1.48 / 48.28 ms │ no change │
│ QQuery 8  │ 43.52 / 44.26 ±1.22 / 46.69 ms │       42.71 / 43.20 ±0.41 / 43.67 ms │ no change │
│ QQuery 9  │ 49.17 / 51.35 ±1.65 / 53.37 ms │       49.46 / 50.28 ±0.69 / 51.31 ms │ no change │
│ QQuery 10 │ 42.24 / 43.42 ±1.06 / 44.82 ms │       42.17 / 42.50 ±0.37 / 43.21 ms │ no change │
│ QQuery 11 │ 13.68 / 13.82 ±0.13 / 14.02 ms │       13.63 / 13.98 ±0.30 / 14.41 ms │ no change │
│ QQuery 12 │ 23.90 / 24.39 ±0.40 / 24.89 ms │       24.03 / 24.20 ±0.14 / 24.44 ms │ no change │
│ QQuery 13 │ 32.61 / 34.60 ±2.73 / 39.97 ms │       32.20 / 33.82 ±1.36 / 36.28 ms │ no change │
│ QQuery 14 │ 23.74 / 24.05 ±0.20 / 24.34 ms │       23.74 / 24.61 ±1.10 / 26.67 ms │ no change │
│ QQuery 15 │ 31.28 / 31.59 ±0.26 / 31.97 ms │       31.18 / 31.57 ±0.24 / 31.79 ms │ no change │
│ QQuery 16 │ 14.16 / 14.63 ±0.42 / 15.38 ms │       14.32 / 14.43 ±0.10 / 14.59 ms │ no change │
│ QQuery 17 │ 75.00 / 76.42 ±1.48 / 78.82 ms │       73.95 / 75.08 ±0.86 / 76.13 ms │ no change │
│ QQuery 18 │ 60.20 / 61.05 ±0.96 / 62.90 ms │       59.27 / 61.15 ±1.16 / 62.71 ms │ no change │
│ QQuery 19 │ 33.40 / 33.61 ±0.16 / 33.89 ms │       33.03 / 33.86 ±1.28 / 36.39 ms │ no change │
│ QQuery 20 │ 31.90 / 32.14 ±0.19 / 32.40 ms │       31.90 / 32.28 ±0.45 / 32.94 ms │ no change │
│ QQuery 21 │ 55.67 / 57.45 ±1.50 / 59.97 ms │       54.57 / 55.79 ±1.01 / 57.59 ms │ no change │
│ QQuery 22 │ 13.89 / 14.39 ±0.46 / 15.17 ms │       13.93 / 14.13 ±0.18 / 14.43 ms │ no change │
└───────────┴────────────────────────────────┴──────────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 772.08ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 763.43ms │
│ Average Time (HEAD)                                 │  35.09ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │  34.70ms │
│ Queries Faster                                      │        0 │
│ Queries Slower                                      │        0 │
│ Queries with No Change                              │       22 │
│ Queries with Failure                                │        0 │
└─────────────────────────────────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 531.2 MiB
CPU user 22.5s
CPU sys 1.5s
Peak spill 0 B

tpch — branch

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

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-c4925517860-953-sqjsw 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 (6584f59) to 215ebb8 (merge-base) diff using: clickbench_pushdown
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 tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃  qizhu_parquet-pushdown-adaptive-gate ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.31 / 5.80 ±0.83 / 7.44 ms │           5.39 / 5.91 ±0.92 / 7.75 ms │     no change │
│ QQuery 2  │        80.42 / 80.88 ±0.46 / 81.58 ms │        81.62 / 82.11 ±0.38 / 82.62 ms │     no change │
│ QQuery 3  │        29.67 / 30.01 ±0.21 / 30.23 ms │        29.91 / 30.14 ±0.13 / 30.27 ms │     no change │
│ QQuery 4  │     492.60 / 496.58 ±2.85 / 500.30 ms │     487.25 / 498.20 ±6.37 / 504.91 ms │     no change │
│ QQuery 5  │        51.87 / 52.77 ±0.53 / 53.29 ms │        52.33 / 53.74 ±1.31 / 55.54 ms │     no change │
│ QQuery 6  │        36.64 / 37.38 ±0.37 / 37.61 ms │        39.72 / 39.99 ±0.43 / 40.84 ms │  1.07x slower │
│ QQuery 7  │        95.53 / 95.87 ±0.28 / 96.18 ms │       98.24 / 99.98 ±2.35 / 104.59 ms │     no change │
│ QQuery 8  │        36.94 / 38.06 ±1.72 / 41.47 ms │        37.10 / 37.96 ±0.87 / 39.63 ms │     no change │
│ QQuery 9  │        52.06 / 54.54 ±2.00 / 57.49 ms │        53.58 / 56.23 ±2.93 / 61.09 ms │     no change │
│ QQuery 10 │        64.00 / 64.33 ±0.30 / 64.87 ms │        63.40 / 64.14 ±0.50 / 64.71 ms │     no change │
│ QQuery 11 │     301.19 / 307.76 ±5.42 / 316.90 ms │     304.32 / 311.09 ±4.26 / 315.23 ms │     no change │
│ QQuery 12 │        28.58 / 29.11 ±0.35 / 29.63 ms │        29.02 / 29.47 ±0.33 / 30.04 ms │     no change │
│ QQuery 13 │     119.67 / 120.16 ±0.81 / 121.78 ms │     119.23 / 121.51 ±2.80 / 126.82 ms │     no change │
│ QQuery 14 │     412.36 / 414.66 ±1.75 / 417.59 ms │     412.74 / 421.18 ±5.33 / 426.97 ms │     no change │
│ QQuery 15 │        58.07 / 59.33 ±0.92 / 60.27 ms │        58.07 / 58.81 ±0.50 / 59.44 ms │     no change │
│ QQuery 16 │           6.53 / 6.65 ±0.17 / 6.99 ms │           6.63 / 6.78 ±0.25 / 7.28 ms │     no change │
│ QQuery 17 │        80.65 / 83.18 ±4.34 / 91.84 ms │        80.80 / 81.89 ±1.41 / 84.67 ms │     no change │
│ QQuery 18 │     125.30 / 126.41 ±1.09 / 128.24 ms │     124.46 / 126.71 ±3.34 / 133.30 ms │     no change │
│ QQuery 19 │        42.13 / 42.49 ±0.25 / 42.74 ms │        42.24 / 42.66 ±0.26 / 42.99 ms │     no change │
│ QQuery 20 │        35.90 / 37.13 ±1.48 / 40.01 ms │        35.94 / 36.40 ±0.35 / 36.84 ms │     no change │
│ QQuery 21 │        17.69 / 18.01 ±0.17 / 18.22 ms │        17.65 / 18.42 ±1.19 / 20.80 ms │     no change │
│ QQuery 22 │        62.36 / 63.52 ±0.70 / 64.09 ms │        62.32 / 63.00 ±0.74 / 64.34 ms │     no change │
│ QQuery 23 │     345.32 / 350.70 ±4.03 / 357.11 ms │     345.06 / 348.48 ±2.30 / 350.97 ms │     no change │
│ QQuery 24 │     226.15 / 229.81 ±4.65 / 238.99 ms │     227.19 / 229.94 ±3.73 / 237.30 ms │     no change │
│ QQuery 25 │     110.90 / 112.06 ±1.16 / 114.18 ms │     110.74 / 111.86 ±0.70 / 112.92 ms │     no change │
│ QQuery 26 │        59.02 / 59.84 ±0.79 / 61.10 ms │        58.04 / 59.93 ±1.56 / 62.32 ms │     no change │
│ QQuery 27 │           6.32 / 6.45 ±0.16 / 6.76 ms │           6.25 / 6.47 ±0.33 / 7.12 ms │     no change │
│ QQuery 28 │        61.12 / 61.33 ±0.18 / 61.66 ms │        57.04 / 61.01 ±2.02 / 62.36 ms │     no change │
│ QQuery 29 │      97.74 / 101.44 ±6.60 / 114.63 ms │      97.87 / 100.01 ±2.66 / 105.01 ms │     no change │
│ QQuery 30 │        32.82 / 33.32 ±0.39 / 33.81 ms │        32.55 / 33.81 ±1.11 / 35.62 ms │     no change │
│ QQuery 31 │     112.55 / 113.51 ±0.80 / 114.92 ms │     112.77 / 113.64 ±1.14 / 115.88 ms │     no change │
│ QQuery 32 │        20.79 / 20.92 ±0.14 / 21.18 ms │        20.68 / 20.83 ±0.20 / 21.23 ms │     no change │
│ QQuery 33 │        38.33 / 38.61 ±0.29 / 39.06 ms │        37.75 / 38.93 ±1.30 / 41.38 ms │     no change │
│ QQuery 34 │         9.79 / 10.02 ±0.19 / 10.25 ms │        10.08 / 10.28 ±0.19 / 10.58 ms │     no change │
│ QQuery 35 │        73.37 / 74.05 ±0.40 / 74.49 ms │        72.69 / 73.88 ±0.95 / 75.32 ms │     no change │
│ QQuery 36 │           5.63 / 5.74 ±0.12 / 5.97 ms │           5.81 / 6.00 ±0.18 / 6.27 ms │     no change │
│ QQuery 37 │           6.73 / 6.90 ±0.11 / 7.07 ms │           6.94 / 7.02 ±0.07 / 7.16 ms │     no change │
│ QQuery 38 │        62.55 / 62.84 ±0.30 / 63.42 ms │        62.50 / 62.88 ±0.25 / 63.24 ms │     no change │
│ QQuery 39 │        90.57 / 92.46 ±2.77 / 97.87 ms │       91.04 / 93.59 ±4.23 / 102.01 ms │     no change │
│ QQuery 40 │        23.42 / 23.72 ±0.23 / 24.01 ms │        23.93 / 24.36 ±0.28 / 24.68 ms │     no change │
│ QQuery 41 │        11.46 / 11.60 ±0.11 / 11.79 ms │        11.66 / 11.93 ±0.27 / 12.43 ms │     no change │
│ QQuery 42 │        24.02 / 24.43 ±0.33 / 24.80 ms │        23.90 / 24.76 ±0.84 / 26.23 ms │     no change │
│ QQuery 43 │           4.85 / 4.95 ±0.12 / 5.17 ms │           5.04 / 5.14 ±0.14 / 5.41 ms │     no change │
│ QQuery 44 │           9.03 / 9.21 ±0.13 / 9.39 ms │           9.54 / 9.68 ±0.11 / 9.86 ms │  1.05x slower │
│ QQuery 45 │        37.73 / 38.09 ±0.40 / 38.83 ms │        38.07 / 39.27 ±0.74 / 40.31 ms │     no change │
│ QQuery 46 │        11.62 / 12.95 ±1.97 / 16.86 ms │        11.82 / 12.13 ±0.22 / 12.48 ms │ +1.07x faster │
│ QQuery 47 │     227.59 / 231.58 ±5.05 / 241.52 ms │     232.73 / 235.08 ±2.50 / 238.79 ms │     no change │
│ QQuery 48 │        97.25 / 97.95 ±0.93 / 99.76 ms │        96.81 / 97.13 ±0.24 / 97.51 ms │     no change │
│ QQuery 49 │        76.31 / 77.09 ±0.63 / 78.04 ms │        76.87 / 78.63 ±2.43 / 83.44 ms │     no change │
│ QQuery 50 │        59.56 / 60.23 ±0.51 / 60.85 ms │        59.47 / 60.29 ±0.52 / 60.98 ms │     no change │
│ QQuery 51 │        89.84 / 92.11 ±1.66 / 94.15 ms │        92.21 / 94.40 ±2.06 / 98.32 ms │     no change │
│ QQuery 52 │        24.37 / 24.55 ±0.22 / 24.98 ms │        24.13 / 24.64 ±0.41 / 25.31 ms │     no change │
│ QQuery 53 │        30.11 / 32.49 ±3.81 / 40.08 ms │        29.63 / 31.12 ±2.46 / 36.03 ms │     no change │
│ QQuery 54 │        56.38 / 57.08 ±0.41 / 57.45 ms │        56.32 / 56.81 ±0.36 / 57.33 ms │     no change │
│ QQuery 55 │        24.21 / 24.61 ±0.33 / 25.01 ms │        23.79 / 24.22 ±0.31 / 24.75 ms │     no change │
│ QQuery 56 │        39.17 / 39.67 ±0.35 / 40.26 ms │        39.44 / 39.88 ±0.24 / 40.15 ms │     no change │
│ QQuery 57 │     176.89 / 179.07 ±2.22 / 183.33 ms │     178.64 / 180.32 ±2.22 / 184.58 ms │     no change │
│ QQuery 58 │     115.46 / 118.41 ±3.55 / 125.38 ms │     117.01 / 119.58 ±3.08 / 125.47 ms │     no change │
│ QQuery 59 │     117.89 / 118.71 ±1.01 / 120.47 ms │     119.16 / 119.63 ±0.46 / 120.50 ms │     no change │
│ QQuery 60 │        39.63 / 40.16 ±0.58 / 41.27 ms │        40.47 / 40.97 ±0.32 / 41.40 ms │     no change │
│ QQuery 61 │        11.98 / 13.37 ±2.33 / 18.01 ms │        12.78 / 13.80 ±1.57 / 16.93 ms │     no change │
│ QQuery 62 │        46.47 / 47.03 ±0.45 / 47.52 ms │        47.46 / 48.26 ±0.97 / 50.14 ms │     no change │
│ QQuery 63 │        29.83 / 30.49 ±0.52 / 31.39 ms │        29.59 / 30.34 ±0.68 / 31.55 ms │     no change │
│ QQuery 64 │     411.74 / 414.95 ±2.88 / 418.49 ms │     410.79 / 415.31 ±2.29 / 417.04 ms │     no change │
│ QQuery 65 │     149.13 / 152.90 ±3.25 / 158.54 ms │     147.79 / 150.37 ±1.99 / 152.52 ms │     no change │
│ QQuery 66 │        80.58 / 80.88 ±0.24 / 81.18 ms │        81.20 / 81.66 ±0.38 / 82.19 ms │     no change │
│ QQuery 67 │     238.54 / 243.50 ±3.27 / 246.32 ms │     243.35 / 247.05 ±3.81 / 254.27 ms │     no change │
│ QQuery 68 │        11.73 / 12.01 ±0.20 / 12.31 ms │        11.87 / 12.01 ±0.20 / 12.40 ms │     no change │
│ QQuery 69 │        58.88 / 60.85 ±3.31 / 67.44 ms │        58.22 / 60.63 ±3.95 / 68.50 ms │     no change │
│ QQuery 70 │     106.03 / 108.82 ±1.88 / 111.55 ms │     106.27 / 109.20 ±3.99 / 116.97 ms │     no change │
│ QQuery 71 │        35.58 / 36.02 ±0.22 / 36.19 ms │        35.57 / 35.97 ±0.30 / 36.32 ms │     no change │
│ QQuery 72 │ 2037.44 / 2070.32 ±44.43 / 2152.19 ms │ 2224.19 / 2245.49 ±15.01 / 2264.72 ms │  1.08x slower │
│ QQuery 73 │         9.67 / 10.45 ±0.81 / 11.96 ms │          9.65 / 9.89 ±0.20 / 10.26 ms │ +1.06x faster │
│ QQuery 74 │     172.97 / 174.70 ±2.39 / 179.44 ms │     173.87 / 179.31 ±6.10 / 190.11 ms │     no change │
│ QQuery 75 │     149.26 / 150.30 ±1.04 / 152.22 ms │     150.33 / 151.87 ±1.68 / 155.13 ms │     no change │
│ QQuery 76 │        35.25 / 36.07 ±0.48 / 36.70 ms │        35.61 / 39.00 ±3.81 / 45.16 ms │  1.08x slower │
│ QQuery 77 │        61.10 / 61.88 ±0.75 / 63.13 ms │        62.40 / 63.19 ±0.77 / 64.58 ms │     no change │
│ QQuery 78 │     197.20 / 199.86 ±3.02 / 205.20 ms │     200.23 / 204.23 ±5.20 / 214.35 ms │     no change │
│ QQuery 79 │        67.47 / 68.00 ±0.39 / 68.48 ms │        67.82 / 68.21 ±0.21 / 68.40 ms │     no change │
│ QQuery 80 │      99.69 / 102.36 ±3.48 / 109.16 ms │     101.04 / 104.34 ±5.39 / 115.07 ms │     no change │
│ QQuery 81 │        26.28 / 27.07 ±0.79 / 28.58 ms │        26.01 / 26.32 ±0.17 / 26.46 ms │     no change │
│ QQuery 82 │        16.63 / 16.87 ±0.29 / 17.41 ms │        16.51 / 16.76 ±0.19 / 17.04 ms │     no change │
│ QQuery 83 │        40.10 / 41.13 ±1.96 / 45.05 ms │        40.02 / 40.42 ±0.22 / 40.63 ms │     no change │
│ QQuery 84 │        30.77 / 30.97 ±0.15 / 31.23 ms │        30.69 / 30.91 ±0.17 / 31.18 ms │     no change │
│ QQuery 85 │     107.93 / 111.98 ±4.55 / 120.88 ms │     107.65 / 112.98 ±5.80 / 123.92 ms │     no change │
│ QQuery 86 │        25.43 / 25.57 ±0.12 / 25.77 ms │        25.13 / 25.66 ±0.41 / 26.39 ms │     no change │
│ QQuery 87 │        63.11 / 63.33 ±0.17 / 63.58 ms │        63.26 / 63.39 ±0.11 / 63.52 ms │     no change │
│ QQuery 88 │        63.38 / 63.95 ±0.64 / 65.21 ms │        63.60 / 67.46 ±4.44 / 75.58 ms │  1.05x slower │
│ QQuery 89 │        36.22 / 37.70 ±0.79 / 38.53 ms │        37.14 / 37.57 ±0.55 / 38.59 ms │     no change │
│ QQuery 90 │        17.13 / 17.35 ±0.19 / 17.69 ms │        17.13 / 17.48 ±0.21 / 17.79 ms │     no change │
│ QQuery 91 │        46.21 / 46.82 ±0.48 / 47.64 ms │        46.17 / 46.38 ±0.13 / 46.53 ms │     no change │
│ QQuery 92 │        29.34 / 30.06 ±0.77 / 31.55 ms │        30.13 / 30.55 ±0.36 / 31.13 ms │     no change │
│ QQuery 93 │        50.15 / 51.65 ±1.94 / 55.47 ms │        50.70 / 51.78 ±0.65 / 52.52 ms │     no change │
│ QQuery 94 │        39.31 / 40.25 ±0.78 / 41.52 ms │        38.80 / 39.41 ±0.46 / 40.22 ms │     no change │
│ QQuery 95 │        80.42 / 82.24 ±1.97 / 86.08 ms │        80.78 / 81.54 ±0.59 / 82.43 ms │     no change │
│ QQuery 96 │        24.24 / 24.78 ±0.56 / 25.84 ms │        24.40 / 24.62 ±0.17 / 24.85 ms │     no change │
│ QQuery 97 │        46.93 / 47.33 ±0.62 / 48.55 ms │        46.98 / 48.60 ±1.73 / 51.43 ms │     no change │
│ QQuery 98 │        43.26 / 43.79 ±0.70 / 45.17 ms │        43.55 / 44.18 ±0.63 / 45.23 ms │     no change │
│ QQuery 99 │        70.75 / 71.39 ±0.49 / 72.00 ms │        71.07 / 71.63 ±0.58 / 72.57 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │  9912.30ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 10142.64ms │
│ Average Time (HEAD)                                 │   100.12ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │   102.45ms │
│ Queries Faster                                      │          2 │
│ Queries Slower                                      │          5 │
│ Queries with No Change                              │         92 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 50.0s
Peak memory 2.1 GiB
Avg memory 1.5 GiB
CPU user 221.7s
CPU sys 5.8s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 55.0s
Peak memory 2.1 GiB
Avg memory 1.3 GiB
CPU user 229.7s
CPU sys 6.1s
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.24 / 3.93 ±5.31 / 14.55 ms │          1.21 / 3.91 ±5.33 / 14.57 ms │     no change │
│ QQuery 1  │        12.43 / 12.70 ±0.15 / 12.90 ms │        12.85 / 12.90 ±0.05 / 13.00 ms │     no change │
│ QQuery 2  │        36.19 / 36.61 ±0.37 / 37.10 ms │        36.14 / 36.74 ±0.72 / 38.14 ms │     no change │
│ QQuery 3  │        30.53 / 31.26 ±0.77 / 32.61 ms │        30.51 / 30.88 ±0.27 / 31.27 ms │     no change │
│ QQuery 4  │     218.35 / 221.84 ±2.82 / 225.60 ms │     221.64 / 223.45 ±1.87 / 226.77 ms │     no change │
│ QQuery 5  │     269.28 / 270.42 ±0.74 / 271.59 ms │     266.88 / 270.90 ±2.71 / 273.92 ms │     no change │
│ QQuery 6  │           1.27 / 1.44 ±0.25 / 1.92 ms │           1.25 / 1.39 ±0.23 / 1.84 ms │     no change │
│ QQuery 7  │        13.74 / 13.90 ±0.12 / 14.02 ms │        13.64 / 13.76 ±0.07 / 13.83 ms │     no change │
│ QQuery 8  │     318.11 / 321.14 ±2.34 / 324.04 ms │     317.24 / 319.71 ±2.31 / 323.68 ms │     no change │
│ QQuery 9  │     449.11 / 456.55 ±8.37 / 472.26 ms │     449.97 / 457.35 ±6.38 / 465.54 ms │     no change │
│ QQuery 10 │        71.12 / 72.89 ±2.08 / 76.57 ms │        68.59 / 70.15 ±1.60 / 73.06 ms │     no change │
│ QQuery 11 │        83.29 / 84.12 ±0.57 / 85.08 ms │        80.13 / 82.33 ±1.43 / 84.25 ms │     no change │
│ QQuery 12 │     268.25 / 270.98 ±1.95 / 273.29 ms │     263.38 / 268.58 ±4.06 / 275.38 ms │     no change │
│ QQuery 13 │    358.19 / 373.98 ±13.32 / 391.22 ms │     365.80 / 370.65 ±5.85 / 380.88 ms │     no change │
│ QQuery 14 │     281.53 / 284.16 ±1.57 / 286.25 ms │     280.67 / 284.49 ±2.43 / 287.97 ms │     no change │
│ QQuery 15 │     266.61 / 272.29 ±5.94 / 282.42 ms │     266.54 / 274.66 ±6.47 / 286.42 ms │     no change │
│ QQuery 16 │     604.81 / 612.18 ±6.26 / 621.82 ms │     603.50 / 610.48 ±4.06 / 614.48 ms │     no change │
│ QQuery 17 │     612.78 / 617.97 ±4.65 / 626.67 ms │    603.50 / 626.58 ±15.63 / 646.34 ms │     no change │
│ QQuery 18 │ 1248.38 / 1265.59 ±14.95 / 1287.60 ms │ 1246.60 / 1258.65 ±14.87 / 1287.29 ms │     no change │
│ QQuery 19 │        27.87 / 33.28 ±6.03 / 42.87 ms │        27.58 / 28.16 ±0.52 / 28.89 ms │ +1.18x faster │
│ QQuery 20 │    519.97 / 534.22 ±13.97 / 557.73 ms │     518.65 / 524.12 ±8.33 / 540.61 ms │     no change │
│ QQuery 21 │     515.60 / 520.27 ±3.75 / 525.90 ms │     514.45 / 519.37 ±3.39 / 525.12 ms │     no change │
│ QQuery 22 │    977.04 / 990.79 ±8.30 / 1001.14 ms │     975.84 / 981.51 ±4.85 / 987.93 ms │     no change │
│ QQuery 23 │ 3035.84 / 3077.21 ±26.83 / 3103.55 ms │ 3031.30 / 3081.08 ±30.74 / 3127.86 ms │     no change │
│ QQuery 24 │        41.56 / 49.39 ±8.18 / 62.18 ms │        42.38 / 44.44 ±1.68 / 47.23 ms │ +1.11x faster │
│ QQuery 25 │     111.74 / 114.93 ±2.76 / 118.99 ms │     111.00 / 113.09 ±2.34 / 117.21 ms │     no change │
│ QQuery 26 │        41.84 / 43.03 ±1.19 / 44.57 ms │        41.65 / 45.38 ±4.01 / 51.60 ms │  1.05x slower │
│ QQuery 27 │     668.62 / 672.13 ±2.81 / 674.83 ms │     665.64 / 671.94 ±5.75 / 682.72 ms │     no change │
│ QQuery 28 │ 3027.41 / 3044.86 ±16.63 / 3073.63 ms │ 3039.42 / 3058.33 ±25.39 / 3108.23 ms │     no change │
│ QQuery 29 │        41.33 / 41.62 ±0.19 / 41.88 ms │        40.89 / 41.16 ±0.25 / 41.56 ms │     no change │
│ QQuery 30 │    302.97 / 311.86 ±12.19 / 335.70 ms │     303.84 / 312.02 ±9.80 / 330.65 ms │     no change │
│ QQuery 31 │     281.42 / 293.29 ±9.72 / 303.87 ms │    278.91 / 293.80 ±13.78 / 317.42 ms │     no change │
│ QQuery 32 │    919.07 / 936.56 ±16.71 / 965.91 ms │    901.73 / 941.22 ±29.52 / 991.65 ms │     no change │
│ QQuery 33 │  1443.87 / 1453.51 ±8.35 / 1466.24 ms │ 1428.46 / 1451.79 ±15.08 / 1471.03 ms │     no change │
│ QQuery 34 │ 1465.56 / 1490.38 ±33.28 / 1554.99 ms │ 1439.83 / 1468.09 ±27.10 / 1512.32 ms │     no change │
│ QQuery 35 │    282.14 / 302.25 ±15.86 / 316.14 ms │    266.44 / 311.58 ±49.61 / 397.99 ms │     no change │
│ QQuery 36 │        64.18 / 67.03 ±1.91 / 69.51 ms │        67.36 / 70.68 ±4.67 / 79.84 ms │  1.05x slower │
│ QQuery 37 │        35.49 / 40.44 ±5.22 / 47.78 ms │        35.54 / 38.49 ±4.31 / 47.07 ms │     no change │
│ QQuery 38 │        40.97 / 45.04 ±3.30 / 49.76 ms │        40.23 / 41.73 ±1.45 / 43.98 ms │ +1.08x faster │
│ QQuery 39 │     133.26 / 143.50 ±8.75 / 158.44 ms │    133.09 / 148.15 ±11.31 / 164.37 ms │     no change │
│ QQuery 40 │        14.02 / 15.38 ±1.57 / 18.21 ms │        13.83 / 14.25 ±0.28 / 14.67 ms │ +1.08x faster │
│ QQuery 41 │        13.75 / 18.21 ±6.12 / 30.09 ms │        13.61 / 13.70 ±0.07 / 13.82 ms │ +1.33x faster │
│ QQuery 42 │        13.32 / 14.27 ±1.50 / 17.27 ms │        12.94 / 13.15 ±0.21 / 13.52 ms │ +1.09x faster │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 19477.40ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 19444.77ms │
│ Average Time (HEAD)                                 │   452.96ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │   452.20ms │
│ Queries Faster                                      │          6 │
│ Queries Slower                                      │          2 │
│ Queries with No Change                              │         35 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 100.0s
Peak memory 12.2 GiB
Avg memory 4.6 GiB
CPU user 1005.5s
CPU sys 65.3s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 100.0s
Peak memory 10.9 GiB
Avg memory 4.6 GiB
CPU user 1001.7s
CPU sys 66.1s
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_pushdown.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃  qizhu_parquet-pushdown-adaptive-gate ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.24 / 4.10 ±5.59 / 15.28 ms │          1.22 / 4.01 ±5.45 / 14.91 ms │     no change │
│ QQuery 1  │        12.96 / 13.15 ±0.12 / 13.30 ms │        13.57 / 13.86 ±0.28 / 14.39 ms │  1.05x slower │
│ QQuery 2  │        36.76 / 37.45 ±0.62 / 38.24 ms │        36.40 / 36.78 ±0.34 / 37.41 ms │     no change │
│ QQuery 3  │        31.03 / 31.63 ±0.82 / 33.25 ms │        31.04 / 31.19 ±0.12 / 31.38 ms │     no change │
│ QQuery 4  │     227.12 / 230.25 ±2.21 / 233.66 ms │     226.06 / 227.38 ±0.86 / 228.35 ms │     no change │
│ QQuery 5  │     274.19 / 277.03 ±2.85 / 282.25 ms │     273.51 / 278.30 ±3.38 / 283.52 ms │     no change │
│ QQuery 6  │           1.27 / 1.43 ±0.22 / 1.86 ms │           1.26 / 1.40 ±0.21 / 1.82 ms │     no change │
│ QQuery 7  │        16.54 / 16.77 ±0.19 / 16.99 ms │        15.08 / 15.15 ±0.05 / 15.24 ms │ +1.11x faster │
│ QQuery 8  │     324.26 / 329.46 ±4.10 / 334.40 ms │     323.61 / 326.84 ±2.56 / 330.68 ms │     no change │
│ QQuery 9  │     455.48 / 469.16 ±8.12 / 476.19 ms │     460.07 / 471.66 ±6.88 / 479.01 ms │     no change │
│ QQuery 10 │        95.23 / 96.87 ±0.94 / 97.86 ms │        69.59 / 71.95 ±1.40 / 73.77 ms │ +1.35x faster │
│ QQuery 11 │     106.87 / 107.79 ±0.95 / 109.41 ms │       83.37 / 87.98 ±7.69 / 103.25 ms │ +1.23x faster │
│ QQuery 12 │     305.74 / 309.05 ±2.69 / 313.44 ms │     268.82 / 272.19 ±2.77 / 277.13 ms │ +1.14x faster │
│ QQuery 13 │     426.27 / 436.14 ±9.16 / 450.87 ms │     370.07 / 375.79 ±5.10 / 383.77 ms │ +1.16x faster │
│ QQuery 14 │     317.97 / 323.55 ±7.98 / 339.25 ms │     286.21 / 289.30 ±4.51 / 298.04 ms │ +1.12x faster │
│ QQuery 15 │     275.93 / 284.48 ±7.07 / 292.21 ms │    274.85 / 287.42 ±11.31 / 305.63 ms │     no change │
│ QQuery 16 │     622.58 / 633.26 ±9.22 / 649.55 ms │     614.49 / 623.14 ±7.08 / 632.86 ms │     no change │
│ QQuery 17 │     634.21 / 637.48 ±2.55 / 641.26 ms │     623.65 / 634.04 ±9.82 / 646.87 ms │     no change │
│ QQuery 18 │ 1269.87 / 1302.81 ±24.32 / 1345.00 ms │  1264.80 / 1271.50 ±4.83 / 1278.65 ms │     no change │
│ QQuery 19 │        29.25 / 29.59 ±0.21 / 29.76 ms │       28.39 / 36.98 ±15.81 / 68.53 ms │  1.25x slower │
│ QQuery 20 │    517.33 / 526.75 ±11.31 / 547.09 ms │     519.01 / 525.65 ±7.19 / 538.98 ms │     no change │
│ QQuery 21 │     567.02 / 578.69 ±6.88 / 586.50 ms │     521.39 / 526.46 ±4.22 / 532.15 ms │ +1.10x faster │
│ QQuery 22 │    927.00 / 937.75 ±10.48 / 956.68 ms │    990.15 / 993.76 ±4.16 / 1001.68 ms │  1.06x slower │
│ QQuery 23 │     116.66 / 125.46 ±5.87 / 133.61 ms │     116.37 / 124.25 ±5.85 / 132.68 ms │     no change │
│ QQuery 24 │        37.83 / 39.80 ±3.22 / 46.20 ms │        41.28 / 42.28 ±1.88 / 46.05 ms │  1.06x slower │
│ QQuery 25 │     144.81 / 149.31 ±3.42 / 153.64 ms │     112.15 / 119.12 ±7.41 / 132.55 ms │ +1.25x faster │
│ QQuery 26 │        49.92 / 50.96 ±0.86 / 52.31 ms │        42.00 / 42.70 ±0.37 / 43.04 ms │ +1.19x faster │
│ QQuery 27 │     711.11 / 719.52 ±9.57 / 737.84 ms │     673.75 / 683.93 ±6.63 / 692.00 ms │     no change │
│ QQuery 28 │ 3062.78 / 3091.39 ±19.74 / 3119.93 ms │  3067.46 / 3077.46 ±7.56 / 3085.45 ms │     no change │
│ QQuery 29 │        41.17 / 45.16 ±7.39 / 59.93 ms │        41.71 / 55.51 ±9.80 / 71.56 ms │  1.23x slower │
│ QQuery 30 │     312.51 / 317.83 ±4.76 / 326.73 ms │     307.46 / 314.68 ±4.54 / 321.29 ms │     no change │
│ QQuery 31 │     293.30 / 301.88 ±6.24 / 310.74 ms │    295.00 / 306.48 ±11.50 / 328.33 ms │     no change │
│ QQuery 32 │   926.19 / 968.21 ±25.26 / 1002.64 ms │   950.24 / 994.38 ±23.11 / 1017.51 ms │     no change │
│ QQuery 33 │ 1451.44 / 1489.42 ±24.90 / 1529.12 ms │ 1474.44 / 1486.27 ±12.10 / 1503.04 ms │     no change │
│ QQuery 34 │  1486.33 / 1497.38 ±6.12 / 1505.11 ms │ 1493.04 / 1534.83 ±38.86 / 1585.35 ms │     no change │
│ QQuery 35 │    281.95 / 303.19 ±24.93 / 348.47 ms │    281.46 / 305.21 ±16.40 / 324.06 ms │     no change │
│ QQuery 36 │        67.03 / 73.48 ±4.55 / 80.29 ms │        67.22 / 72.37 ±4.84 / 80.72 ms │     no change │
│ QQuery 37 │        36.59 / 40.92 ±4.82 / 48.33 ms │        35.86 / 41.06 ±4.50 / 47.14 ms │     no change │
│ QQuery 38 │        36.44 / 42.07 ±4.96 / 49.73 ms │        41.81 / 43.46 ±0.90 / 44.56 ms │     no change │
│ QQuery 39 │     141.26 / 143.72 ±2.13 / 147.46 ms │     126.12 / 142.17 ±9.14 / 154.61 ms │     no change │
│ QQuery 40 │        18.39 / 21.19 ±4.94 / 31.06 ms │        14.23 / 16.32 ±2.55 / 21.27 ms │ +1.30x faster │
│ QQuery 41 │        17.21 / 21.75 ±5.29 / 30.45 ms │        14.19 / 14.49 ±0.22 / 14.82 ms │ +1.50x faster │
│ QQuery 42 │        14.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 Faster                                      │         12 │
│ Queries Slower                                      │          5 │
│ Queries with No Change                              │         26 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_pushdown — base (merge-base)

Metric Value
Wall time 90.0s
Peak memory 11.7 GiB
Avg memory 4.7 GiB
CPU user 874.3s
CPU sys 58.3s
Peak spill 0 B

clickbench_pushdown — branch

Metric Value
Wall time 85.0s
Peak memory 10.9 GiB
Avg memory 4.4 GiB
CPU user 860.6s
CPU sys 56.4s
Peak spill 0 B

File an issue against this benchmark runner

@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

run benchmark clickbench_pushdown

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4925683311-954-g25dv 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 (b6b6421) to cd47b95 (merge-base) diff using: clickbench_pushdown
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 clickbench_pushdown.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃  qizhu_parquet-pushdown-adaptive-gate ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.20 / 4.04 ±5.53 / 15.09 ms │          1.22 / 3.99 ±5.44 / 14.88 ms │     no change │
│ QQuery 1  │        12.95 / 13.21 ±0.18 / 13.45 ms │        13.02 / 13.59 ±0.32 / 13.99 ms │     no change │
│ QQuery 2  │        36.77 / 36.86 ±0.11 / 37.08 ms │        36.59 / 36.85 ±0.18 / 37.16 ms │     no change │
│ QQuery 3  │        31.18 / 31.79 ±0.63 / 33.00 ms │        31.05 / 31.75 ±0.58 / 32.83 ms │     no change │
│ QQuery 4  │     226.97 / 228.45 ±0.97 / 229.62 ms │     227.52 / 231.00 ±3.58 / 237.47 ms │     no change │
│ QQuery 5  │     275.95 / 278.25 ±2.42 / 281.92 ms │     274.35 / 277.05 ±1.84 / 279.09 ms │     no change │
│ QQuery 6  │           1.26 / 1.41 ±0.23 / 1.87 ms │           1.24 / 1.40 ±0.22 / 1.83 ms │     no change │
│ QQuery 7  │        16.70 / 16.77 ±0.06 / 16.85 ms │        14.44 / 14.59 ±0.12 / 14.74 ms │ +1.15x faster │
│ QQuery 8  │     329.23 / 331.50 ±2.24 / 335.78 ms │     329.55 / 331.72 ±1.57 / 334.41 ms │     no change │
│ QQuery 9  │     471.87 / 479.60 ±6.32 / 490.95 ms │    439.66 / 465.48 ±13.90 / 480.46 ms │     no change │
│ QQuery 10 │        95.76 / 97.69 ±1.12 / 99.20 ms │        70.36 / 71.40 ±0.86 / 72.96 ms │ +1.37x faster │
│ QQuery 11 │     107.03 / 108.83 ±1.26 / 110.90 ms │       83.64 / 88.64 ±7.58 / 103.59 ms │ +1.23x faster │
│ QQuery 12 │     301.32 / 308.54 ±5.92 / 317.82 ms │     273.04 / 277.30 ±6.08 / 289.36 ms │ +1.11x faster │
│ QQuery 13 │    405.51 / 422.85 ±15.06 / 450.87 ms │     383.36 / 389.43 ±5.41 / 399.43 ms │ +1.09x faster │
│ QQuery 14 │     317.53 / 329.69 ±8.67 / 341.26 ms │     295.27 / 301.76 ±5.05 / 310.48 ms │ +1.09x faster │
│ QQuery 15 │     281.37 / 289.36 ±6.76 / 300.15 ms │     279.60 / 287.48 ±7.17 / 300.24 ms │     no change │
│ QQuery 16 │    619.28 / 632.57 ±11.46 / 653.14 ms │    612.95 / 632.90 ±11.35 / 648.06 ms │     no change │
│ QQuery 17 │     630.54 / 641.41 ±6.71 / 650.21 ms │     627.59 / 634.71 ±4.85 / 642.87 ms │     no change │
│ QQuery 18 │ 1272.61 / 1301.95 ±26.60 / 1352.03 ms │ 1268.51 / 1296.13 ±19.93 / 1324.17 ms │     no change │
│ QQuery 19 │        29.51 / 29.94 ±0.35 / 30.40 ms │        28.60 / 33.24 ±8.66 / 50.55 ms │  1.11x slower │
│ QQuery 20 │     512.39 / 522.78 ±8.94 / 538.21 ms │     521.41 / 527.13 ±4.16 / 533.09 ms │     no change │
│ QQuery 21 │    568.17 / 584.92 ±11.14 / 603.13 ms │     520.90 / 526.23 ±4.51 / 532.56 ms │ +1.11x faster │
│ QQuery 22 │    932.20 / 948.82 ±14.33 / 974.41 ms │    989.26 / 997.84 ±7.45 / 1009.83 ms │  1.05x slower │
│ QQuery 23 │     117.54 / 125.07 ±5.73 / 134.91 ms │     117.45 / 129.89 ±8.25 / 139.37 ms │     no change │
│ QQuery 24 │        37.01 / 38.03 ±0.63 / 38.80 ms │        41.50 / 41.86 ±0.29 / 42.22 ms │  1.10x slower │
│ QQuery 25 │     144.39 / 149.44 ±2.60 / 151.83 ms │    113.01 / 126.04 ±19.81 / 164.37 ms │ +1.19x faster │
│ QQuery 26 │        50.45 / 50.57 ±0.16 / 50.89 ms │        42.34 / 44.05 ±1.31 / 45.98 ms │ +1.15x faster │
│ QQuery 27 │    720.97 / 729.15 ±10.95 / 750.39 ms │     669.08 / 678.74 ±5.96 / 687.41 ms │ +1.07x faster │
│ QQuery 28 │ 3071.56 / 3087.27 ±16.66 / 3114.02 ms │ 3012.87 / 3066.38 ±28.64 / 3093.46 ms │     no change │
│ QQuery 29 │       41.48 / 50.75 ±17.17 / 85.06 ms │       41.41 / 53.52 ±15.73 / 81.05 ms │  1.05x slower │
│ QQuery 30 │     315.85 / 326.64 ±6.07 / 333.22 ms │     310.30 / 316.94 ±6.24 / 327.44 ms │     no change │
│ QQuery 31 │    288.40 / 304.93 ±11.06 / 322.82 ms │    295.53 / 307.29 ±15.65 / 337.81 ms │     no change │
│ QQuery 32 │   954.66 / 983.00 ±19.87 / 1012.61 ms │   940.95 / 965.94 ±23.22 / 1007.44 ms │     no change │
│ QQuery 33 │ 1448.49 / 1507.70 ±39.07 / 1553.01 ms │ 1479.05 / 1512.61 ±30.93 / 1553.79 ms │     no change │
│ QQuery 34 │ 1480.75 / 1575.87 ±92.58 / 1699.48 ms │ 1504.58 / 1524.90 ±21.58 / 1563.13 ms │     no change │
│ QQuery 35 │    281.64 / 305.70 ±39.15 / 383.78 ms │    289.15 / 310.24 ±22.21 / 348.26 ms │     no change │
│ QQuery 36 │        64.54 / 70.98 ±6.13 / 82.70 ms │        68.30 / 72.09 ±4.27 / 79.93 ms │     no change │
│ QQuery 37 │        36.77 / 40.66 ±4.86 / 49.05 ms │        41.82 / 46.27 ±4.64 / 54.78 ms │  1.14x slower │
│ QQuery 38 │        36.59 / 40.26 ±2.65 / 43.29 ms │        44.45 / 45.65 ±1.22 / 47.81 ms │  1.13x slower │
│ QQuery 39 │     126.55 / 142.14 ±9.30 / 152.73 ms │     129.74 / 140.20 ±8.19 / 153.49 ms │     no change │
│ QQuery 40 │        18.37 / 21.79 ±6.08 / 33.94 ms │        14.82 / 21.24 ±7.74 / 32.35 ms │     no change │
│ QQuery 41 │        17.02 / 21.78 ±4.17 / 27.96 ms │        13.88 / 14.70 ±0.59 / 15.65 ms │ +1.48x faster │
│ QQuery 42 │        14.63 / 16.76 ±3.89 / 24.53 ms │        13.51 / 13.74 ±0.13 / 13.89 ms │ +1.22x faster │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                   ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                   │ 17229.72ms │
│ Total Time (qizhu_parquet-pushdown-adaptive-gate)   │ 16903.90ms │
│ Average Time (HEAD)                                 │   400.69ms │
│ Average Time (qizhu_parquet-pushdown-adaptive-gate) │   393.11ms │
│ Queries Faster                                      │         12 │
│ Queries Slower                                      │          6 │
│ Queries with No Change                              │         25 │
│ Queries with Failure                                │          0 │
└─────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_pushdown — base (merge-base)

Metric Value
Wall time 90.0s
Peak memory 9.7 GiB
Avg memory 4.1 GiB
CPU user 873.2s
CPU sys 64.2s
Peak spill 0 B

clickbench_pushdown — branch

Metric Value
Wall time 85.0s
Peak memory 11.9 GiB
Avg memory 4.3 GiB
CPU user 862.9s
CPU sys 58.1s
Peak spill 0 B

File an issue against this benchmark runner

@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

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

Labels

datasource Changes to the datasource crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable parquet filter pushdown (filter_pushdown) by default

4 participants