zeroshade opened a new issue, #2238:
URL: https://github.com/apache/iceberg-go/issues/2238

   ## Problem
   
   When a rewrite removes a data file that has a live deletion vector, the DV 
is not removed unless the caller also passes it to `DeleteFile`. The table ends 
with a live DV whose `referenced_data_file` is no longer a live data file. The 
v3 spec requires that removing a data file also removes the deletion vector 
that references it.
   
   ## Reproduction
   
   Three separate committed transactions on a v3 table, using the `table` test 
helpers:
   
   1. `NewRowDelta().AddRows(dataB)`: adds data file B.
   2. `NewRowDelta().AddDeletes(dvB)`: adds a DV for B.
   3. `NewRewrite().DeleteFile(dataB)`: removes B; the DV is not named.
   
   After step 3, the current snapshot's live delete manifests still contain 
`dvB` with `referenced_data_file = B`, and B is no longer live.
   
   The same thing happens when the three operations are staged in one 
transaction.
   
   ## Expected
   
   Removing a data file through `RewriteFiles` (and any other producer that 
removes data files) also removes its live DV, as 
`liveDeletionVectors.removeDataFile` already does on the delete and overwrite 
paths.
   
   Found while reviewing #2194; that PR's tests pass the DV to `DeleteFile` 
explicitly, so they don't exercise this.
   


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