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

   ### Purpose
   
   Resolve Java-written bucket-local deletion vectors in timestamp partitions. 
Java uses `.000` for whole-second non-legacy `TIMESTAMP(3)` values and groups 
legacy timestamp fractions into 3, 6, or 9 digits. Rust currently computes 
different directories and can miss the DV or select a stale `table/index` copy. 
This was reproduced while fixing the review in apache/paimon#9825.
   
   ### Brief change log
   
   - Add an internal Java-compatible timestamp partition path calculation for 
DV reads, including declared precision and legacy fractional widths.
   - Preserve explicit DV paths. When Java's exact bucket-local file exists, 
use it; otherwise retain the existing Rust bucket and legacy table-index 
resolution.
   - Keep the existing data-file and index directory calculation unchanged. A 
global format change would move the expected location of old Rust files and 
affect COW file identity; this fix only resolves DV read paths.
   
   ### Tests
   
   - Partition utilities: 32 tests passed.
   - Index-file path resolution: 14 tests passed, including the table-level 
resolver with mixed Java/Rust/table-index DVs, same-name decoys, missing files, 
and authoritative explicit paths.
   - New Java timestamp formatting regressions failed before the fix and pass 
afterward. Default Rust partition path assertions confirm existing directory 
spellings remain unchanged.
   - `cargo fmt --all -- --check` and `cargo clippy --locked -p paimon --lib 
--tests -- -D warnings` passed.
   - Using a wheel rebuilt from this final change, PyPaimon passed 259 related 
tests (84 native plans), including 91 DV-path cases covering Java layouts, 
repeated deletes, historical reads, and authoritative path precedence.
   
   ### API and Format
   
   No public API or serialization changes. No directory migration is needed for 
existing Rust tables.
   
   ### Documentation
   
   Clarified timestamp formatting and DV path resolution comments.
   


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