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]
