mzzz-zzm opened a new pull request, #983:
URL: https://github.com/apache/iceberg-go/pull/983

   Fixes #978
   ## Problem
   
   `RowDelta.validate` passes `iceberg.AlwaysTrue{}` to 
`validateNoConflictingDataFiles` whenever equality-delete files are present. 
This means any concurrent append to **any** partition is treated as a conflict, 
even when it lands in a completely different partition from the 
equality-deletes. Under serializable isolation this causes spurious 
`ErrConflictingDataFiles` errors for workloads that write to multiple 
independent partitions concurrently.
   
   ## Fix
   
   `RowDelta` now collects the partition tuples of all equality-delete files it 
adds (`eqDeletePartitions`). A new validator, 
`validateNoConflictingDataFilesInPartitions`, checks concurrent data files only 
in those specific partition tuples:
   
   - If the partition set is empty (no eq-deletes), the check is skipped.
   - If any eq-delete is unpartitioned (empty tuple), it falls back to the 
conservative `AlwaysTrue` check, preserving existing safety.
   - Otherwise, only concurrent files in a matching partition are flagged.
   
   ## Files changed
   
   - `table/row_delta.go`: collect `eqDeletePartitions` instead of 
`hasEqDeletes`
   - `table/conflict_validation.go`: 
`validateNoConflictingDataFilesInPartitions` + `partitionTupleKey`
   - `table/partition_conflict_test.go`: unit tests for both new functions


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