sezruby opened a new pull request, #18603: URL: https://github.com/apache/iceberg/pull/18603
Part of #18020. An UPDATE fails on any concurrent delete file matching its conflict detection filter, even a deletion vector for a data file it does not modify, so on an unpartitioned table any concurrent DELETE aborts a concurrent UPDATE. This adds `RowDelta#validateNoConflictingDeleteFilesForModifiedDataFiles`, which ignores concurrent position deletes and DVs that apply to a single data file the commit does not modify, and uses it for Spark UPDATE. It assumes that a data file the UPDATE does not modify has no rows matching its condition; as with DELETE today, a concurrent delete of a row read only by a subquery in the condition is not detected. MERGE is unchanged. On v2 tables this applies only to file-scoped position deletes. Test plan: in `TestRowDelta`, a concurrent delete for another data file in the same partition commits; a concurrent delete for a modified data file, a concurrent equality delete and a concurrent partition-scoped position delete still conflict; a commit adding a partition-scoped position delete still validates every concurrent delete; a delete for a removed data file still conflicts. `TestMergeOnReadUpdate` passes unchanged. --- **AI Disclosure** - Model: Claude Opus 5.5 - Platform/Tool: Claude Code - Human Oversight: [unknown - human to fill in] - Prompt Summary: Narrow UPDATE's concurrent delete-file validation to the data files it modifies; the implementation, tests and this description are generated. -- 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]
