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

   ### Purpose
   
   Upserts, including the Python binding, currently plan a target scan without 
the incoming key predicates. Existing BTree indexes therefore cannot narrow key 
lookup. Push per-column key candidates into scan planning while retaining 
complete tuple matching for duplicates, NULLs, and partition identity.
   
   ### Brief change log
   
   - Use full scalar-index search for mutation lookups so partially indexed 
tables still match existing rows.
   - Preserve index row ranges when reading keys and row IDs, without 
evaluating a large residual IN list for every row.
   - Keep fallback for floating-point and BLOB keys to preserve the existing 
matcher's supported types and equality semantics.
   
   ### Tests
   
   - Added regressions for actual BTree row ranges, partial/missing indexes, 
duplicate targets, partial updates, changed keys, deletion vectors, nullable 
composite indexes, partitions, and floating-point/BLOB fallback.
   - Upsert, key normalization, matcher, and global-index scanner suites: 112 
passed, 1 existing ignored test. Command: `cargo test -p paimon 
--no-default-features --features storage-memory,storage-fs --lib -- 
table::table_upsert table::key_normalization table::upsert_key_matcher 
table::global_index_scanner`.
   - Formatting and `git diff --check` passed.
   
   ### API and Format
   
   No public API or storage-format changes.
   
   ### Documentation
   
   Existing upsert API behavior is preserved; the change optimizes key lookup.
   


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