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]

Reply via email to