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]
