Skip to content

perf: Use iceberg statistics - #29798

Merged
ritchie46 merged 4 commits into
mainfrom
perf/iceberg-q72
Oct 8, 2026
Merged

ritchie46 merged 4 commits into
mainfrom
perf/iceberg-q72

Conversation

@ritchie46

@ritchie46 ritchie46 commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

fix #29768

This now gives the same join order as scan_parquet directly.

@github-actions github-actions Bot added A-io-iceberg Related to Apache Iceberg tables. performance Performance issues or improvements python Related to Python Polars rust Related to Rust Polars labels Oct 8, 2026
Expand Iceberg and Delta scans before join ordering when the plan has
joins. Row counts and ranges of join and filter columns come from the
table metadata, so join ordering, build side selection and runtime join
filters can use them without opening data files.
- Keep the provider request in one struct that is the expansion cache key.
- Fold the per-file statistics over chunked arrays without temporary vectors.
- Log statistics that fail to load in verbose mode, and handle both
  Iceberg failure paths in one place.
- Rename `projected_filter_schema` to `statistics_schema`.
@ritchie46
ritchie46 marked this pull request as ready for review October 8, 2026 06:17
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

The uncompressed lib size after this PR is 59.5933 MB (at 063c7e6).

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

Labels

A-io-iceberg Related to Apache Iceberg tables. performance Performance issues or improvements python Related to Python Polars rust Related to Rust Polars

Projects

None yet

Development

Successfully merging this pull request may close these issues.

scan_iceberg: TPC-DS Q72 is ~100x slower and grows memory until OOM, vs scan_parquet on the same files

1 participant