JingsongLi opened a new pull request, #847: URL: https://github.com/apache/paimon-rust/pull/847
### Purpose Expand the native planning paths available to PyPaimon while preserving Java table semantics. This continues the planner alignment from #845 and uses the resolved-table constructor introduced in #846. Reloading a filesystem catalog table loses the caller's resolved schema and removed or overridden options. Separately, DV merge-on-read currently groups fully materialized files across levels by overlapping primary-key ranges. Java packs those files by size and marks them raw convertible; this matters for clustered files that are not sorted by primary key and for consumers choosing a reader from the split flag. ### Brief change log - Expose `Table.from_resolved_schema()` in the Python binding, accepting Java-format schema JSON, FileIO properties, an identifier and a branch. Preserve the complete supplied schema/options without a catalog lookup or a second schema time-travel resolution. - Pack materialized DV/first-row files by size across levels and retain raw-convertible splits. Continue grouping overlapping files for merge when L0 is present. - Cover field-ID-based rename reads and predicates, replaced snapshot selectors, branch/tag/empty plans, invalid schemas and identifiers, strict FileIO options, and query authorization. Add real write/plan/read tests across merge engines, DV merge-on-read settings, split sizes and subsequent L0 writes. ### Tests - `cargo test -p paimon --lib table::`: 1,282 passed, 1 ignored. - `cargo test -p paimon --test first_row_scan_test`: 5 passed, including the materialized/L0 matrix. - Python binding read, table and resolved-schema regression suites passed with the rebuilt wheel. - Consumer integration: 352 PyPaimon tests passed, exercising 506 native plans across append, PK, DE, dynamic buckets, cross-partition updates, incremental scans, indexes, chunk shuffle and schema evolution. - `cargo clippy --locked -p paimon -p pypaimon_rust --all-targets -- -D warnings` and `cargo fmt --all --check` passed. - The materialized-DV regression fails before the fix; resolved-schema binding tests fail against the previous wheel. ### API and Format Adds the Python `Table.from_resolved_schema()` factory and its type stub. No storage or split wire-format changes. REST authorization and credential refresh continue to require catalog-backed tables. This does not add clustering writes or relax Rust's create-time validation for first-row/DV tables. ### Documentation Document the resolved-schema factory, FileIO options, branch selection and time-travel behavior in the Python binding README. -- 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]
