Skip to content

datafusion_iceberg: parquet row-filter pushdown for wide scans with a narrow predicate - #75

Merged
Vedin merged 2 commits into
embucket-sync-df55.0.0from
perf/wide-scan-parquet-pushdown
Sep 12, 2026
Merged

Vedin merged 2 commits into
embucket-sync-df55.0.0from
perf/wide-scan-parquet-pushdown

Conversation

@Vedin

@Vedin Vedin commented Sep 12, 2026

Copy link
Copy Markdown

What

ParquetSource is created with with_pushdown_filters(true) only when the scan projects at least 8 columns and its pushed predicates reference at most 2 columns. Everything else keeps DataFusion's default (off).

Why

Row-filter pushdown (predicate evaluated inside the parquet decoder, late materialisation of the remaining columns, TopK / join dynamic filters reaching the scan) pays off when the scan is wide and the predicate narrow — the ClickBench SELECT * … WHERE url LIKE … ORDER BY t LIMIT n shape: on SPCS CPU_X64_M, ClickBench 100M Q24 went 38 → 5 s. Enabled globally it made TPC-H narrow scans 30 % slower (row filters lose to the vectorised FilterExec on non-selective date/decimal predicates), so it is gated per scan.

Requires the parquet 59.2.0 decoder fix in Embucket/arrow-rs#embucket-parquet-59.2.0 (DeltaBitPack skip for Snowflake's mini-block sizes); rustice pins both together.

Measured in the interactive-scenario autoresearch (rustice benchmark-results/autoresearch-interactive-2026-09-11/REPORT.md).

🤖 Generated with Claude Code

https://claude.ai/code/session_012m5Yx6yEpZsacqAhZotgkT

Vedin and others added 2 commits September 12, 2026 03:36
…ly for wide scans (>= 8 projected columns) with a narrow predicate (<= 2 columns)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012m5Yx6yEpZsacqAhZotgkT
@Vedin
Vedin merged commit b1584f3 into embucket-sync-df55.0.0 Sep 12, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant