JingsongLi opened a new pull request, #1071:
URL: https://github.com/apache/paimon-rust/pull/1071

   ### Purpose
   
   Linked issue: close #1070
   
   Allow prepared batch/stream MERGE to read a Paimon table source in Rust 
core. PyPaimon already supports this input but currently materializes and joins 
it in Python.
   
   ### Brief change log
   
   - Add `MergeSource::Table(Arc<Table>)`; resolve and pin the source 
independently while preserving branch and resolved schema/options.
   - Read only ON keys, assignment columns and condition dependencies through 
the normal Paimon reader, including logical primary-key rows and Blob 
projection.
   - Preserve input batches, encode keys with global row indices, and 
interleave only chunks contributing to matched rows. Consume not-matched 
assignments across the complete selected clause without concatenating all 
source columns.
   - Accept native `Table` sources through the existing Python wrapper; update 
API stubs and documentation.
   - Keep ordinary read-policy checks for empty sources and retain prepared 
files on failures.
   
   ### Tests
   
   - `cargo test --locked -p paimon --lib`: 3,787 passed, 6 ignored.
   - `cargo +1.98.0 clippy --locked --all-targets --workspace --features 
fulltext,vortex -- -D warnings`: passed.
   - `cargo +1.98.0 fmt --all -- --check`: passed.
   - Rebuilt Python extension; `bindings/python/tests/test_update.py`: 16 
passed, including batch/stream native table inputs at latest and historical 
snapshots.
   - Core regressions cover selected source snapshot, concurrent source 
advancement, empty-source laziness/authorization, cross-batch duplicates and 
complete-clause insert arrays.
   - PyPaimon integration tests cover branch selection, primary-key logical 
reads, nested ARRAY/MAP values, NULL keys, unused unreadable Blob projection 
and Blob view fallback.
   - Related PyPaimon Native regression suites 
(planning/reading/writing/updating/committing enabled): 1,190 passed, 2 
skipped, 27 subtests passed; every tracked Native update kind exercised.
   
   ### API and Format
   
   Additive `MergeSource::Table` variant and `Table` source input in the 
existing Python `merge_into` methods. No new public operation, dependency or 
storage format.
   
   ### Documentation
   
   Update Python binding README and `datafusion.pyi` to explain table sources 
and independent snapshot selection.
   


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