JeonDaehong opened a new pull request, #3449:
URL: https://github.com/apache/iceberg-rust/pull/3449

   ## Which issue does this PR close?
   
   None, found while reading `DeleteFileIndex`.
   
   ## What changes are included in this PR?
   
   The spec says equality deletes stored with an unpartitioned spec are global. 
Java decides this with `spec.isUnpartitioned()`, which is also true when every 
field is a void transform (what a v1 table keeps after dropping a partition 
field). Rust checked whether the partition tuple was empty, so such deletes 
were indexed under a `[null]` partition and never matched data files from the 
earlier, partitioned spec. Deleted rows came back.
   
   `DeleteFileContext` now carries the delete file's spec, and the index uses 
`PartitionSpec::is_unpartitioned`. If the spec is missing, it falls back to the 
old check. Position deletes are unchanged: Java scopes them by spec and 
partition too.
   
   ## Are these changes tested?
   
   Yes. `test_void_spec_equality_delete_is_global` fails on `main` (0 deletes 
applied) and passes here. `cargo test -p iceberg --lib`, clippy and fmt are 
clean.
   
   ## AI Disclosure
   
   I used Claude Code to help find this and draft the change. I checked the 
Java behavior, reviewed the code and ran the tests myself.


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