Skip to content

perf(parquet): skip RowFilter on statically fully-matched row groups - #23696

Open
zhuqi-lucas wants to merge 20 commits into
apache:mainfrom
zhuqi-lucas:perf/parquet-skip-filter-for-full-match
Open

perf(parquet): skip RowFilter on statically fully-matched row groups#23696
zhuqi-lucas wants to merge 20 commits into
apache:mainfrom
zhuqi-lucas:perf/parquet-skip-filter-for-full-match

Conversation

@zhuqi-lucas

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

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

When Parquet statistics prove that every row of a row group already satisfies the pushdown predicate (fully_matched, tracked by ParquetAccessPlan since #21637), running the per-row RowFilter inside that row group is pure overhead — every row passes anyway. This PR teaches the push-decoder stream to toggle the RowFilter off across fully-matched runs and back on at the next straddling row group, so fully-matched runs decode without per-row evaluation (and two-phase reads skip fetching filter-only columns for them). Common shape: time-partitioned tables (WHERE ts >= X AND ts < Y with whole row groups inside [X, Y)) and the middle stretch of a TopK scan.

This PR was decomposed per @adriangb's proposal; the standalone pieces already merged:

What remains here is the feature itself plus the prebuild split it consumes (the proposal's PR 2 is folded in rather than standalone: on main, into_builder() preserves the RowFilter across runtime-prune rebuilds, so a prebuilt candidate list would have no consumer and no perf story on its own — the per-RG toggle here is its only consumer).

What changes are included in this PR?

  • access_plan.rsPreparedAccessPlan carries per-RG fully_matched flags, mapped from the access plan after the (generic) empty-row-group strip; reorder_by_statistics / reverse permute them alongside the indexes.
  • row_filter.rs — split into prebuild_row_filter_candidates (once per file: conjunct split, candidate construction, reassign_expr_columns) and row_filter_from_prebuilt (per boundary: metric wiring + optional required_bytes ordering, no tree walks). The public build_row_filter is reimplemented on top of the two, so the open-time path and the per-RG rebuild path share one conjunct-split/order/metric implementation and cannot drift. DatafusionArrowPredicate::try_new becomes a #[cfg(test)] convenience.
  • push_decoder.rsRgPlanEntry.fully_matched; RowFilterContext (the prebuilt list + settings) lets rebuild_decoder_at_boundary swap between the real filter and an empty one as the stream crosses row-group boundaries; at most one into_builder rebuild per boundary, shared with the runtime pruner.
  • opener/mod.rs — prebuilds once per file, installs the initial filter based on the first row group's fully_matched state (two new fields on InitialDecoderState).
  • metrics.rs — new row_filter_skipped_fully_matched counter, registered lazily on first suppression (RowFilterSkippedFullyMatchedMetric), following the page_index_pages_skipped_by_fully_matched pattern from Skip RowFilter and page pruning for fully matched row groups #21637: no public field on ParquetFileMetrics (no API/semver change) and no zero-valued entries in EXPLAIN ANALYZE baselines — the previously-regenerated 41 baselines across 3 slt files are untouched by this PR. It counts suppression events, not row groups: a run of consecutive fully-matched RGs shares one toggle.

Considered but deferred: carrying one Vec<{index, fully_matched}> instead of the two positionally-aligned vectors. Alignment is now maintained in exactly two adjacent permutations (reorder_by_statistics, reverse) plus a debug_assert, and the type change would churn ~40 assertion lines in main-side tests — the opposite of shrinking this PR. Happy to do it as a tiny follow-up.

Are these changes tested?

  • fully_matched_rgs_skip_row_filter — 4 RGs, predicate v >= 3 AND v <= 10 makes RG 0 and RG 3 straddlers with a fully-matched run in between, covering the full toggle lifecycle (ON → OFF → back ON); asserts correctness, that 11/12 are filtered out by the reinstalled filter, and row_filter_skipped_fully_matched >= 1.
  • dynamic_row_group_pruning.slt — an EXPLAIN ANALYZE case surfacing row_filter_skipped_fully_matched=1, so the optimization is observable from SQL and a regression shows up as the metric disappearing.
  • All existing dynamic_row_group_pruning integration tests (10), the datafusion-datasource-parquet lib suite (240), and the affected slt files pass; clippy --all-targets --all-features -D warnings clean.

Are there any user-facing changes?

  • row_filter_skipped_fully_matched appears in EXPLAIN ANALYZE on parquet scans only when the toggle actually fired.
  • No public API changes; build_row_filter keeps its signature and behavior.

Copilot AI review requested due to automatic review settings July 19, 2026 03:24
@github-actions github-actions Bot added core Core DataFusion crate sqllogictest SQL Logic Tests (.slt) datasource Changes to the datasource crate labels Jul 19, 2026
@zhuqi-lucas
zhuqi-lucas marked this pull request as draft July 19, 2026 03:28
@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-c5013997795-1147-cgg4w 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 perf/parquet-skip-filter-for-full-match (a3047ed) to 67947b6 (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-c5013997795-1148-clr8x 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 perf/parquet-skip-filter-for-full-match (a3047ed) to 67947b6 (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-c5013997795-1146-lb65k 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 perf/parquet-skip-filter-for-full-match (a3047ed) to 67947b6 (merge-base) diff using: clickbench_partitioned
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

This PR improves Parquet scan performance by avoiding per-row RowFilter evaluation for row groups proven (via statistics/static pruning) to be fully matched, and by enabling cheap per-row-group rebuilds of the row filter using prebuilt candidates. This builds on arrow-rs’s peek_next_row_group() to keep DataFusion’s row-group plan aligned with the decoder’s actual frontier.

Changes:

  • Track per-row-group fully_matched state in the Parquet access plan and preserve it through reorder/reverse operations.
  • Toggle the decoder’s RowFilter at row-group boundaries (empty filter for fully-matched RGs; real filter otherwise) and add a new metric for observability.
  • Refactor row-filter construction to prebuild filter candidates once per file and rebuild cheaply per row group; update integration + SQL logic tests accordingly.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
datafusion/datasource-parquet/src/access_plan.rs Carries per-RG fully_matched flags into the prepared plan and strips empty-selection RGs to keep plan/decoder alignment.
datafusion/datasource-parquet/src/metrics.rs Adds row_filter_skipped_fully_matched metric to Parquet file metrics.
datafusion/datasource-parquet/src/push_decoder.rs Adds per-RG plan entries and implements boundary-time RowFilter toggling using peek_next_row_group().
datafusion/datasource-parquet/src/row_filter.rs Splits row-filter building into “prebuild once per file” + “instantiate per RG” and expands nested/struct field planning logic.
datafusion/datasource-parquet/src/opener/mod.rs Wires the prebuilt row-filter context into decoder construction and propagates new metric/state into the stream.
datafusion/datasource-parquet/src/sort.rs Updates prepared-plan reverse test to reflect stripping of all-empty selections.
datafusion/core/tests/parquet/dynamic_row_group_pruning.rs Adds an end-to-end integration test asserting fully-matched RGs trigger row-filter skipping behavior.
datafusion/sqllogictest/test_files/push_down_filter_parquet.slt Updates EXPLAIN ANALYZE expectations to include the new metric.

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

Comment on lines +64 to +68
/// Number of row groups for which the per-row
/// [`RowFilter`](parquet::arrow::arrow_reader::RowFilter) was skipped
/// because the static stats proved every row of the RG satisfies the
/// predicate. The decoder is rebuilt at the boundary with an empty
/// row filter so the upcoming RG decodes without per-row evaluation.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in fea0264 — the doc now states explicitly that this counts suppression events, not row groups: a run of consecutive fully-matched RGs shares a single toggle.

&& (!DataType::is_nested(return_type)
|| self.is_nested_type_supported(return_type))
{
// try to resolve all field name arguments to strinrg literals

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in fea0264.

Comment on lines +192 to +196
/// The result of resolving which Parquet leaf columns and Arrow schema fields
/// are needed to evaluate an expression against a Parquet file
///
/// This is the shared output of the column resolution pipeline used by both
/// the row filter to build `ArrowPredicate`s and the opener to build `ProjectionMask`s

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in fea0264row_filter.rs now reuses the shared ParquetReadPlan / PushdownChecker machinery from projection_read_plan.rs instead of carrying its own copy (~700 lines removed).

.map(|p| replace_columns_with_literals(p, &literal_columns))
.transpose()?;
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good catch — this was real: the rebase had silently dropped the input_file_name() rewrite. Restored in fea0264 along with a regression test (test_input_file_name_projection).

@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

run benchmarks

env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: true

@github-actions github-actions Bot added the auto detected api change Auto detected API change label Jul 19, 2026
@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5014042375-1149-vbkxv 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 perf/parquet-skip-filter-for-full-match (a3047ed) to 67947b6 (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-c5014042375-1151-55j4t 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 perf/parquet-skip-filter-for-full-match (a3047ed) to 67947b6 (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-c5014042375-1150-8k8cz 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 perf/parquet-skip-filter-for-full-match (a3047ed) to 67947b6 (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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ perf_parquet-skip-filter-for-full-match ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 39.89 / 40.96 ±1.29 / 43.45 ms │          40.41 / 41.28 ±1.07 / 43.36 ms │     no change │
│ QQuery 2  │ 20.19 / 20.48 ±0.21 / 20.72 ms │          19.80 / 20.59 ±0.42 / 20.91 ms │     no change │
│ QQuery 3  │ 32.94 / 34.61 ±1.51 / 36.76 ms │          31.82 / 34.35 ±1.36 / 35.94 ms │     no change │
│ QQuery 4  │ 18.51 / 18.73 ±0.18 / 19.04 ms │          17.86 / 18.09 ±0.17 / 18.27 ms │     no change │
│ QQuery 5  │ 41.71 / 43.77 ±1.52 / 46.40 ms │          39.14 / 41.58 ±1.34 / 43.02 ms │     no change │
│ QQuery 6  │ 17.15 / 17.67 ±0.48 / 18.58 ms │          16.93 / 17.48 ±0.90 / 19.27 ms │     no change │
│ QQuery 7  │ 48.91 / 50.28 ±0.78 / 51.25 ms │          46.45 / 47.79 ±1.34 / 49.98 ms │     no change │
│ QQuery 8  │ 45.41 / 46.27 ±1.13 / 48.50 ms │          43.81 / 44.28 ±0.40 / 44.82 ms │     no change │
│ QQuery 9  │ 54.09 / 55.13 ±1.20 / 57.39 ms │          51.27 / 52.31 ±0.74 / 53.50 ms │ +1.05x faster │
│ QQuery 10 │ 44.19 / 45.55 ±0.72 / 46.17 ms │          45.70 / 46.48 ±0.73 / 47.65 ms │     no change │
│ QQuery 11 │ 14.47 / 15.22 ±0.58 / 15.89 ms │          14.05 / 14.94 ±0.73 / 16.28 ms │     no change │
│ QQuery 12 │ 24.99 / 25.33 ±0.20 / 25.56 ms │          25.28 / 25.88 ±0.40 / 26.46 ms │     no change │
│ QQuery 13 │ 34.60 / 36.32 ±1.63 / 39.21 ms │          34.50 / 35.94 ±0.80 / 37.00 ms │     no change │
│ QQuery 14 │ 25.30 / 25.54 ±0.13 / 25.65 ms │          24.58 / 25.37 ±0.64 / 26.46 ms │     no change │
│ QQuery 15 │ 33.65 / 34.34 ±0.55 / 34.99 ms │          33.57 / 34.06 ±0.52 / 35.02 ms │     no change │
│ QQuery 16 │ 14.70 / 15.36 ±0.47 / 15.86 ms │          14.58 / 15.14 ±0.36 / 15.64 ms │     no change │
│ QQuery 17 │ 73.60 / 80.44 ±3.77 / 85.16 ms │          77.29 / 82.62 ±4.37 / 89.97 ms │     no change │
│ QQuery 18 │ 66.39 / 67.51 ±0.73 / 68.49 ms │          63.55 / 66.77 ±3.76 / 74.02 ms │     no change │
│ QQuery 19 │ 35.24 / 35.87 ±0.40 / 36.36 ms │          35.41 / 36.61 ±1.36 / 39.16 ms │     no change │
│ QQuery 20 │ 32.76 / 34.72 ±1.52 / 37.19 ms │          33.38 / 34.58 ±0.74 / 35.47 ms │     no change │
│ QQuery 21 │ 61.02 / 62.39 ±1.34 / 64.85 ms │          63.08 / 64.66 ±1.69 / 67.91 ms │     no change │
│ QQuery 22 │ 15.06 / 15.73 ±0.47 / 16.41 ms │          14.78 / 15.31 ±0.55 / 16.02 ms │     no change │
└───────────┴────────────────────────────────┴─────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 822.23ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 816.12ms │
│ Average Time (HEAD)                                    │  37.37ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │  37.10ms │
│ Queries Faster                                         │        1 │
│ Queries Slower                                         │        0 │
│ Queries with No Change                                 │       21 │
│ Queries with Failure                                   │        0 │
└────────────────────────────────────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 990.4 MiB
Avg memory 631.9 MiB
CPU user 23.7s
CPU sys 1.9s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 998.8 MiB
Avg memory 635.8 MiB
CPU user 23.5s
CPU sys 1.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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ perf_parquet-skip-filter-for-full-match ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.48 / 6.03 ±0.93 / 7.87 ms │             5.38 / 5.88 ±0.85 / 7.58 ms │     no change │
│ QQuery 2  │        82.54 / 82.74 ±0.12 / 82.91 ms │          81.12 / 81.62 ±0.35 / 82.17 ms │     no change │
│ QQuery 3  │        29.91 / 30.28 ±0.29 / 30.65 ms │          29.36 / 29.79 ±0.28 / 30.08 ms │     no change │
│ QQuery 4  │     498.44 / 504.81 ±5.53 / 513.19 ms │       497.33 / 503.81 ±5.62 / 513.49 ms │     no change │
│ QQuery 5  │        52.12 / 52.93 ±0.69 / 53.87 ms │          52.12 / 52.66 ±0.37 / 53.28 ms │     no change │
│ QQuery 6  │        36.82 / 37.53 ±0.55 / 38.37 ms │          36.70 / 37.21 ±0.33 / 37.63 ms │     no change │
│ QQuery 7  │       95.38 / 97.18 ±2.60 / 102.32 ms │         95.07 / 96.95 ±2.35 / 101.59 ms │     no change │
│ QQuery 8  │        37.36 / 37.56 ±0.28 / 38.09 ms │          37.35 / 37.49 ±0.12 / 37.69 ms │     no change │
│ QQuery 9  │        54.23 / 54.47 ±0.23 / 54.87 ms │          53.53 / 54.49 ±0.58 / 55.29 ms │     no change │
│ QQuery 10 │        64.14 / 64.31 ±0.26 / 64.82 ms │          63.32 / 63.65 ±0.21 / 63.95 ms │     no change │
│ QQuery 11 │     301.98 / 305.90 ±4.14 / 313.62 ms │       304.42 / 308.36 ±3.04 / 311.87 ms │     no change │
│ QQuery 12 │        28.62 / 28.94 ±0.23 / 29.21 ms │          28.87 / 29.22 ±0.29 / 29.72 ms │     no change │
│ QQuery 13 │     119.29 / 121.91 ±4.04 / 129.93 ms │       119.22 / 121.27 ±2.71 / 126.45 ms │     no change │
│ QQuery 14 │     416.07 / 419.64 ±3.28 / 424.89 ms │       414.59 / 419.07 ±4.75 / 427.82 ms │     no change │
│ QQuery 15 │        57.69 / 58.12 ±0.34 / 58.72 ms │          57.62 / 58.47 ±0.53 / 59.07 ms │     no change │
│ QQuery 16 │           6.60 / 6.74 ±0.19 / 7.11 ms │             6.62 / 6.78 ±0.25 / 7.28 ms │     no change │
│ QQuery 17 │        79.69 / 81.09 ±1.09 / 82.98 ms │          79.57 / 81.61 ±2.56 / 86.59 ms │     no change │
│ QQuery 18 │     124.31 / 126.20 ±1.79 / 129.28 ms │       123.83 / 124.79 ±0.80 / 125.84 ms │     no change │
│ QQuery 19 │        42.14 / 42.36 ±0.16 / 42.60 ms │          41.86 / 42.07 ±0.19 / 42.41 ms │     no change │
│ QQuery 20 │        35.72 / 36.45 ±0.78 / 37.90 ms │          35.92 / 37.20 ±1.14 / 38.76 ms │     no change │
│ QQuery 21 │        18.41 / 19.12 ±1.08 / 21.27 ms │          17.96 / 18.43 ±0.49 / 19.30 ms │     no change │
│ QQuery 22 │        62.28 / 63.49 ±0.87 / 64.64 ms │          62.53 / 64.67 ±1.89 / 68.03 ms │     no change │
│ QQuery 23 │    345.13 / 354.92 ±11.41 / 376.09 ms │       343.23 / 347.64 ±3.30 / 351.60 ms │     no change │
│ QQuery 24 │     223.12 / 224.99 ±1.04 / 226.04 ms │       224.81 / 225.83 ±0.73 / 227.01 ms │     no change │
│ QQuery 25 │     110.36 / 111.56 ±0.97 / 113.31 ms │       110.56 / 111.78 ±1.29 / 114.26 ms │     no change │
│ QQuery 26 │        57.77 / 59.46 ±1.94 / 63.25 ms │          57.94 / 59.97 ±2.62 / 65.07 ms │     no change │
│ QQuery 27 │           6.15 / 6.29 ±0.22 / 6.72 ms │             6.15 / 6.29 ±0.16 / 6.60 ms │     no change │
│ QQuery 28 │        57.06 / 60.57 ±2.47 / 62.85 ms │          57.34 / 61.24 ±1.99 / 62.76 ms │     no change │
│ QQuery 29 │       96.79 / 97.84 ±1.50 / 100.80 ms │         97.72 / 99.57 ±2.18 / 103.77 ms │     no change │
│ QQuery 30 │        32.93 / 33.92 ±1.25 / 36.25 ms │          32.74 / 34.46 ±1.25 / 36.64 ms │     no change │
│ QQuery 31 │     112.51 / 113.15 ±0.49 / 113.94 ms │       110.96 / 111.87 ±0.58 / 112.62 ms │     no change │
│ QQuery 32 │        20.26 / 20.48 ±0.28 / 21.01 ms │          20.66 / 20.87 ±0.14 / 21.07 ms │     no change │
│ QQuery 33 │        38.00 / 38.21 ±0.22 / 38.57 ms │          37.86 / 39.85 ±1.95 / 43.26 ms │     no change │
│ QQuery 34 │        10.18 / 10.54 ±0.46 / 11.45 ms │            9.66 / 9.97 ±0.21 / 10.25 ms │ +1.06x faster │
│ QQuery 35 │        72.48 / 73.43 ±0.56 / 74.22 ms │          72.71 / 73.90 ±0.98 / 75.10 ms │     no change │
│ QQuery 36 │           5.76 / 5.91 ±0.22 / 6.35 ms │             5.58 / 5.69 ±0.19 / 6.07 ms │     no change │
│ QQuery 37 │           6.82 / 6.93 ±0.08 / 7.02 ms │             6.65 / 6.80 ±0.09 / 6.93 ms │     no change │
│ QQuery 38 │        61.93 / 62.65 ±0.73 / 64.01 ms │          61.43 / 61.89 ±0.35 / 62.40 ms │     no change │
│ QQuery 39 │        90.03 / 90.47 ±0.50 / 91.46 ms │          89.52 / 91.14 ±0.99 / 92.40 ms │     no change │
│ QQuery 40 │        23.97 / 24.25 ±0.30 / 24.79 ms │          23.81 / 24.12 ±0.19 / 24.36 ms │     no change │
│ QQuery 41 │        11.61 / 11.86 ±0.28 / 12.38 ms │          11.57 / 11.71 ±0.17 / 12.04 ms │     no change │
│ QQuery 42 │        24.07 / 24.42 ±0.38 / 25.09 ms │          23.76 / 24.12 ±0.27 / 24.36 ms │     no change │
│ QQuery 43 │           5.02 / 5.15 ±0.19 / 5.53 ms │             4.82 / 4.98 ±0.15 / 5.27 ms │     no change │
│ QQuery 44 │           9.20 / 9.41 ±0.15 / 9.67 ms │             9.10 / 9.24 ±0.11 / 9.39 ms │     no change │
│ QQuery 45 │        38.72 / 38.94 ±0.23 / 39.39 ms │          38.35 / 38.86 ±0.30 / 39.19 ms │     no change │
│ QQuery 46 │        11.88 / 12.10 ±0.22 / 12.49 ms │          11.68 / 11.97 ±0.25 / 12.29 ms │     no change │
│ QQuery 47 │     228.40 / 232.29 ±4.09 / 238.48 ms │       229.26 / 230.73 ±1.63 / 233.24 ms │     no change │
│ QQuery 48 │       96.65 / 98.10 ±1.24 / 100.29 ms │          96.16 / 96.74 ±0.46 / 97.42 ms │     no change │
│ QQuery 49 │        75.94 / 77.04 ±0.67 / 77.74 ms │          76.60 / 77.50 ±0.77 / 78.79 ms │     no change │
│ QQuery 50 │        59.81 / 62.75 ±2.34 / 66.11 ms │          59.79 / 62.62 ±3.61 / 69.34 ms │     no change │
│ QQuery 51 │        91.79 / 93.26 ±1.22 / 94.91 ms │          90.07 / 92.66 ±2.38 / 96.42 ms │     no change │
│ QQuery 52 │        24.39 / 24.65 ±0.21 / 24.98 ms │          24.44 / 24.73 ±0.23 / 25.15 ms │     no change │
│ QQuery 53 │        29.94 / 31.91 ±3.63 / 39.17 ms │          30.02 / 30.67 ±1.22 / 33.12 ms │     no change │
│ QQuery 54 │        55.56 / 56.06 ±0.44 / 56.77 ms │          56.00 / 56.51 ±0.40 / 57.17 ms │     no change │
│ QQuery 55 │        23.62 / 24.30 ±0.44 / 24.75 ms │          23.81 / 24.27 ±0.54 / 25.28 ms │     no change │
│ QQuery 56 │        39.12 / 39.51 ±0.32 / 40.02 ms │          39.24 / 39.77 ±0.51 / 40.43 ms │     no change │
│ QQuery 57 │     178.24 / 180.87 ±3.39 / 187.45 ms │       177.48 / 180.44 ±2.92 / 185.94 ms │     no change │
│ QQuery 58 │     116.59 / 120.10 ±3.54 / 126.45 ms │       116.93 / 118.66 ±2.81 / 124.27 ms │     no change │
│ QQuery 59 │     119.09 / 119.83 ±0.71 / 121.19 ms │       118.06 / 119.27 ±0.89 / 120.61 ms │     no change │
│ QQuery 60 │        39.91 / 40.13 ±0.23 / 40.57 ms │          39.32 / 39.78 ±0.40 / 40.40 ms │     no change │
│ QQuery 61 │        12.32 / 12.55 ±0.16 / 12.81 ms │          12.03 / 12.17 ±0.24 / 12.66 ms │     no change │
│ QQuery 62 │        47.40 / 49.15 ±1.65 / 51.78 ms │          47.04 / 48.99 ±2.29 / 52.34 ms │     no change │
│ QQuery 63 │        30.54 / 31.03 ±0.31 / 31.41 ms │          30.45 / 30.80 ±0.28 / 31.27 ms │     no change │
│ QQuery 64 │     412.86 / 417.33 ±4.01 / 424.64 ms │       416.62 / 417.61 ±1.41 / 420.39 ms │     no change │
│ QQuery 65 │     126.01 / 128.07 ±1.54 / 129.89 ms │       123.01 / 126.37 ±2.41 / 130.48 ms │     no change │
│ QQuery 66 │        81.24 / 82.47 ±1.54 / 85.30 ms │          81.11 / 82.63 ±1.04 / 84.31 ms │     no change │
│ QQuery 67 │     244.13 / 249.14 ±5.25 / 257.67 ms │       244.06 / 249.66 ±6.80 / 262.06 ms │     no change │
│ QQuery 68 │        11.93 / 12.14 ±0.27 / 12.68 ms │          12.03 / 12.16 ±0.15 / 12.44 ms │     no change │
│ QQuery 69 │        57.80 / 60.27 ±4.35 / 68.96 ms │          57.22 / 59.14 ±3.06 / 65.21 ms │     no change │
│ QQuery 70 │     106.91 / 108.93 ±1.75 / 111.34 ms │       107.79 / 111.31 ±4.32 / 119.45 ms │     no change │
│ QQuery 71 │        35.83 / 35.93 ±0.09 / 36.08 ms │          35.60 / 35.86 ±0.31 / 36.45 ms │     no change │
│ QQuery 72 │ 2222.69 / 2249.67 ±16.34 / 2271.10 ms │   2179.93 / 2214.88 ±52.39 / 2317.37 ms │     no change │
│ QQuery 73 │         9.78 / 10.86 ±1.55 / 13.91 ms │            9.69 / 9.84 ±0.17 / 10.11 ms │ +1.10x faster │
│ QQuery 74 │     171.11 / 173.24 ±1.67 / 176.06 ms │       172.50 / 175.98 ±3.19 / 180.94 ms │     no change │
│ QQuery 75 │     148.24 / 153.98 ±8.90 / 171.58 ms │       148.89 / 152.17 ±3.20 / 158.12 ms │     no change │
│ QQuery 76 │        35.57 / 36.14 ±0.41 / 36.75 ms │          35.54 / 36.19 ±1.01 / 38.20 ms │     no change │
│ QQuery 77 │        61.79 / 64.82 ±4.08 / 72.85 ms │          61.56 / 62.87 ±1.69 / 66.05 ms │     no change │
│ QQuery 78 │     199.10 / 203.13 ±3.87 / 210.17 ms │       198.22 / 202.09 ±4.87 / 211.42 ms │     no change │
│ QQuery 79 │        68.06 / 68.64 ±0.32 / 68.96 ms │          68.43 / 69.74 ±1.49 / 71.69 ms │     no change │
│ QQuery 80 │     100.02 / 100.81 ±0.68 / 102.05 ms │        98.67 / 100.07 ±1.10 / 101.64 ms │     no change │
│ QQuery 81 │        26.14 / 26.37 ±0.21 / 26.65 ms │          25.73 / 27.65 ±3.04 / 33.69 ms │     no change │
│ QQuery 82 │        16.63 / 16.87 ±0.26 / 17.30 ms │          16.63 / 18.33 ±1.88 / 21.75 ms │  1.09x slower │
│ QQuery 83 │        40.37 / 40.84 ±0.37 / 41.31 ms │          40.35 / 41.84 ±2.01 / 45.81 ms │     no change │
│ QQuery 84 │        30.48 / 30.72 ±0.22 / 31.09 ms │          30.19 / 30.65 ±0.38 / 31.34 ms │     no change │
│ QQuery 85 │     106.70 / 111.74 ±7.72 / 127.06 ms │       106.15 / 107.67 ±1.31 / 109.75 ms │     no change │
│ QQuery 86 │        25.31 / 26.12 ±0.47 / 26.75 ms │          25.81 / 26.86 ±1.07 / 28.75 ms │     no change │
│ QQuery 87 │        62.14 / 62.89 ±0.59 / 63.91 ms │          62.87 / 64.54 ±1.75 / 67.89 ms │     no change │
│ QQuery 88 │        63.43 / 63.70 ±0.18 / 63.97 ms │          63.21 / 63.74 ±0.30 / 64.11 ms │     no change │
│ QQuery 89 │        36.91 / 38.22 ±2.23 / 42.66 ms │          36.27 / 36.32 ±0.07 / 36.46 ms │     no change │
│ QQuery 90 │        17.10 / 17.53 ±0.22 / 17.70 ms │          16.90 / 18.68 ±2.96 / 24.58 ms │  1.07x slower │
│ QQuery 91 │        46.38 / 46.91 ±0.48 / 47.49 ms │          46.52 / 47.25 ±0.73 / 48.54 ms │     no change │
│ QQuery 92 │        29.75 / 30.52 ±0.44 / 30.95 ms │          29.92 / 30.55 ±0.59 / 31.50 ms │     no change │
│ QQuery 93 │        49.82 / 50.56 ±0.51 / 51.29 ms │          50.18 / 50.88 ±0.79 / 52.38 ms │     no change │
│ QQuery 94 │        38.18 / 40.75 ±2.02 / 43.96 ms │          38.51 / 38.91 ±0.30 / 39.30 ms │     no change │
│ QQuery 95 │        81.32 / 82.93 ±1.46 / 85.41 ms │          80.75 / 83.73 ±2.26 / 86.08 ms │     no change │
│ QQuery 96 │        24.67 / 24.95 ±0.26 / 25.28 ms │          24.20 / 24.52 ±0.20 / 24.82 ms │     no change │
│ QQuery 97 │        47.07 / 47.54 ±0.41 / 48.16 ms │          47.23 / 47.66 ±0.31 / 47.99 ms │     no change │
│ QQuery 98 │        43.45 / 44.88 ±2.21 / 49.21 ms │          42.16 / 43.13 ±0.67 / 43.87 ms │     no change │
│ QQuery 99 │        71.98 / 72.52 ±0.41 / 73.03 ms │          71.98 / 73.69 ±1.78 / 77.01 ms │     no change │
└───────────┴───────────────────────────────────────┴─────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 10100.92ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 10050.76ms │
│ Average Time (HEAD)                                    │   102.03ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │   101.52ms │
│ Queries Faster                                         │          2 │
│ Queries Slower                                         │          2 │
│ Queries with No Change                                 │         95 │
│ Queries with Failure                                   │          0 │
└────────────────────────────────────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 55.0s
Peak memory 2.0 GiB
Avg memory 1.3 GiB
CPU user 225.4s
CPU sys 6.1s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 55.0s
Peak memory 2.2 GiB
Avg memory 1.5 GiB
CPU user 226.3s
CPU sys 6.2s
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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ perf_parquet-skip-filter-for-full-match ┃       Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 1  │ 38.81 / 39.56 ±1.05 / 41.60 ms │          38.83 / 39.82 ±1.09 / 41.89 ms │    no change │
│ QQuery 2  │ 20.36 / 20.72 ±0.40 / 21.48 ms │          20.49 / 20.87 ±0.35 / 21.51 ms │    no change │
│ QQuery 3  │ 42.55 / 42.72 ±0.12 / 42.88 ms │          42.66 / 43.04 ±0.24 / 43.36 ms │    no change │
│ QQuery 4  │ 26.21 / 26.50 ±0.27 / 26.97 ms │          26.83 / 27.87 ±1.02 / 29.10 ms │ 1.05x slower │
│ QQuery 5  │ 61.17 / 61.78 ±0.44 / 62.49 ms │          61.20 / 61.81 ±0.45 / 62.50 ms │    no change │
│ QQuery 6  │ 23.63 / 24.83 ±1.47 / 27.59 ms │          23.90 / 24.84 ±0.88 / 26.49 ms │    no change │
│ QQuery 7  │ 49.63 / 50.48 ±0.56 / 51.35 ms │          49.77 / 50.09 ±0.38 / 50.76 ms │    no change │
│ QQuery 8  │ 50.80 / 51.39 ±0.50 / 52.21 ms │          51.15 / 51.36 ±0.18 / 51.67 ms │    no change │
│ QQuery 9  │ 66.51 / 66.87 ±0.34 / 67.50 ms │          65.85 / 66.56 ±0.49 / 67.14 ms │    no change │
│ QQuery 10 │ 48.91 / 50.19 ±1.77 / 53.71 ms │          50.41 / 52.43 ±3.19 / 58.78 ms │    no change │
│ QQuery 11 │ 15.33 / 15.54 ±0.18 / 15.82 ms │          15.67 / 15.91 ±0.27 / 16.41 ms │    no change │
│ QQuery 12 │ 44.86 / 45.04 ±0.29 / 45.62 ms │          45.14 / 46.25 ±1.31 / 48.76 ms │    no change │
│ QQuery 13 │ 42.70 / 44.38 ±1.40 / 46.92 ms │          43.22 / 43.59 ±0.27 / 43.94 ms │    no change │
│ QQuery 14 │ 31.18 / 31.96 ±0.79 / 33.48 ms │          31.14 / 31.42 ±0.23 / 31.79 ms │    no change │
│ QQuery 15 │ 41.22 / 42.31 ±1.00 / 43.96 ms │          41.48 / 41.95 ±0.37 / 42.49 ms │    no change │
│ QQuery 16 │ 16.33 / 16.62 ±0.27 / 17.03 ms │          16.99 / 17.22 ±0.28 / 17.78 ms │    no change │
│ QQuery 17 │ 71.98 / 72.40 ±0.32 / 72.84 ms │          72.24 / 73.48 ±1.17 / 75.70 ms │    no change │
│ QQuery 18 │ 75.94 / 76.15 ±0.29 / 76.71 ms │          76.39 / 77.24 ±0.76 / 78.59 ms │    no change │
│ QQuery 19 │ 35.17 / 35.55 ±0.30 / 35.92 ms │          35.05 / 36.27 ±1.43 / 39.00 ms │    no change │
│ QQuery 20 │ 36.81 / 37.12 ±0.19 / 37.37 ms │          36.67 / 37.46 ±0.40 / 37.80 ms │    no change │
│ QQuery 21 │ 64.05 / 65.62 ±0.93 / 66.91 ms │          64.66 / 65.39 ±0.69 / 66.68 ms │    no change │
│ QQuery 22 │ 16.83 / 17.20 ±0.29 / 17.56 ms │          17.63 / 19.05 ±1.77 / 22.20 ms │ 1.11x slower │
└───────────┴────────────────────────────────┴─────────────────────────────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 934.95ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 943.91ms │
│ Average Time (HEAD)                                    │  42.50ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │  42.91ms │
│ Queries Faster                                         │        0 │
│ Queries Slower                                         │        2 │
│ Queries with No Change                                 │       20 │
│ Queries with Failure                                   │        0 │
└────────────────────────────────────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

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

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 750.5 MiB
CPU user 23.5s
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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ perf_parquet-skip-filter-for-full-match ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.22 / 4.02 ±5.48 / 14.97 ms │            1.23 / 4.04 ±5.48 / 14.99 ms │     no change │
│ QQuery 1  │        13.11 / 13.32 ±0.13 / 13.50 ms │          13.02 / 13.22 ±0.17 / 13.43 ms │     no change │
│ QQuery 2  │        36.25 / 36.73 ±0.41 / 37.31 ms │          36.06 / 36.46 ±0.45 / 37.28 ms │     no change │
│ QQuery 3  │        30.74 / 31.34 ±0.62 / 32.44 ms │          30.67 / 30.89 ±0.29 / 31.42 ms │     no change │
│ QQuery 4  │     222.56 / 227.34 ±2.82 / 231.18 ms │       222.94 / 227.14 ±2.54 / 230.26 ms │     no change │
│ QQuery 5  │     272.41 / 274.49 ±1.39 / 276.67 ms │       270.63 / 272.08 ±1.89 / 275.69 ms │     no change │
│ QQuery 6  │           1.26 / 1.42 ±0.23 / 1.87 ms │             1.27 / 1.44 ±0.24 / 1.90 ms │     no change │
│ QQuery 7  │        13.89 / 14.11 ±0.12 / 14.24 ms │          13.95 / 14.26 ±0.20 / 14.57 ms │     no change │
│ QQuery 8  │     327.54 / 330.24 ±2.09 / 333.35 ms │       325.09 / 326.92 ±1.44 / 329.17 ms │     no change │
│ QQuery 9  │     450.50 / 462.89 ±7.88 / 474.51 ms │       457.21 / 466.95 ±7.45 / 480.28 ms │     no change │
│ QQuery 10 │        69.94 / 72.25 ±2.51 / 77.09 ms │          69.00 / 69.89 ±0.68 / 70.93 ms │     no change │
│ QQuery 11 │        80.93 / 82.62 ±1.15 / 84.01 ms │          80.66 / 82.01 ±1.19 / 83.79 ms │     no change │
│ QQuery 12 │     265.87 / 273.37 ±4.32 / 277.86 ms │       267.20 / 272.89 ±4.57 / 278.69 ms │     no change │
│ QQuery 13 │     370.60 / 383.34 ±8.97 / 393.59 ms │      367.43 / 377.43 ±15.28 / 407.74 ms │     no change │
│ QQuery 14 │     286.77 / 291.99 ±4.82 / 298.43 ms │       279.16 / 283.93 ±4.18 / 291.27 ms │     no change │
│ QQuery 15 │    273.75 / 283.72 ±14.89 / 312.94 ms │       267.81 / 276.84 ±9.97 / 296.18 ms │     no change │
│ QQuery 16 │     620.28 / 627.08 ±7.60 / 636.36 ms │       617.38 / 626.54 ±7.07 / 637.20 ms │     no change │
│ QQuery 17 │     624.05 / 631.25 ±7.03 / 643.62 ms │       627.40 / 639.74 ±8.07 / 648.83 ms │     no change │
│ QQuery 18 │ 1262.21 / 1280.24 ±15.15 / 1301.63 ms │   1263.98 / 1290.68 ±13.83 / 1303.27 ms │     no change │
│ QQuery 19 │       28.10 / 34.35 ±11.84 / 58.03 ms │         28.27 / 35.79 ±14.58 / 64.95 ms │     no change │
│ QQuery 20 │     514.17 / 520.72 ±7.14 / 533.03 ms │       521.19 / 526.89 ±5.39 / 535.52 ms │     no change │
│ QQuery 21 │     514.22 / 518.69 ±4.62 / 525.05 ms │       512.01 / 517.29 ±7.71 / 532.53 ms │     no change │
│ QQuery 22 │    980.99 / 993.87 ±9.81 / 1005.78 ms │     993.83 / 1003.01 ±9.86 / 1017.80 ms │     no change │
│ QQuery 23 │ 3066.12 / 3106.21 ±31.48 / 3147.33 ms │   3083.85 / 3126.62 ±35.08 / 3181.46 ms │     no change │
│ QQuery 24 │        41.43 / 46.36 ±7.10 / 60.47 ms │          41.75 / 44.28 ±3.51 / 51.23 ms │     no change │
│ QQuery 25 │     111.15 / 113.12 ±2.56 / 117.98 ms │       110.97 / 113.80 ±2.72 / 118.33 ms │     no change │
│ QQuery 26 │        41.38 / 45.82 ±4.94 / 54.90 ms │          41.69 / 46.55 ±5.00 / 53.57 ms │     no change │
│ QQuery 27 │     514.20 / 519.08 ±4.14 / 526.63 ms │       516.00 / 524.44 ±6.26 / 532.00 ms │     no change │
│ QQuery 28 │ 2900.02 / 2922.52 ±20.09 / 2960.21 ms │   2878.73 / 2905.88 ±22.58 / 2939.56 ms │     no change │
│ QQuery 29 │       41.17 / 49.58 ±10.16 / 63.61 ms │          41.40 / 42.04 ±0.63 / 42.86 ms │ +1.18x faster │
│ QQuery 30 │    301.97 / 323.95 ±26.80 / 374.02 ms │       300.27 / 306.21 ±4.96 / 313.31 ms │ +1.06x faster │
│ QQuery 31 │     286.03 / 294.49 ±9.93 / 312.22 ms │      281.56 / 296.34 ±10.41 / 309.47 ms │     no change │
│ QQuery 32 │    931.39 / 953.47 ±24.11 / 999.97 ms │     926.08 / 955.30 ±35.83 / 1018.59 ms │     no change │
│ QQuery 33 │ 1450.19 / 1483.11 ±24.87 / 1526.18 ms │   1454.76 / 1481.79 ±19.48 / 1514.16 ms │     no change │
│ QQuery 34 │ 1482.64 / 1498.07 ±17.79 / 1528.73 ms │   1477.81 / 1497.24 ±16.54 / 1521.04 ms │     no change │
│ QQuery 35 │    279.06 / 315.24 ±43.96 / 382.82 ms │      276.52 / 328.91 ±88.13 / 504.91 ms │     no change │
│ QQuery 36 │        66.70 / 70.45 ±4.93 / 79.71 ms │          69.09 / 72.88 ±3.63 / 78.50 ms │     no change │
│ QQuery 37 │        35.90 / 39.98 ±3.47 / 44.82 ms │          35.98 / 38.84 ±2.05 / 41.48 ms │     no change │
│ QQuery 38 │        43.12 / 50.26 ±4.01 / 54.23 ms │          40.37 / 41.72 ±1.12 / 43.56 ms │ +1.20x faster │
│ QQuery 39 │     151.77 / 159.28 ±7.73 / 171.32 ms │      134.02 / 149.03 ±10.30 / 163.44 ms │ +1.07x faster │
│ QQuery 40 │        14.26 / 18.67 ±4.84 / 24.71 ms │          14.70 / 16.39 ±1.65 / 19.39 ms │ +1.14x faster │
│ QQuery 41 │        14.13 / 15.51 ±2.07 / 19.61 ms │          13.98 / 14.03 ±0.04 / 14.09 ms │ +1.11x faster │
│ QQuery 42 │        13.21 / 14.41 ±1.87 / 18.13 ms │          13.05 / 13.40 ±0.28 / 13.79 ms │ +1.08x faster │
└───────────┴───────────────────────────────────────┴─────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 19428.95ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 19412.04ms │
│ Average Time (HEAD)                                    │   451.84ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │   451.44ms │
│ Queries Faster                                         │          7 │
│ Queries Slower                                         │          0 │
│ Queries with No Change                                 │         36 │
│ Queries with Failure                                   │          0 │
└────────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 100.0s
Peak memory 11.8 GiB
Avg memory 4.2 GiB
CPU user 994.6s
CPU sys 69.6s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 100.0s
Peak memory 11.1 GiB
Avg memory 4.4 GiB
CPU user 992.8s
CPU sys 69.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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                               HEAD ┃ perf_parquet-skip-filter-for-full-match ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │        5.00 / 5.46 ±0.84 / 7.14 ms │             4.99 / 5.53 ±0.93 / 7.38 ms │     no change │
│ QQuery 2  │     44.45 / 44.80 ±0.40 / 45.49 ms │          45.11 / 45.78 ±0.60 / 46.78 ms │     no change │
│ QQuery 3  │     26.84 / 27.19 ±0.30 / 27.74 ms │          27.76 / 28.19 ±0.27 / 28.60 ms │     no change │
│ QQuery 4  │  393.16 / 404.69 ±8.58 / 417.89 ms │      391.38 / 399.02 ±10.38 / 418.94 ms │     no change │
│ QQuery 5  │     72.23 / 73.95 ±0.95 / 75.09 ms │          73.43 / 73.66 ±0.26 / 74.16 ms │     no change │
│ QQuery 6  │     37.67 / 38.03 ±0.19 / 38.17 ms │          36.43 / 36.76 ±0.30 / 37.25 ms │     no change │
│ QQuery 7  │  119.12 / 122.99 ±4.20 / 130.64 ms │       117.33 / 123.47 ±5.92 / 133.35 ms │     no change │
│ QQuery 8  │     14.65 / 14.88 ±0.14 / 15.01 ms │          14.21 / 14.41 ±0.19 / 14.73 ms │     no change │
│ QQuery 9  │  120.85 / 126.03 ±3.35 / 129.44 ms │       124.93 / 130.38 ±4.47 / 134.92 ms │     no change │
│ QQuery 10 │     76.17 / 77.12 ±0.69 / 77.92 ms │          75.81 / 78.22 ±1.27 / 79.29 ms │     no change │
│ QQuery 11 │  253.16 / 257.00 ±3.07 / 261.02 ms │       255.07 / 256.98 ±2.15 / 260.47 ms │     no change │
│ QQuery 12 │     30.40 / 31.38 ±0.69 / 32.33 ms │          30.46 / 33.43 ±3.51 / 40.24 ms │  1.07x slower │
│ QQuery 13 │  118.20 / 119.17 ±1.56 / 122.28 ms │       120.90 / 122.69 ±2.30 / 127.22 ms │     no change │
│ QQuery 14 │  405.97 / 410.44 ±4.24 / 417.90 ms │      416.02 / 428.32 ±13.71 / 453.27 ms │     no change │
│ QQuery 15 │     23.67 / 25.00 ±1.69 / 28.32 ms │          24.94 / 25.45 ±0.35 / 25.90 ms │     no change │
│ QQuery 16 │        6.22 / 6.35 ±0.19 / 6.74 ms │            6.90 / 9.44 ±4.90 / 19.24 ms │  1.49x slower │
│ QQuery 17 │  115.28 / 116.93 ±2.31 / 121.45 ms │       116.89 / 121.48 ±5.49 / 132.03 ms │     no change │
│ QQuery 18 │  199.15 / 204.46 ±5.48 / 215.02 ms │       198.90 / 202.72 ±2.81 / 206.56 ms │     no change │
│ QQuery 19 │     40.75 / 41.24 ±0.48 / 42.07 ms │          39.50 / 40.09 ±0.75 / 41.57 ms │     no change │
│ QQuery 20 │     40.41 / 41.19 ±0.91 / 42.96 ms │          42.05 / 44.63 ±4.42 / 53.43 ms │  1.08x slower │
│ QQuery 21 │     20.68 / 22.79 ±3.61 / 29.99 ms │          20.37 / 21.52 ±1.81 / 25.12 ms │ +1.06x faster │
│ QQuery 22 │     65.29 / 66.41 ±1.11 / 68.53 ms │          61.53 / 62.44 ±0.59 / 63.34 ms │ +1.06x faster │
│ QQuery 23 │ 403.64 / 423.28 ±14.81 / 445.34 ms │      397.97 / 423.07 ±14.55 / 438.98 ms │     no change │
│ QQuery 24 │  413.63 / 420.78 ±7.01 / 431.68 ms │      416.54 / 434.35 ±10.00 / 444.76 ms │     no change │
│ QQuery 25 │  115.29 / 119.04 ±4.28 / 127.03 ms │       117.73 / 121.76 ±6.27 / 134.16 ms │     no change │
│ QQuery 26 │     80.60 / 81.48 ±0.88 / 83.16 ms │          82.22 / 83.18 ±1.22 / 85.43 ms │     no change │
│ QQuery 27 │        5.85 / 6.04 ±0.20 / 6.43 ms │             5.97 / 6.10 ±0.20 / 6.49 ms │     no change │
│ QQuery 28 │     74.95 / 81.09 ±4.86 / 87.70 ms │          75.62 / 77.16 ±1.07 / 78.96 ms │     no change │
│ QQuery 29 │  145.78 / 148.53 ±3.73 / 155.86 ms │       146.98 / 148.87 ±1.29 / 150.29 ms │     no change │
│ QQuery 30 │     33.16 / 35.25 ±2.19 / 39.47 ms │          33.41 / 36.56 ±3.79 / 43.19 ms │     no change │
│ QQuery 31 │  130.07 / 133.98 ±6.32 / 146.56 ms │       127.60 / 129.45 ±2.19 / 133.68 ms │     no change │
│ QQuery 32 │     21.19 / 21.41 ±0.19 / 21.73 ms │          21.87 / 22.30 ±0.37 / 22.93 ms │     no change │
│ QQuery 33 │     38.75 / 39.71 ±0.80 / 40.70 ms │          40.45 / 42.44 ±2.71 / 47.69 ms │  1.07x slower │
│ QQuery 34 │     11.08 / 11.30 ±0.16 / 11.51 ms │          11.26 / 12.23 ±1.05 / 14.02 ms │  1.08x slower │
│ QQuery 35 │     83.64 / 86.71 ±4.13 / 94.79 ms │          87.83 / 88.63 ±0.52 / 89.18 ms │     no change │
│ QQuery 36 │        5.37 / 5.55 ±0.18 / 5.88 ms │             5.99 / 6.14 ±0.16 / 6.43 ms │  1.11x slower │
│ QQuery 37 │        6.81 / 6.92 ±0.08 / 7.03 ms │             7.44 / 7.54 ±0.08 / 7.66 ms │  1.09x slower │
│ QQuery 38 │     77.84 / 78.58 ±0.88 / 80.26 ms │          82.75 / 85.44 ±4.34 / 94.04 ms │  1.09x slower │
│ QQuery 39 │    90.06 / 96.10 ±5.56 / 104.96 ms │          94.20 / 95.96 ±1.33 / 98.23 ms │     no change │
│ QQuery 40 │     23.30 / 23.76 ±0.48 / 24.66 ms │          24.95 / 25.24 ±0.19 / 25.53 ms │  1.06x slower │
│ QQuery 41 │     12.41 / 12.60 ±0.18 / 12.92 ms │          13.39 / 13.50 ±0.07 / 13.58 ms │  1.07x slower │
│ QQuery 42 │     22.89 / 23.73 ±0.47 / 24.35 ms │          24.14 / 24.46 ±0.21 / 24.79 ms │     no change │
│ QQuery 43 │        4.48 / 4.59 ±0.19 / 4.98 ms │             4.94 / 5.09 ±0.15 / 5.34 ms │  1.11x slower │
│ QQuery 44 │        8.70 / 8.81 ±0.06 / 8.88 ms │             9.85 / 9.91 ±0.04 / 9.96 ms │  1.13x slower │
│ QQuery 45 │     25.69 / 26.29 ±0.44 / 26.78 ms │          28.50 / 31.93 ±3.12 / 37.71 ms │  1.21x slower │
│ QQuery 46 │     13.31 / 13.82 ±0.62 / 14.94 ms │          13.66 / 14.23 ±0.50 / 15.04 ms │     no change │
│ QQuery 47 │  224.81 / 230.74 ±6.81 / 239.71 ms │      227.27 / 252.16 ±21.00 / 286.77 ms │  1.09x slower │
│ QQuery 48 │  127.34 / 129.06 ±2.33 / 133.36 ms │       128.59 / 134.00 ±6.84 / 147.10 ms │     no change │
│ QQuery 49 │  121.24 / 123.00 ±2.02 / 126.00 ms │       121.80 / 125.29 ±5.00 / 135.22 ms │     no change │
│ QQuery 50 │  124.78 / 126.06 ±1.52 / 128.98 ms │       125.17 / 133.05 ±8.20 / 145.20 ms │  1.06x slower │
│ QQuery 51 │  102.65 / 106.52 ±3.50 / 112.75 ms │       101.06 / 103.31 ±2.24 / 106.69 ms │     no change │
│ QQuery 52 │     24.01 / 24.31 ±0.27 / 24.64 ms │          24.70 / 27.31 ±4.90 / 37.10 ms │  1.12x slower │
│ QQuery 53 │     31.14 / 31.46 ±0.21 / 31.66 ms │          31.25 / 32.15 ±0.91 / 33.67 ms │     no change │
│ QQuery 54 │     30.47 / 32.06 ±1.50 / 34.35 ms │          29.87 / 31.98 ±1.34 / 33.42 ms │     no change │
│ QQuery 55 │     23.64 / 26.47 ±5.45 / 37.38 ms │          23.23 / 23.63 ±0.21 / 23.81 ms │ +1.12x faster │
│ QQuery 56 │     36.44 / 37.41 ±0.76 / 38.76 ms │          34.52 / 34.94 ±0.42 / 35.74 ms │ +1.07x faster │
│ QQuery 57 │  146.52 / 148.61 ±1.49 / 150.83 ms │       142.74 / 148.53 ±7.42 / 162.83 ms │     no change │
│ QQuery 58 │     77.18 / 79.34 ±3.23 / 85.74 ms │          74.62 / 75.13 ±0.52 / 76.11 ms │ +1.06x faster │
│ QQuery 59 │     83.86 / 85.09 ±0.94 / 86.21 ms │          81.93 / 86.91 ±4.31 / 94.72 ms │     no change │
│ QQuery 60 │     39.75 / 40.97 ±1.59 / 44.02 ms │          38.94 / 39.25 ±0.30 / 39.65 ms │     no change │
│ QQuery 61 │     12.69 / 14.98 ±4.33 / 23.65 ms │          11.77 / 11.96 ±0.20 / 12.31 ms │ +1.25x faster │
│ QQuery 62 │     45.24 / 47.84 ±1.78 / 49.97 ms │          44.00 / 44.92 ±0.69 / 45.75 ms │ +1.07x faster │
│ QQuery 63 │     32.09 / 32.59 ±0.34 / 33.06 ms │          31.09 / 31.43 ±0.25 / 31.82 ms │     no change │
│ QQuery 64 │  710.80 / 723.36 ±9.77 / 738.44 ms │      704.77 / 722.74 ±12.99 / 741.74 ms │     no change │
│ QQuery 65 │  155.66 / 161.96 ±3.72 / 165.98 ms │       154.91 / 161.29 ±5.58 / 169.76 ms │     no change │
│ QQuery 66 │     67.62 / 72.04 ±5.13 / 81.76 ms │          66.85 / 67.80 ±1.43 / 70.63 ms │ +1.06x faster │
│ QQuery 67 │  254.78 / 270.82 ±9.35 / 282.03 ms │       261.07 / 263.10 ±2.01 / 266.91 ms │     no change │
│ QQuery 68 │     13.09 / 13.22 ±0.09 / 13.32 ms │          13.26 / 13.55 ±0.22 / 13.86 ms │     no change │
│ QQuery 69 │     71.59 / 74.62 ±2.34 / 77.97 ms │          74.11 / 76.61 ±3.82 / 84.16 ms │     no change │
│ QQuery 70 │ 125.37 / 135.50 ±18.45 / 172.36 ms │       126.41 / 130.22 ±5.45 / 140.85 ms │     no change │
│ QQuery 71 │     33.23 / 33.72 ±0.44 / 34.39 ms │          33.66 / 35.21 ±1.88 / 38.89 ms │     no change │
│ QQuery 72 │  215.80 / 219.94 ±4.12 / 225.70 ms │       223.09 / 226.91 ±3.54 / 233.32 ms │     no change │
│ QQuery 73 │      9.78 / 10.04 ±0.21 / 10.29 ms │          10.78 / 11.09 ±0.29 / 11.62 ms │  1.11x slower │
│ QQuery 74 │  157.79 / 163.87 ±9.14 / 181.97 ms │       168.07 / 173.05 ±3.59 / 177.20 ms │  1.06x slower │
│ QQuery 75 │ 187.39 / 194.81 ±12.17 / 219.06 ms │       194.70 / 200.92 ±9.02 / 218.84 ms │     no change │
│ QQuery 76 │     42.45 / 42.66 ±0.15 / 42.86 ms │          43.78 / 44.99 ±0.89 / 46.46 ms │  1.05x slower │
│ QQuery 77 │     62.48 / 67.06 ±7.96 / 82.97 ms │          65.69 / 67.22 ±2.70 / 72.60 ms │     no change │
│ QQuery 78 │  150.19 / 156.38 ±3.77 / 160.36 ms │       155.40 / 161.62 ±6.47 / 173.67 ms │     no change │
│ QQuery 79 │     68.30 / 68.75 ±0.40 / 69.31 ms │          68.57 / 70.13 ±1.57 / 72.62 ms │     no change │
│ QQuery 80 │     78.77 / 80.24 ±0.98 / 81.55 ms │          77.14 / 78.71 ±2.53 / 83.71 ms │     no change │
│ QQuery 81 │     28.71 / 29.62 ±0.48 / 30.03 ms │          28.45 / 29.34 ±1.57 / 32.48 ms │     no change │
│ QQuery 82 │    39.78 / 47.63 ±12.46 / 72.28 ms │          39.32 / 40.76 ±0.97 / 42.37 ms │ +1.17x faster │
│ QQuery 83 │     37.58 / 38.14 ±0.42 / 38.85 ms │          36.81 / 37.21 ±0.40 / 37.95 ms │     no change │
│ QQuery 84 │     31.26 / 31.76 ±0.30 / 32.12 ms │          30.71 / 31.02 ±0.19 / 31.31 ms │     no change │
│ QQuery 85 │ 155.80 / 163.53 ±11.12 / 185.32 ms │       153.19 / 159.92 ±6.59 / 172.03 ms │     no change │
│ QQuery 86 │     31.43 / 31.84 ±0.32 / 32.33 ms │          30.43 / 30.78 ±0.29 / 31.30 ms │     no change │
│ QQuery 87 │     82.64 / 83.99 ±0.90 / 85.33 ms │          79.08 / 81.13 ±2.13 / 84.64 ms │     no change │
│ QQuery 88 │     69.84 / 72.21 ±2.24 / 76.29 ms │          69.07 / 74.18 ±3.14 / 78.66 ms │     no change │
│ QQuery 89 │     44.19 / 45.20 ±0.83 / 46.70 ms │          43.30 / 43.92 ±0.53 / 44.90 ms │     no change │
│ QQuery 90 │     18.32 / 18.53 ±0.13 / 18.70 ms │          18.60 / 22.50 ±5.90 / 34.13 ms │  1.21x slower │
│ QQuery 91 │     50.95 / 51.71 ±1.05 / 53.76 ms │          51.85 / 53.65 ±1.62 / 56.44 ms │     no change │
│ QQuery 92 │     29.54 / 33.91 ±6.18 / 45.81 ms │          29.75 / 30.59 ±0.84 / 31.77 ms │ +1.11x faster │
│ QQuery 93 │     53.90 / 55.19 ±0.79 / 55.93 ms │          52.70 / 54.54 ±1.04 / 55.76 ms │     no change │
│ QQuery 94 │     36.92 / 37.95 ±0.87 / 39.55 ms │          36.34 / 37.08 ±0.47 / 37.66 ms │     no change │
│ QQuery 95 │  109.22 / 112.96 ±5.03 / 122.82 ms │       111.55 / 115.35 ±3.02 / 120.74 ms │     no change │
│ QQuery 96 │     27.48 / 27.98 ±0.74 / 29.45 ms │          27.24 / 27.99 ±0.59 / 28.72 ms │     no change │
│ QQuery 97 │     49.51 / 51.35 ±2.34 / 55.48 ms │          49.86 / 51.72 ±1.38 / 53.14 ms │     no change │
│ QQuery 98 │     39.76 / 40.87 ±0.64 / 41.71 ms │          40.11 / 40.71 ±0.51 / 41.49 ms │     no change │
│ QQuery 99 │     67.79 / 68.17 ±0.23 / 68.40 ms │          68.87 / 69.17 ±0.30 / 69.56 ms │     no change │
└───────────┴────────────────────────────────────┴─────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 9034.88ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 9122.79ms │
│ Average Time (HEAD)                                    │   91.26ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │   92.15ms │
│ Queries Faster                                         │        10 │
│ Queries Slower                                         │        20 │
│ Queries with No Change                                 │        69 │
│ Queries with Failure                                   │         0 │
└────────────────────────────────────────────────────────┴───────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 50.0s
Peak memory 1.9 GiB
Avg memory 1.2 GiB
CPU user 128.1s
CPU sys 6.6s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 50.0s
Peak memory 1.8 GiB
Avg memory 1.1 GiB
CPU user 128.4s
CPU sys 6.3s
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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ perf_parquet-skip-filter-for-full-match ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.24 / 4.04 ±5.54 / 15.12 ms │            1.24 / 3.98 ±5.42 / 14.83 ms │     no change │
│ QQuery 1  │        13.27 / 13.42 ±0.08 / 13.50 ms │          13.22 / 13.43 ±0.22 / 13.79 ms │     no change │
│ QQuery 2  │        36.57 / 36.93 ±0.25 / 37.16 ms │          36.66 / 36.91 ±0.30 / 37.50 ms │     no change │
│ QQuery 3  │        30.79 / 31.80 ±1.09 / 33.69 ms │          31.05 / 31.25 ±0.15 / 31.47 ms │     no change │
│ QQuery 4  │     221.52 / 227.79 ±3.37 / 231.70 ms │       223.93 / 226.38 ±1.66 / 228.91 ms │     no change │
│ QQuery 5  │     271.41 / 274.71 ±3.56 / 281.58 ms │       269.70 / 273.04 ±2.30 / 276.27 ms │     no change │
│ QQuery 6  │           1.27 / 1.41 ±0.22 / 1.84 ms │             1.26 / 1.41 ±0.23 / 1.85 ms │     no change │
│ QQuery 7  │        16.82 / 17.15 ±0.19 / 17.35 ms │          16.80 / 16.92 ±0.11 / 17.11 ms │     no change │
│ QQuery 8  │     322.20 / 327.67 ±3.88 / 332.49 ms │       324.88 / 327.26 ±2.15 / 331.16 ms │     no change │
│ QQuery 9  │     457.20 / 464.80 ±6.70 / 473.36 ms │      452.46 / 463.88 ±14.67 / 491.82 ms │     no change │
│ QQuery 10 │        93.76 / 94.17 ±0.28 / 94.52 ms │          94.24 / 94.67 ±0.23 / 94.93 ms │     no change │
│ QQuery 11 │     105.43 / 105.96 ±0.60 / 107.07 ms │       104.92 / 108.03 ±3.43 / 114.22 ms │     no change │
│ QQuery 12 │     296.14 / 300.55 ±3.33 / 305.19 ms │       300.93 / 304.37 ±3.04 / 309.77 ms │     no change │
│ QQuery 13 │     404.07 / 414.25 ±8.42 / 422.64 ms │      399.94 / 422.16 ±13.80 / 438.41 ms │     no change │
│ QQuery 14 │     313.68 / 326.38 ±9.06 / 340.69 ms │       313.57 / 321.07 ±4.73 / 327.04 ms │     no change │
│ QQuery 15 │     269.50 / 273.56 ±3.13 / 278.84 ms │      270.17 / 284.06 ±14.44 / 304.34 ms │     no change │
│ QQuery 16 │     605.15 / 617.39 ±7.76 / 628.03 ms │       613.10 / 620.44 ±4.85 / 626.38 ms │     no change │
│ QQuery 17 │    612.96 / 623.68 ±10.89 / 643.49 ms │      624.00 / 635.56 ±10.79 / 652.40 ms │     no change │
│ QQuery 18 │ 1250.98 / 1265.26 ±12.57 / 1288.23 ms │   1249.64 / 1265.53 ±11.21 / 1278.68 ms │     no change │
│ QQuery 19 │        29.36 / 32.29 ±4.89 / 42.00 ms │          29.65 / 30.20 ±0.49 / 31.08 ms │ +1.07x faster │
│ QQuery 20 │     515.79 / 524.49 ±7.69 / 536.61 ms │       513.74 / 520.96 ±3.75 / 524.24 ms │     no change │
│ QQuery 21 │     564.61 / 573.37 ±6.11 / 581.68 ms │      568.59 / 586.54 ±18.29 / 620.93 ms │     no change │
│ QQuery 22 │    782.61 / 793.67 ±11.65 / 814.18 ms │       780.82 / 787.26 ±6.35 / 798.99 ms │     no change │
│ QQuery 23 │     137.30 / 141.31 ±6.31 / 153.68 ms │       134.48 / 142.29 ±8.87 / 158.92 ms │     no change │
│ QQuery 24 │        45.59 / 53.08 ±9.21 / 67.87 ms │          45.70 / 46.03 ±0.28 / 46.38 ms │ +1.15x faster │
│ QQuery 25 │     143.84 / 146.19 ±1.87 / 149.40 ms │       145.81 / 149.04 ±1.80 / 151.39 ms │     no change │
│ QQuery 26 │        49.01 / 50.43 ±2.24 / 54.90 ms │          49.48 / 50.75 ±1.61 / 53.80 ms │     no change │
│ QQuery 27 │     568.28 / 575.33 ±3.87 / 579.56 ms │       558.68 / 568.55 ±9.62 / 582.34 ms │     no change │
│ QQuery 28 │ 2894.92 / 2936.84 ±39.42 / 3003.34 ms │   2894.60 / 2940.05 ±42.64 / 3004.13 ms │     no change │
│ QQuery 29 │        41.52 / 47.77 ±7.45 / 58.27 ms │          41.75 / 42.39 ±0.63 / 43.21 ms │ +1.13x faster │
│ QQuery 30 │     308.04 / 312.96 ±4.80 / 320.74 ms │       306.50 / 314.58 ±8.66 / 327.01 ms │     no change │
│ QQuery 31 │     292.48 / 302.11 ±7.96 / 311.87 ms │       285.38 / 300.25 ±8.25 / 309.68 ms │     no change │
│ QQuery 32 │    915.76 / 955.80 ±26.34 / 988.83 ms │      931.50 / 951.23 ±16.21 / 973.01 ms │     no change │
│ QQuery 33 │ 1422.80 / 1475.57 ±47.84 / 1561.33 ms │   1445.32 / 1472.91 ±25.96 / 1513.31 ms │     no change │
│ QQuery 34 │ 1475.71 / 1492.87 ±14.83 / 1513.78 ms │   1464.01 / 1519.68 ±58.43 / 1607.67 ms │     no change │
│ QQuery 35 │    281.10 / 304.26 ±27.14 / 355.33 ms │      276.93 / 313.12 ±39.02 / 388.57 ms │     no change │
│ QQuery 36 │        69.37 / 76.86 ±8.53 / 92.41 ms │          64.86 / 69.51 ±5.24 / 79.57 ms │ +1.11x faster │
│ QQuery 37 │        36.24 / 38.41 ±3.53 / 45.44 ms │          37.35 / 45.92 ±8.26 / 59.02 ms │  1.20x slower │
│ QQuery 38 │        37.07 / 41.07 ±3.44 / 46.65 ms │          35.73 / 42.67 ±4.71 / 49.93 ms │     no change │
│ QQuery 39 │    126.20 / 139.48 ±11.74 / 159.44 ms │       137.33 / 144.92 ±6.77 / 155.63 ms │     no change │
│ QQuery 40 │        18.13 / 18.66 ±0.35 / 19.22 ms │          18.80 / 26.41 ±6.28 / 34.49 ms │  1.42x slower │
│ QQuery 41 │        16.93 / 20.36 ±4.01 / 26.61 ms │          16.71 / 18.99 ±4.24 / 27.45 ms │ +1.07x faster │
│ QQuery 42 │        14.41 / 19.89 ±8.01 / 35.32 ms │          14.39 / 16.99 ±4.76 / 26.50 ms │ +1.17x faster │
└───────────┴───────────────────────────────────────┴─────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 16493.97ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 16551.54ms │
│ Average Time (HEAD)                                    │   383.58ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │   384.92ms │
│ 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 85.0s
Peak memory 10.5 GiB
Avg memory 4.7 GiB
CPU user 841.7s
CPU sys 56.9s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 85.0s
Peak memory 12.2 GiB
Avg memory 4.8 GiB
CPU user 839.7s
CPU sys 58.7s
Peak spill 0 B

File an issue against this benchmark runner

@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

run benchmark sort_tpch

env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: true

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5014143687-1152-m9k9h 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 perf/parquet-skip-filter-for-full-match (a3047ed) to 67947b6 (merge-base) diff using: sort_tpch
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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark sort_tpch1.json
--------------------
┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query ┃                               HEAD ┃ perf_parquet-skip-filter-for-full-match ┃    Change ┃
┡━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Q1    │  122.91 / 124.25 ±1.17 / 126.25 ms │       121.25 / 122.40 ±0.95 / 123.83 ms │ no change │
│ Q2    │  106.05 / 107.38 ±1.34 / 109.75 ms │       105.87 / 106.84 ±1.02 / 108.42 ms │ no change │
│ Q3    │  639.37 / 643.51 ±3.45 / 648.44 ms │       633.04 / 635.12 ±2.01 / 638.89 ms │ no change │
│ Q4    │  193.52 / 197.53 ±3.03 / 201.90 ms │       192.84 / 199.03 ±4.73 / 204.40 ms │ no change │
│ Q5    │  258.97 / 259.76 ±0.55 / 260.69 ms │       259.05 / 260.84 ±1.50 / 263.62 ms │ no change │
│ Q6    │  272.21 / 273.05 ±0.57 / 273.95 ms │       272.86 / 274.67 ±1.95 / 278.34 ms │ no change │
│ Q7    │  445.35 / 448.59 ±2.36 / 452.21 ms │       446.31 / 448.37 ±1.51 / 450.24 ms │ no change │
│ Q8    │ 313.55 / 328.30 ±10.97 / 343.09 ms │       314.35 / 322.37 ±7.79 / 336.22 ms │ no change │
│ Q9    │ 335.52 / 351.19 ±12.97 / 367.66 ms │      331.26 / 347.06 ±11.24 / 363.23 ms │ no change │
│ Q10   │  483.08 / 492.32 ±6.45 / 498.27 ms │       481.76 / 485.58 ±2.83 / 490.47 ms │ no change │
│ Q11   │ 249.70 / 262.63 ±12.90 / 283.74 ms │      248.96 / 260.64 ±15.10 / 290.43 ms │ no change │
└───────┴────────────────────────────────────┴─────────────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 3488.51ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 3462.92ms │
│ Average Time (HEAD)                                    │  317.14ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │  314.81ms │
│ Queries Faster                                         │         0 │
│ Queries Slower                                         │         0 │
│ Queries with No Change                                 │        11 │
│ Queries with Failure                                   │         0 │
└────────────────────────────────────────────────────────┴───────────┘

Resource Usage

sort_tpch — base (merge-base)

Metric Value
Wall time 20.0s
Peak memory 2.6 GiB
Avg memory 1.2 GiB
CPU user 63.7s
CPU sys 2.7s
Peak spill 0 B

sort_tpch — branch

Metric Value
Wall time 20.0s
Peak memory 2.5 GiB
Avg memory 1.2 GiB
CPU user 63.5s
CPU sys 2.9s
Peak spill 0 B

File an issue against this benchmark runner

@zhuqi-lucas
zhuqi-lucas force-pushed the perf/parquet-skip-filter-for-full-match branch from a3047ed to fea0264 Compare July 31, 2026 14:13
Builds on the `peek_next_row_group` API landed in apache/arrow-rs#10158.
When Parquet stats prove that every row of a row group already satisfies
the pushdown predicate (`fully_matched`), running the per-row `RowFilter`
inside that row group is pure overhead — every row passes anyway. This
change installs an *empty* `RowFilter` on fully-matched runs and only
pays the row-level machinery on RGs that still need filtering.

* `access_plan.rs` — `ParquetAccessPlan` now tracks per-RG
  `fully_matched` state, produced during static pruning.
* `metrics.rs` — new `row_filter_skipped_fully_matched` counter to
  observe how often the toggle fires.
* `push_decoder.rs` — `RgPlanEntry` carries the per-RG toggle;
  `RowFilterContext` swaps between the real filter (from the
  `prebuild_row_filter_candidates` cache) and an empty filter as the
  decoder crosses row-group boundaries.
* `row_filter.rs` — split `build_row_filter` into `prebuild_*` and
  `row_filter_from_prebuilt`: the expensive tree walk + candidate
  construction runs once per file, and the cheap per-RG bind runs at
  each toggle. Preserves the existing public `build_row_filter` API for
  non-toggling callers.
* `opener/mod.rs` — wires the prebuilt cache into the decoder builder;
  skips page-index loading for fully-matched RGs (their per-row filter
  is a no-op, so page pruning saves nothing).
* `sort.rs` — sort-order-aware RG reorder preserves the per-RG toggle
  through reordering.

* `fully_matched_rgs_skip_row_filter` (`dynamic_row_group_pruning.rs`) —
  4 RGs of 3 rows each, predicate `v >= 3` makes RGs 1..=3 fully
  matched. Asserts: (a) results are correct, (b)
  `row_filter_skipped_fully_matched` fires at least once at the
  RG 0 → RG 1 boundary.
* All 6 pre-existing `dynamic_row_group_pruning` tests still pass.
* Full `datasource-parquet` lib suite (158 tests) passes.
…t_file_name handling lost in rebase

Three fixes on top of the rebase onto latest main:

1. row_filter.rs carried a stale pre-apache#23638 copy of the column-resolution
   machinery (ParquetReadPlan, PushdownChecker, StructFieldAccess,
   build_filter_schema, etc.) that main has since moved into
   projection_read_plan.rs. Rebuilt the file on main's shared-module
   version, keeping only this PR's real additions
   (PrebuiltRowFilterCandidate, prebuild_row_filter_candidates,
   row_filter_from_prebuilt, and the RowFilterGenerator removal):
   2194 → 1483 lines, -798 net. The stray "strinrg" typo lived in the
   deleted copy.

2. The rebase silently dropped main's input_file_name() handling in
   ParquetMorselizer (import, the per-file literal rewrite in open(),
   and the test_input_file_name_projection test) because this PR's
   restructure of open() overlapped the region apache#23638 later touched.
   Restored all three; the test passes again.

3. metrics: the row_filter_skipped_fully_matched doc claimed to count
   row groups, but the counter increments once per suppression event
   (a run of consecutive fully-matched RGs shares a single toggle).
   Doc now states the actual semantics.

Verified: 158 datasource-parquet tests pass (with PARQUET_TEST_DATA),
cargo doc clean, clippy clean on touched files.
…redAccessPlan::new, regenerate slt for new metric, fix redundant doc link
@zhuqi-lucas
zhuqi-lucas force-pushed the perf/parquet-skip-filter-for-full-match branch from fea0264 to 2445739 Compare August 6, 2026 13:30
@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

Update on the split:

On PR 2 (prebuild once per file) — I don't think it stands alone, and I'd suggest folding the prebuild into PR 4 (#23696) instead. The perf premise doesn't hold on current main: ParquetPushDecoder::into_builder() (parquet 59.2.0) carries the RowFilter across the rebuild — builder_from_remaining preserves filter — so the opener builds the filter once and it survives every runtime-prune into_builder().with_row_groups().build(). There is no per-row-group filter rebuild on main today, so prebuild_row_filter_candidates / row_filter_from_prebuilt would have no consumer and save nothing.

The only per-RG rebuild is #23696's own fully_matched → not-fully-matched toggle. So prebuilding-once only pays off with that toggle, and it gives PR 4 a clean, attributable perf story (prebuild + toggle together) rather than landing unused machinery in a standalone PR 2. I'll still reimplement build_row_filter on top of the two functions there so there's a single conjunct-split/order/metric path (the drift concern you raised), and pick up the lazy-metric registration + the test_input_file_name_projection revert + the single Vec<{index, fully_matched}> in the same PR.

Does folding PR 2 into PR 4 sound right to you? If so I'll rebase #23696 onto main + #24572 once #24572 lands.

@adriangb

Copy link
Copy Markdown
Contributor

Does folding PR 2 into PR 4 sound right to you? If so I'll rebase #23696 onto main + #24572 once #24572 lands.

Let's do the rebase and have a look!

…ilter-for-full-match

# Conflicts:
#	datafusion/datasource-parquet/src/access_plan.rs
#	datafusion/datasource-parquet/src/opener/mod.rs
#	datafusion/datasource-parquet/src/push_decoder.rs
#	datafusion/datasource-parquet/src/sort.rs
#	datafusion/sqllogictest/test_files/dynamic_filter_pushdown_config.slt
… slt churn)

Follow the add_page_index_pages_skipped_by_fully_matched pattern from apache#21637:
the counter is registered only when a suppression actually fires, via a
RowFilterSkippedFullyMatchedMetric holder that keeps a live Count handle after
first registration (the stream records suppressions as they happen, so a
fire-once helper is not enough).

- ParquetFileMetrics loses the eager pub field (no public API change, no
  semver flag).
- 41 zero-valued row_filter_skipped_fully_matched=0 entries disappear from
  EXPLAIN ANALYZE baselines across push_down_filter_parquet.slt,
  explain_analyze.slt and dynamic_filter_pushdown_config.slt; the =1
  assertions in dynamic_row_group_pruning.slt remain.

Suggested by @adriangb in the apache#23696 decomposition review.
The test was byte-identical but had moved ~60 lines during an earlier rebase,
inflating the diff. Restore it to its position on main.
…ilter-for-full-match

# Conflicts:
#	datafusion/datasource-parquet/src/opener/mod.rs
zhuqi-lucas added a commit to zhuqi-lucas/arrow-datafusion that referenced this pull request Aug 22, 2026
…r-setup block (apache#24572)

## Which issue does this PR close?

- Closes apache#24286.

## Rationale for this change

Split out from apache#23696 (per @adriangb's [decomposition
proposal](apache#23696 (comment)),
PR 3).

The decoder-setup block in the opener returns a bare `(decoder, rg_plan,
has_row_selection)` tuple. Giving it a named `InitialDecoderState`
struct keeps the values carried out of the block self-documenting, and
means the follow-up feature PR (apache#23696) adds fields to a named struct
instead of reshaping a positional tuple.

## What changes are included in this PR?

- `push_decoder.rs`: new `pub(crate) struct InitialDecoderState {
decoder, rg_plan, has_row_selection }`.
- `opener/mod.rs`: the decoder-setup block returns `InitialDecoderState
{ .. }` and is destructured back into the same locals.

Pure refactor, no behavior change.

## Are these changes tested?

Covered by the existing `dynamic_row_group_pruning` integration tests
(they drive the opener path); all pass. `clippy --all-targets
--all-features -D warnings` is clean.

## Are there any user-facing changes?

No.
… + row_filter_from_prebuilt

One path now splits conjuncts, orders candidates (sort_unstable_by_key on
required_bytes under reorder_predicates), and wires metrics (every predicate
shares pushdown_rows_pruned, only the last counts pushdown_rows_matched) —
the once-per-file open path and the per-row-group RowFilterContext rebuild
path can no longer drift.

DatafusionArrowPredicate::try_new becomes a #[cfg(test)] convenience; the
production paths construct predicates from prebuilt candidates.

Folds the PR 2 piece of @adriangb's decomposition into this PR: on main the
prebuilt list would have no consumer (into_builder preserves the RowFilter
across runtime-prune rebuilds), so it lands together with the per-RG toggle
that consumes it.
@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

@adriangb done — this PR is now reshaped per your proposal:

Net: 11 files / +844 −207 → 8 files / +636 −170, with zero churn in unrelated slt baselines. PR description updated. Ready for another look.

Comment on lines +678 to +684
None => {
// Filter could not be rebuilt; install an empty filter
// so the decoder runs unfiltered for this run rather
// than failing.
builder = builder.with_row_filter(RowFilter::new(vec![]));
self.filter_installed = false;
}

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.

Could we make build_row_filter return a RowFilter instead of an Option when self.prebuilt.is_empty() and make this arm unreacheable?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks, done in dbdfceebuild_row_filter now returns RowFilter directly (try_new guarantees a non-empty prebuilt list), the unreachable arm and PrebuiltRowFilterCandidateList::is_empty are gone.

Comment on lines +1555 to +1558
let initial_filter = precomputed_context
.as_ref()
.and_then(|ctx| ctx.build_row_filter());
let row_filter_context = precomputed_context;

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 discarded if the first row group is fully matched - can we construct it lazily?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks, done in dbdfcee — the initial filter is now built lazily in the non-fully-matched branch only, nothing is constructed just to be discarded.

/// Extracting this from [`build_row_filter`] lets callers pay the tree-walk +
/// column-resolution + `reassign_expr_columns` cost **once per file** instead
/// of once per row group, which is the hot path for
/// [`RowFilterContext::build`](crate::push_decoder::RowFilterContext) rebuilds

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.

I think the method is build_row_filter not build

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks, fixed in dbdfcee.

@adriangb

Copy link
Copy Markdown
Contributor

run benchmark parquet_row_filter_skip

@adriangb

Copy link
Copy Markdown
Contributor

run benchmark parquet_row_filter_skip

env:
  RG_SIZE: "100000"

@adriangb

Copy link
Copy Markdown
Contributor

run benchmark clickbench_pushdown clickbench_sorted

env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5383379595-1882-x7cbb 6.12.85+ #1 SMP Sat Jun 27 09:31:30 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 perf/parquet-skip-filter-for-full-match (5a173c9) to fc15e25 (merge-base) diff

Run configuration
run benchmark parquet_row_filter_skip

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-c5383379669-1881-frrn7 6.12.85+ #1 SMP Sat Jun 27 09:31:30 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 perf/parquet-skip-filter-for-full-match (5a173c9) to fc15e25 (merge-base) diff

Run configuration
run benchmark parquet_row_filter_skip
env:
  RG_SIZE: "100000"

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-c5383379743-1880-tg8t8 6.12.85+ #1 SMP Sat Jun 27 09:31:30 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 perf/parquet-skip-filter-for-full-match (5a173c9) to fc15e25 (merge-base) diff

Run configuration
run benchmark clickbench_sorted
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"

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-c5383379743-1879-bkjrk 6.12.85+ #1 SMP Sat Jun 27 09:31:30 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 perf/parquet-skip-filter-for-full-match (5a173c9) to fc15e25 (merge-base) diff

Run configuration
run benchmark clickbench_pushdown
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"

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)

Comparing perf/parquet-skip-filter-for-full-match (5a173c9) to fc15e25 (merge-base) diff

Run configuration
run benchmark clickbench_pushdown
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"
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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark clickbench_pushdown.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ perf_parquet-skip-filter-for-full-match ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.22 ms │                                 1.22 ms │     no change │
│ QQuery 1  │   12.15 ms │                                12.12 ms │     no change │
│ QQuery 2  │   36.61 ms │                                36.16 ms │     no change │
│ QQuery 3  │   30.74 ms │                                30.26 ms │     no change │
│ QQuery 4  │  223.15 ms │                               220.87 ms │     no change │
│ QQuery 5  │  272.83 ms │                               270.55 ms │     no change │
│ QQuery 6  │    1.25 ms │                                 1.26 ms │     no change │
│ QQuery 7  │   15.96 ms │                                15.80 ms │     no change │
│ QQuery 8  │  321.64 ms │                               320.98 ms │     no change │
│ QQuery 9  │  454.82 ms │                               451.15 ms │     no change │
│ QQuery 10 │   92.64 ms │                                92.44 ms │     no change │
│ QQuery 11 │  103.95 ms │                               103.97 ms │     no change │
│ QQuery 12 │  293.22 ms │                               296.58 ms │     no change │
│ QQuery 13 │  399.02 ms │                               400.81 ms │     no change │
│ QQuery 14 │  311.05 ms │                               308.45 ms │     no change │
│ QQuery 15 │  268.33 ms │                               273.34 ms │     no change │
│ QQuery 16 │  611.73 ms │                               617.05 ms │     no change │
│ QQuery 17 │  620.77 ms │                               614.25 ms │     no change │
│ QQuery 18 │ 1263.05 ms │                              1261.19 ms │     no change │
│ QQuery 19 │   28.98 ms │                                28.90 ms │     no change │
│ QQuery 20 │  516.57 ms │                               517.63 ms │     no change │
│ QQuery 21 │  554.41 ms │                               565.93 ms │     no change │
│ QQuery 22 │  903.20 ms │                               911.33 ms │     no change │
│ QQuery 23 │  114.82 ms │                               114.45 ms │     no change │
│ QQuery 24 │   36.37 ms │                                36.48 ms │     no change │
│ QQuery 25 │  139.35 ms │                               138.62 ms │     no change │
│ QQuery 26 │   47.79 ms │                                48.13 ms │     no change │
│ QQuery 27 │  551.17 ms │                               551.21 ms │     no change │
│ QQuery 28 │ 2896.32 ms │                              2903.35 ms │     no change │
│ QQuery 29 │   40.11 ms │                                40.28 ms │     no change │
│ QQuery 30 │  300.63 ms │                               306.14 ms │     no change │
│ QQuery 31 │  276.95 ms │                               278.79 ms │     no change │
│ QQuery 32 │  920.60 ms │                               933.35 ms │     no change │
│ QQuery 33 │ 1413.83 ms │                              1435.36 ms │     no change │
│ QQuery 34 │ 1438.80 ms │                              1476.41 ms │     no change │
│ QQuery 35 │  276.71 ms │                               278.92 ms │     no change │
│ QQuery 36 │   68.57 ms │                                64.07 ms │ +1.07x faster │
│ QQuery 37 │   35.94 ms │                                35.90 ms │     no change │
│ QQuery 38 │   37.41 ms │                                34.50 ms │ +1.08x faster │
│ QQuery 39 │  131.12 ms │                               131.75 ms │     no change │
│ QQuery 40 │   17.66 ms │                                17.52 ms │     no change │
│ QQuery 41 │   16.21 ms │                                16.35 ms │     no change │
│ QQuery 42 │   14.16 ms │                                14.10 ms │     no change │
└───────────┴────────────┴─────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 16111.79ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 16207.89ms │
│ Average Time (HEAD)                                    │   374.69ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │   376.93ms │
│ Queries Faster                                         │          2 │
│ Queries Slower                                         │          0 │
│ Queries with No Change                                 │         41 │
│ Queries with Failure                                   │          0 │
└────────────────────────────────────────────────────────┴────────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and perf_parquet-skip-filter-for-full-match
--------------------
Benchmark clickbench_pushdown.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ perf_parquet-skip-filter-for-full-match ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.22 / 3.91 ±5.32 / 14.56 ms │            1.22 / 3.84 ±5.21 / 14.26 ms │     no change │
│ QQuery 1  │        12.15 / 12.49 ±0.25 / 12.79 ms │          12.12 / 12.59 ±0.45 / 13.31 ms │     no change │
│ QQuery 2  │        36.61 / 37.35 ±0.74 / 38.67 ms │          36.16 / 36.45 ±0.29 / 36.84 ms │     no change │
│ QQuery 3  │        30.74 / 31.55 ±0.64 / 32.35 ms │          30.26 / 30.73 ±0.55 / 31.80 ms │     no change │
│ QQuery 4  │     223.15 / 226.21 ±2.48 / 230.62 ms │       220.87 / 224.06 ±1.67 / 225.66 ms │     no change │
│ QQuery 5  │     272.83 / 274.14 ±0.96 / 275.30 ms │       270.55 / 274.30 ±3.05 / 278.50 ms │     no change │
│ QQuery 6  │           1.25 / 1.40 ±0.23 / 1.85 ms │             1.26 / 1.39 ±0.22 / 1.83 ms │     no change │
│ QQuery 7  │        15.96 / 16.05 ±0.06 / 16.12 ms │          15.80 / 15.92 ±0.10 / 16.06 ms │     no change │
│ QQuery 8  │     321.64 / 324.90 ±2.43 / 327.71 ms │       320.98 / 325.96 ±2.79 / 329.04 ms │     no change │
│ QQuery 9  │     454.82 / 459.37 ±4.54 / 466.17 ms │       451.15 / 461.20 ±6.89 / 472.69 ms │     no change │
│ QQuery 10 │        92.64 / 93.23 ±0.81 / 94.81 ms │          92.44 / 93.97 ±2.20 / 98.27 ms │     no change │
│ QQuery 11 │     103.95 / 104.57 ±0.44 / 105.14 ms │       103.97 / 104.62 ±0.45 / 105.32 ms │     no change │
│ QQuery 12 │     293.22 / 299.97 ±4.41 / 305.09 ms │       296.58 / 300.41 ±2.91 / 304.33 ms │     no change │
│ QQuery 13 │    399.02 / 409.01 ±10.73 / 427.26 ms │      400.81 / 410.98 ±10.95 / 431.91 ms │     no change │
│ QQuery 14 │     311.05 / 315.41 ±4.83 / 324.69 ms │       308.45 / 316.09 ±4.91 / 322.17 ms │     no change │
│ QQuery 15 │     268.33 / 276.54 ±8.80 / 293.18 ms │       273.34 / 282.03 ±8.36 / 295.97 ms │     no change │
│ QQuery 16 │     611.73 / 617.79 ±5.25 / 624.55 ms │       617.05 / 624.96 ±6.40 / 632.79 ms │     no change │
│ QQuery 17 │    620.77 / 636.83 ±14.29 / 662.13 ms │       614.25 / 623.26 ±8.15 / 636.28 ms │     no change │
│ QQuery 18 │ 1263.05 / 1277.34 ±19.42 / 1315.11 ms │   1261.19 / 1282.61 ±15.57 / 1306.15 ms │     no change │
│ QQuery 19 │        28.98 / 31.39 ±4.44 / 40.26 ms │         28.90 / 40.57 ±15.39 / 67.52 ms │  1.29x slower │
│ QQuery 20 │    516.57 / 531.59 ±14.56 / 553.40 ms │       517.63 / 523.80 ±8.77 / 541.18 ms │     no change │
│ QQuery 21 │    554.41 / 568.79 ±11.21 / 584.25 ms │      565.93 / 582.38 ±12.63 / 602.49 ms │     no change │
│ QQuery 22 │     903.20 / 916.99 ±7.66 / 924.91 ms │       911.33 / 918.96 ±7.75 / 932.67 ms │     no change │
│ QQuery 23 │     114.82 / 121.68 ±8.73 / 138.89 ms │       114.45 / 116.69 ±2.15 / 120.52 ms │     no change │
│ QQuery 24 │        36.37 / 40.13 ±4.48 / 46.73 ms │          36.48 / 39.95 ±5.77 / 51.45 ms │     no change │
│ QQuery 25 │     139.35 / 141.68 ±2.67 / 146.45 ms │       138.62 / 141.36 ±2.30 / 144.97 ms │     no change │
│ QQuery 26 │        47.79 / 53.85 ±4.44 / 59.20 ms │          48.13 / 54.33 ±7.36 / 67.97 ms │     no change │
│ QQuery 27 │    551.17 / 580.41 ±18.29 / 605.70 ms │      551.21 / 566.94 ±10.43 / 579.36 ms │     no change │
│ QQuery 28 │ 2896.32 / 2915.49 ±14.06 / 2935.58 ms │   2903.35 / 2928.17 ±14.71 / 2947.59 ms │     no change │
│ QQuery 29 │        40.11 / 45.16 ±9.26 / 63.65 ms │          40.28 / 45.00 ±8.60 / 62.18 ms │     no change │
│ QQuery 30 │     300.63 / 310.59 ±6.38 / 320.21 ms │      306.14 / 319.22 ±21.29 / 361.71 ms │     no change │
│ QQuery 31 │    276.95 / 294.21 ±16.52 / 322.79 ms │       278.79 / 291.27 ±8.88 / 301.38 ms │     no change │
│ QQuery 32 │     920.60 / 927.33 ±5.53 / 936.41 ms │      933.35 / 953.96 ±18.03 / 980.36 ms │     no change │
│ QQuery 33 │ 1413.83 / 1452.95 ±25.40 / 1485.40 ms │   1435.36 / 1486.14 ±31.29 / 1514.97 ms │     no change │
│ QQuery 34 │ 1438.80 / 1518.10 ±58.55 / 1615.91 ms │    1476.41 / 1485.94 ±6.33 / 1495.20 ms │     no change │
│ QQuery 35 │    276.71 / 292.45 ±20.70 / 333.35 ms │      278.92 / 348.56 ±94.05 / 520.93 ms │  1.19x slower │
│ QQuery 36 │        68.57 / 77.02 ±8.01 / 88.22 ms │         64.07 / 73.86 ±12.88 / 97.92 ms │     no change │
│ QQuery 37 │        35.94 / 38.38 ±1.82 / 41.02 ms │          35.90 / 38.18 ±1.64 / 40.68 ms │     no change │
│ QQuery 38 │        37.41 / 42.11 ±4.18 / 48.12 ms │          34.50 / 39.22 ±3.71 / 45.84 ms │ +1.07x faster │
│ QQuery 39 │     131.12 / 137.37 ±3.87 / 142.86 ms │      131.75 / 141.26 ±10.18 / 158.24 ms │     no change │
│ QQuery 40 │        17.66 / 18.16 ±0.33 / 18.48 ms │          17.52 / 17.93 ±0.48 / 18.81 ms │     no change │
│ QQuery 41 │        16.21 / 18.36 ±2.36 / 21.55 ms │          16.35 / 19.54 ±5.04 / 29.55 ms │  1.06x slower │
│ QQuery 42 │        14.16 / 16.35 ±2.80 / 21.71 ms │          14.10 / 14.19 ±0.09 / 14.33 ms │ +1.15x faster │
└───────────┴───────────────────────────────────────┴─────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 16508.60ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 16612.80ms │
│ Average Time (HEAD)                                    │   383.92ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │   386.34ms │
│ Queries Faster                                         │          2 │
│ Queries Slower                                         │          3 │
│ Queries with No Change                                 │         38 │
│ Queries with Failure                                   │          0 │
└────────────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_pushdown — base (merge-base)

Metric Value
Wall time 85.0s
Peak memory 12.1 GiB
Avg memory 5.1 GiB
CPU user 841.4s
CPU sys 57.4s
Peak spill 0 B

clickbench_pushdown — branch

Metric Value
Wall time 85.0s
Peak memory 11.9 GiB
Avg memory 4.8 GiB
CPU user 841.9s
CPU sys 60.6s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

Benchmark for this request failed before finishing (Kubernetes reason: BackoffLimitExceeded).

Benchmarks requested: parquet_row_filter_skip

Kubernetes message
Job has reached the specified backoff limit

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

Benchmark for this request failed before finishing (Kubernetes reason: BackoffLimitExceeded).

Benchmarks requested: parquet_row_filter_skip

Kubernetes message
Job has reached the specified backoff limit

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing perf/parquet-skip-filter-for-full-match (5a173c9) to fc15e25 (merge-base) diff

Run configuration
run benchmark clickbench_sorted
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"
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 perf_parquet-skip-filter-for-full-match
--------------------
Benchmark clickbench_sorted.json
--------------------
┏━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query    ┃     HEAD ┃ perf_parquet-skip-filter-for-full-match ┃    Change ┃
┡━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 0 │ 85.42 ms │                                84.91 ms │ no change │
└──────────┴──────────┴─────────────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓
┃ Benchmark Summary                                      ┃         ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 85.42ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 84.91ms │
│ Average Time (HEAD)                                    │ 85.42ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │ 84.91ms │
│ Queries Faster                                         │       0 │
│ Queries Slower                                         │       0 │
│ Queries with No Change                                 │       1 │
│ Queries with Failure                                   │       0 │
└────────────────────────────────────────────────────────┴─────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and perf_parquet-skip-filter-for-full-match
--------------------
Benchmark clickbench_sorted.json
--------------------
┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query    ┃                               HEAD ┃ perf_parquet-skip-filter-for-full-match ┃        Change ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0 │ 85.42 / 165.14 ±152.92 / 470.95 ms │       84.91 / 107.81 ±17.92 / 139.75 ms │ +1.53x faster │
└──────────┴────────────────────────────────────┴─────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                      ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                      │ 165.14ms │
│ Total Time (perf_parquet-skip-filter-for-full-match)   │ 107.81ms │
│ Average Time (HEAD)                                    │ 165.14ms │
│ Average Time (perf_parquet-skip-filter-for-full-match) │ 107.81ms │
│ Queries Faster                                         │        1 │
│ Queries Slower                                         │        0 │
│ Queries with No Change                                 │        0 │
│ Queries with Failure                                   │        0 │
└────────────────────────────────────────────────────────┴──────────┘

Resource Usage

clickbench_sorted — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.4 GiB
Avg memory 236.9 MiB
CPU user 0.0s
CPU sys 0.0s
Peak spill 0 B

clickbench_sorted — branch

Metric Value
Wall time 5.0s
Peak memory 2.0 GiB
Avg memory 349.2 MiB
CPU user 0.0s
CPU sys 0.0s
Peak spill 0 B

File an issue against this benchmark runner

…nitial filter, doc name

- RowFilterContext::try_new only constructs a context when the prebuilt list
  is non-empty, so build_row_filter now returns RowFilter directly and the
  unreachable empty arm (and PrebuiltRowFilterCandidateList::is_empty) is gone.
- The opener no longer builds the initial RowFilter eagerly just to discard it
  when the first row group is fully matched; it is built lazily in the
  non-fully-matched branch only.
- Fix doc reference: RowFilterContext::build -> build_row_filter.
@zhuqi-lucas

Copy link
Copy Markdown
Contributor Author

The benchmark result looks good:

QQuery 085.42 / 165.14 ±152.92 / 470.95 ms │       84.91 / 107.81 ±17.92 / 139.75 ms │ +1.53x faster │

@adriangb

Copy link
Copy Markdown
Contributor

run benchmark parquet_row_filter_skip

env:
  CARGO_BUILD_JOBS: "3"

@adriangb

Copy link
Copy Markdown
Contributor

run benchmark parquet_row_filter_skip

env:
  CARGO_BUILD_JOBS: "3"
  RG_SIZE: "100000"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5384864000-1886-rm5xz 6.12.85+ #1 SMP Sat Jun 27 09:31:30 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 perf/parquet-skip-filter-for-full-match (dbdfcee) to fc15e25 (merge-base) diff

Run configuration
run benchmark parquet_row_filter_skip
env:
  CARGO_BUILD_JOBS: "3"
  RG_SIZE: "100000"

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-c5384863925-1885-s5bjt 6.12.85+ #1 SMP Sat Jun 27 09:31:30 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 perf/parquet-skip-filter-for-full-match (dbdfcee) to fc15e25 (merge-base) diff

Run configuration
run benchmark parquet_row_filter_skip
env:
  CARGO_BUILD_JOBS: "3"

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)

Comparing perf/parquet-skip-filter-for-full-match (dbdfcee) to fc15e25 (merge-base) diff

Run configuration
run benchmark parquet_row_filter_skip
env:
  CARGO_BUILD_JOBS: "3"
  RG_SIZE: "100000"
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

group                                                                  HEAD                                   perf_parquet-skip-filter-for-full-match
-----                                                                  ----                                   ---------------------------------------
parquet_row_filter_skip/control_q10_scrambled_never_matched_control    1.00    192.5±2.11ms        ? ?/sec    1.00    192.9±0.78ms        ? ?/sec
parquet_row_filter_skip/skip_q01_string_range_low_selectivity_skip     1.07    177.7±1.52ms        ? ?/sec    1.00    165.7±2.28ms        ? ?/sec
parquet_row_filter_skip/skip_q02_string_range_all_matched_skip         1.09    179.2±3.03ms        ? ?/sec    1.00    164.6±2.72ms        ? ?/sec
parquet_row_filter_skip/skip_q03_filter_column_projected_skip          1.00    181.8±1.10ms        ? ?/sec    1.00    181.6±1.79ms        ? ?/sec

Resource Usage

parquet_row_filter_skip — base (merge-base)

Metric Value
Wall time 1160.2s
Peak memory 931.9 MiB
Avg memory 37.8 MiB
CPU user 505.3s
CPU sys 25.9s
Peak spill 0 B

parquet_row_filter_skip — branch

Metric Value
Wall time 1430.3s
Peak memory 940.0 MiB
Avg memory 30.1 MiB
CPU user 519.5s
CPU sys 31.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)

Comparing perf/parquet-skip-filter-for-full-match (dbdfcee) to fc15e25 (merge-base) diff

Run configuration
run benchmark parquet_row_filter_skip
env:
  CARGO_BUILD_JOBS: "3"
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

group                                                                  HEAD                                   perf_parquet-skip-filter-for-full-match
-----                                                                  ----                                   ---------------------------------------
parquet_row_filter_skip/control_q10_scrambled_never_matched_control    1.00    176.8±4.62ms        ? ?/sec    1.00    177.1±2.61ms        ? ?/sec
parquet_row_filter_skip/skip_q01_string_range_low_selectivity_skip     1.03    159.7±1.63ms        ? ?/sec    1.00    155.4±1.65ms        ? ?/sec
parquet_row_filter_skip/skip_q02_string_range_all_matched_skip         1.09    160.7±1.51ms        ? ?/sec    1.00    148.0±2.63ms        ? ?/sec
parquet_row_filter_skip/skip_q03_filter_column_projected_skip          1.04    167.5±3.09ms        ? ?/sec    1.00    161.4±0.97ms        ? ?/sec

Resource Usage

parquet_row_filter_skip — base (merge-base)

Metric Value
Wall time 1155.3s
Peak memory 1.3 GiB
Avg memory 43.3 MiB
CPU user 453.1s
CPU sys 16.7s
Peak spill 0 B

parquet_row_filter_skip — branch

Metric Value
Wall time 1435.3s
Peak memory 1004.1 MiB
Avg memory 30.9 MiB
CPU user 430.1s
CPU sys 16.9s
Peak spill 0 B

File an issue against this benchmark runner

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

Labels

core Core DataFusion crate datasource Changes to the datasource crate sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Follow-up #22450] Per-RG fully_matched RowFilter skip · needs arrow-rs#10158 (peek_next_row_group)

6 participants