badalprasadsingh opened a new issue, #1868: URL: https://github.com/apache/iceberg-go/issues/1868
### Apache Iceberg version main (development) ### Please describe the bug 🐞 Iceberg's `V3` format allows at most one live `DV` per data file. Thus, a writer replacing a data file's `DV` must add the new `DV` and remove the superseeded one in the same snapshot. The `Commit` function in `RowDelta` enforces this rule, but only when the caller also called `RemovedDeletes`. If a caller adds a replacement DV through `AddDeletes` and forgets `RemoveDeletes`, nothing compares the new `DV` against the `DVs` already in the current snapshot, and the commit **succeeds**. The result is a table with two live `DVs` on one data file. The commit itself looks clean; the damage appears on the next read, where scan planning rejects the table. `can't index multiple deletion vectors for <whatever_the_data_file_path_is>`. The table stays unreadable until the new metadata is repaired by hand. The same gap accepts a delta that adds two DVs for one data file, producing the identical broken state. Currently, `Transaction.ReplaceFiles` rejects this exact case, so the two write paths currently disagree. ### Status Will be working on a PR with the fix. -- 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]
