JingsongLi opened a new pull request, #10385: URL: https://github.com/apache/paimon/pull/10385
## Purpose Enable Rust-backed writes and updates for Paimon branch tables instead of selecting the Python writer solely because the table is on a non-main branch. Depends on apache/paimon-rust#1033. This PR stays draft until that core capability reaches Rust main; the Native CI job continues to build `apache/paimon-rust@main`. ## Changes - Pass the resolved branch into filesystem Native tables, and use the branch-qualified identifier when loading REST Native tables. - Verify Native table identity by location, UUID and branch before accepting the loaded table. Python remains a wrapper around existing Rust core APIs. - Match Java's branch normalization: preserve non-blank names, so `dev` and ` dev ` have independent directories. Share the normalization with the filesystem branch manager. - Preserve REST resource identifiers during validation. Match Java URLEncoder/URLDecoder form encoding, including spaces, literal plus signs, UTF-8 and path separators. - Make the REST test service resolve independent branch schemas, preserve schema history from a tag, and move/delete branch metadata with branch/table lifecycle operations. Validate names before filesystem mutations. ## Verification The new Native branch suite covers filesystem and REST catalogs for: - Empty and tag-derived append histories, all four primary-key merge engines, dynamic/cross-partition/postpone routing, and overwrite. - Stream checkpoint histories, independent row-ID allocation, update conflict checks, deletion vectors, predicate/callable updates, upsert and grouped updates. - Independent schema evolution, shared Blob payload preservation and abort cleanup. - Branch/table rename, drop/recreate, invalid names, whitespace-preserving names and literal plus signs. Tests assert Native writer/read/update/REST commit selection and block the Python fallback. Java URL-encoding golden values and existing API/branch/catalog tests cover the shared name-handling changes. Built the Rust wheel from #1033 for local Native verification. Native CI remains on Rust main. Final Native regression run: **879 passed, 5 subtests passed, 6 deselected** (Lance is outside this change). Native counters: 780 plans, 919 reads, 757 writes, 373 commits, and row-ID/grouped/predicate/upsert/incremental updates. Changed-file Flake8 and `git diff --check` passed. -- 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]
