JingsongLi opened a new pull request, #1033: URL: https://github.com/apache/paimon-rust/pull/1033
## Purpose PyPaimon can already read branch tables through Rust, but its native writers fall back because Rust refuses branch writes. Enable Paimon branch writes in the Rust core and keep metadata, indexes, sequence numbers and publication scoped to the selected branch. ## Changes - Match Java `SnapshotCommit`: pass the branch explicitly at publication, and route filesystem snapshots/LATEST hints and REST commit identifiers with that argument. - Load REST branch schemas and FileIO through the catalog, including catalogs with no on-disk schema files. Reject a changed table UUID or location when switching a loaded handle to another branch. - Enable Paimon append, primary-key, Data Evolution and postpone fixed-bucket write/commit builders on branch handles. Historical handles remain read-only. - Restore sequence numbers, dynamic HASH indexes and postpone bucket layouts through the table's SnapshotManager. The previous writer code constructed main-branch managers directly. - Check resolved filesystem branch schemas before staging output, and refuse publication to missing branches. Data files and manifests remain shared under the table location, as in Java; each branch has independent schema/snapshot metadata, row-ID allocation, conflict checks and checkpoint recovery. ## Verification - 13 focused branch-write core regressions, including divergent sequence/HASH/postpone histories, overwrite/truncate, shared-file preservation, row-ID conflicts, checkpoint recovery, missing schemas and explicit publisher routing. - REST integration tests for catalog-only branch schemas and replacement UUID/location rejection. - Core library: 3,683 passed, 6 ignored. - REST catalog integration suite: 96 passed. - Workspace Clippy with `fulltext,vortex`, all targets, and `-D warnings`: passed. - `cargo fmt --all -- --check`: passed. - Built the Python wheel from this branch and exercised the PyPaimon Native branch/write/update/commit bridge. The paired PyPaimon change removes the main-only selection guard and adds filesystem/REST end-to-end branch tests. Python bindings continue to use the existing core APIs. -- 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]
