Repository navigation
Support explicit partition selectors in native table scans - #1129
Merged
JingsongLi merged 1 commit intoOct 15, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Allow PyPaimon's existing explicit partition selectors to use native planning, including REST tables with query authorization. Previously the binding only exposed ordinary row filters, so PyPaimon combined the two filters or fell back to Python for authorized scans.
Match Java
ReadBuilderImpl.configureScanandAbstractDataTableScan.rejectMaskedPartitionFilter: an explicit partition selector is scan-only, replaces derived partition pruning, and must reject masked operands. Ordinary predicates remain read filters.PyPaimon integration: apache/paimon#10576 (continues building Rust
main).Brief change log
ReadBuilder.with_partition_filter(Option<Predicate>)with table-field validation, replacement/clearing semantics, and typed Python binding/stub. Batch, incremental and stream scans capture the same selector.Tests
cargo +1.98.0 clippy --locked --all-targets --workspace --features fulltext,vortex -- -D warnings: passed.cargo fmt --all --checkandgit diff --check: passed.API and Format
Adds a core and Python ReadBuilder setter. Explicit selectors use table-field indices and only accept partition fields;
Noneclears the selector. Format tables remain outside this API. No storage/wire format changes.Documentation
Core API rustdoc and Python type stubs describe scan-only selection, ordinary filtering and authorization behavior.