JeonDaehong opened a new pull request, #3453: URL: https://github.com/apache/iceberg-rust/pull/3453
## Which issue does this PR close? - Closes #3450. ## What changes are included in this PR? Equality ids may name a field nested in a struct (the spec allows it and `EqualityDeleteWriter` writes it), but loading such a delete file failed with `field not found`: - Schema evolution of the delete file only maps top-level field ids, so the delete file is now read by the top-level fields that hold the equality ids. - The delete predicate used the leaf name (`f`), which fails to bind or binds to a top-level column with the same name. It now uses the full name (`s.f`). `test_delete_file_loader_parse_equality_deletes` expected the leaf name `sa` for a nested field, so its expected string changes to `s.sa`. Applying the delete to data rows also needs predicates on nested leaves in the row filter, which #2906 adds. With #2906 merged locally, an end-to-end scan deletes the expected rows (including rows whose parent struct is null). I'll add that end-to-end test once #2906 lands. cc @brgr-s, as discussed in #2961. ## Are these changes tested? Yes. `test_nested_field_equality_delete_predicate` covers loading and the full-name predicate (the table also has a top-level column with the same leaf name). `cargo test -p iceberg --lib`, clippy and fmt are clean. ## AI Disclosure I used Claude Code to find this, write the change and run the tests. I reviewed it before opening the PR. -- 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]
