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]
