XiaoHongbo-Hope opened a new pull request, #899:
URL: https://github.com/apache/paimon-rust/pull/899

   ### Purpose
   
   Minor manifest compaction rewrites only a subset of manifests. It currently 
resolves those candidates with `merge_active_entries`, which drops a DELETE 
when the matching ADD is in a retained manifest outside the candidate set. The 
old file can then become active again alongside its replacement.
   
   ### Changes
   
   - Add a partial-manifest merge helper matching Java `FileEntry.mergeEntries` 
semantics.
   - Preserve unmatched DELETE entries, retain input order, and reject 
duplicate ADD entries.
   - Match entries by the complete Paimon file `Identifier`.
   - Keep `merge_active_entries` unchanged for full-set scan and conflict 
callers.
   - Add unit coverage and an end-to-end snapshot commit regression where only 
the DELETE and replacement ADD manifests are compacted.
   
   There is no storage-format or public API change. This prevents new metadata 
corruption; it does not repair snapshots already affected by a lost DELETE.
   
   ### Verification
   
   Before the fix, the regression test failed because the compacted manifest 
contained no DELETE and the old file became active again.
   
   After the fix:
   
   - `cargo test -p paimon --lib`: 2997 passed, 6 ignored
   - `cargo test -p paimon --lib table::table_commit::tests`: 73 passed
   - `cargo test -p paimon --lib spec::manifest::tests`: 5 passed
   - `cargo clippy -p paimon --lib -- -D warnings`
   - `cargo fmt --all --check`
   - `git diff --check`
   
   Go smoke tests were not run locally because the change is entirely in the 
Rust commit layer; repository CI covers the bindings.
   


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