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

   ## Purpose
   
   PyPaimon already supports `delete_by_predicate`, but native updates expose 
only row-ID deletion. Python still reads partition manifests or materializes 
matched row IDs before invoking Rust. Move that complete existing operation 
into Rust core.
   
   ## Changes
   
   - Add `TableUpdate::delete_by_predicate`, with batch and stream Python 
wrappers and updated type stubs.
   - For partition-only predicates, prepare deletion messages for all active 
data and index files in the selected partitions. This supports append, 
primary-key and data-evolution tables, including pending bucket -2 files, 
without requiring deletion vectors.
   - For other predicates, stream matched row IDs into the existing 
data-evolution deletion-vector writer. Match reading and DV preparation share 
one captured snapshot; FULL scalar-index mode includes unindexed appends.
   - Extract the committer's existing complete snapshot-manifest reader for 
shared internal use. No new public scan abstraction or dependency is introduced.
   - Validate authorization, time travel and predicate field/schema consistency 
before reading metadata. Publication remains the caller's responsibility.
   
   ## Java semantics
   
   Reuse Java-compatible commit-message baselines, anchor selection and DV 
replacement checks. Default file/DV/row-ID conflict detection preserves later 
appends with fresh row IDs and rejects conflicting replacements. Java's 
stricter partition-level checker is configured separately through an explicit 
last-safe snapshot; a message baseline alone does not enable it. The paired 
Python change removes its extra coarse partition check.
   
   ## Verification
   
   - Reproduced the missing native method with a binding test before 
implementation.
   - 53 focused core update/delete tests passed, including 11 new 
predicate-delete tests.
   - 121 core commit tests passed.
   - 21 binding update/delete tests passed.
   - Paired PyPaimon integration: 756 related Native tests plus 2 additional 
REST snapshot tests passed; final predicate suite 30 passed.
   - `cargo +1.98.0 clippy -p paimon -p pypaimon_rust --all-targets -- -D 
warnings` and `cargo fmt --all --check` passed.
   - Independent core and wrapper/Java-semantics reviews found no blocking 
issues.
   


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