JeonDaehong opened a new issue, #3673:
URL: https://github.com/apache/iceberg-rust/issues/3673
An equality delete on `s.f` loads a delete row with a null `s` and one with
`s = {f: null}` the same way, as `s.f IS NOT NULL` (#3453). That follows the
spec text ("if a parent struct column is null it implies the leaf column is
null").
Java's `DeleteFilter` tells them apart: it compares the projected `s` with
`nullsFirst`. With a probe that builds the delete set the way `DeleteFilter`
does (`StructLikeSet` over `selectInIdOrder`, `StructProjection` of the data
row) on iceberg 059e7ea, a delete row with a null `s` matches only data rows
whose `s` is null, and `s = {f: null}` matches only rows with a non-null `s`
and a null `s.f`.
Nothing reaches this until #2906 applies nested equality deletes on scan.
Following Java would need a predicate on `s` itself, so the question is which
one iceberg-rust should follow.
--
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]