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]

Reply via email to