JingsongLi opened a new issue, #1067:
URL: https://github.com/apache/paimon-rust/issues/1067

   ### Search before asking
   
   - [x] I searched existing issues and pull requests for the prepared 
TableUpdate MERGE capability.
   
   ### Motivation
   
   PyPaimon already supports single-process data-evolution MERGE with ordered 
matched UPDATE/DELETE and unmatched INSERT clauses. Even when native writing is 
enabled, matching, SQL action conditions and action materialization still run 
in Python. Core TableUpdate can prepare row-id updates, deletes and key 
upserts, but cannot represent the existing MERGE operation.
   
   ### Solution
   
   Add prepared MERGE to Rust core TableUpdate, using materialized Arrow input 
or self-merge on _ROW_ID, with ordered clauses and engine-independent 
asynchronous conditions. Reuse the existing data-evolution row-id update 
writer, deletion-vector writer and append writer. Compile SQL conditions in the 
Rust DataFusion integration and expose the operation through batch/stream 
Python update wrappers.
   
   Match Paimon Spark cardinality rules: SQL NULL keys do not match; check 
ambiguous source matches before action predicates; permit duplicate source 
matches for a sole unconditional DELETE. Keep prepared files after later errors 
and publish only through the caller's committer.
   
   ### Willingness to contribute
   
   - [x] I'm willing to submit a PR.
   


-- 
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