Skip to content

[python][daft] Push filters into Paimon scan planning#8744

Merged
JingsongLi merged 1 commit into
apache:masterfrom
QuakeWang:daft-filter-pruning
Jul 20, 2026
Merged

[python][daft] Push filters into Paimon scan planning#8744
JingsongLi merged 1 commit into
apache:masterfrom
QuakeWang:daft-filter-pruning

Conversation

@QuakeWang

Copy link
Copy Markdown
Member

Purpose

PaimonDataSource relied on mutable filter state populated by the legacy push_filters() callback. Daft now passes filters through each Pushdowns request, so normal native Parquet scans skipped Paimon file pruning.

Derive predicates directly from the current Pushdowns for reads and explain, remove the serialized filter state, and verify that actual tasks and explain output report consistent file pruning.

Tests

  • Daft test suite on Python 3.10 and 3.11: 229 passed, 1 skipped
  • Python flake8 and license checks

Daft passes datasource filters through each Pushdowns request, but PaimonDataSource still relied on mutable state populated by a legacy push_filters callback. The current DataSource path never populated that state, so native Parquet scans skipped Paimon file pruning and scan explain used a separate path.

Derive the Paimon predicate from the current Pushdowns for both reads and explain, remove serialized filter state, and add regression coverage that verifies actual task pruning matches explain output.

Signed-off-by: QuakeWang <wangfuzheng0814@foxmail.com>
@JingsongLi

Copy link
Copy Markdown
Contributor

+1

@JingsongLi
JingsongLi merged commit b4a950b into apache:master Jul 20, 2026
7 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.

2 participants