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

   ### Purpose
   
   Align row-tracking commit behavior with Java before enabling Data Evolution 
publication through PyPaimon's native REST commit bridge.
   
   The audit reproduced three metadata differences: existing sequence ranges 
were overwritten, pending maximum sequence numbers lost the original minimum, 
and `row-tracking.partition-group-on-commit` was ignored. It also reproduced a 
Blob update spanning two adjacent normal-file ranges being accepted by Rust and 
producing a snapshot that neither reader could read.
   
   ### Brief change log
   
   - Extract row-tracking metadata assignment into a focused core helper 
following `RowTrackingCommitUtils`: stamp new files, complete pending maximum 
sequence numbers, and preserve completed sequence ranges.
   - Honor Java's partition grouping option (default `true`) while preserving 
file order within each partition and independently rolled Blob columns.
   - Require dedicated update files to fit entirely inside one normal-file 
range. Exclude dedicated files from the normal-file existence index and 
validate dedicated ranges in the merged layout.
   - Support Java's `global-index.column-update-action=IGNORE` commit policy, 
retaining existing index metadata. Incremental index refresh planning remains a 
separate capability.
   - Add persisted-manifest, overwrite, Blob alignment, dedicated-range 
rejection, retry/recovery, and index-policy regression tests.
   
   ### Tests
   
   - Added reproductions that failed before the fixes for sequence 
preservation, partition grouping, dedicated range conflicts, and `IGNORE`.
   - `cargo test --locked -p paimon --lib`: **3635 passed, 6 ignored**.
   - `cargo clippy --locked -p paimon --all-targets --features fulltext,vortex 
-- -D warnings`: passed.
   - `cargo fmt --all -- --check`: passed.
   - Companion PyPaimon tests exercise real REST publication and Parquet/Blob 
files with both Python and native readers.
   
   ### API and Format
   
   Adds the existing Java partition grouping option and the `Ignore` enum 
variant in Rust core. Existing wire and storage formats are unchanged. Python 
bindings continue to delegate to core.
   
   ### Documentation
   
   Core option and metadata helper documentation describes the Java semantics. 
`IGNORE` retains index files; refreshing affected indexes is a subsequent 
operation.
   


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