JingsongLi opened a new pull request, #1129:
URL: https://github.com/apache/paimon-rust/pull/1129

   ### 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.configureScan` and 
`AbstractDataTableScan.rejectMaskedPartitionFilter`: an explicit partition 
selector is scan-only, replaces derived partition pruning, and must reject 
masked operands. Ordinary predicates remain read filters.
   
   ### Brief change log
   
   - Add core `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.
   - Preserve ordinary partition conditions when an explicit selector overrides 
derived pruning. Evaluate those conditions against split partition metadata, so 
files may omit physical partition columns and independent readers still enforce 
their filters.
   - Keep split authorization validation before read-side partition selection. 
Preserve the ordinary condition in row-kind, incremental/audit and Diff worker 
paths.
   - Test append, primary-key and data-evolution tables, reordered partition 
fields, hidden predicates, LIMIT, invalid inputs, checkpoint/restore, Diff 
images, REST authorization scopes, and masked selectors.
   
   ### Tests
   
   - ReadBuilder unit tests: 49 passed.
   - Partition selector, batch/changelog/Diff incremental, audit-log and stream 
integration suites: 92 passed.
   - REST query authorization tests: 38 passed.
   - Python binding read and stream suites against a freshly rebuilt extension: 
163 passed; final partition-specific rerun: 7 passed.
   - `cargo +1.98.0 clippy --locked --all-targets --workspace --features 
fulltext,vortex -- -D warnings`: passed.
   - `cargo fmt --all --check` and `git diff --check`: passed.
   
   ### API and Format
   
   Adds a core and Python ReadBuilder setter. Explicit selectors use 
table-field indices and only accept partition fields; `None` clears 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.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to