tanmayrauth commented on PR #1419: URL: https://github.com/apache/iceberg-go/pull/1419#issuecomment-4909554245
@laskoviymishka Thanks for the thorough pas, all three must-haves are in, plus the inline items. - Ghost DELETED DV (blocker): collectExistingDVs now iterates s.entries(fs, iceberg.ManifestContentDeletes) and skips EntryStatusDELETED, so the superseded DV can't win the last-write into the result map. This also narrows the scan to delete manifests. - Triple-delete test: added TestV3MergeOnReadTripleDeleteMergesDeletionVector (append, delete 2/4/1 → liveDVCount == 1, rows [3, 5]). Confirmed it fails on the pre-fix code with exactly the symptom you described — id=4 resurrects ([3, 4, 5]) — and passes with the fix. - Partitioned case: added TestV3MergeOnReadDoubleDeletePartitionedMergesDeletionVectors, an identity-partitioned table where a single delete touches two data files that each already carry a DV, exercising the per-file pCtx capture in the seed loop. - Seed comment: reworded to state the scan does not apply existing DVs; correctness holds because bitmap.Set is idempotent, and the seed is what preserves the old positions. - Also handled: error wrapping, the v1/v2 alloc moved behind the v3 guard, the duplicated error message, and the Load doc. One I left for a follow-up, the hasEntries churn. A correct fix has to skip both the re-flush and the removeDeletionVector for a seeded-but-unchanged file, but the Puffin flush is atomic across all files, so per-file gating couples the writer with the removal loop; done wrong it removes an old DV without re-emitting it — the resurrection bug we just fixed. Since it's no-op churn and not a correctness issue, I'd rather land it separately. Happy to fold it in here if you'd prefer. -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
