brgr-s commented on PR #2961:
URL: https://github.com/apache/iceberg-rust/pull/2961#issuecomment-5205187279

   @mbutrovich I worked through your comments and will follow up with commits 
adressing where we agree. Specifically, because it is not inlined: the test gap 
is real, so more tests! 
   
   I just have three comments:
   
   float/double equality-delete columns: `Datum` does not use IEE-754 float 
semantics. `PrimitiveLiteral` stores `OrderedFloat<..>`, which treats `NaN == 
NaN` and `Hash` uses `CANONICAL_NAN_BITS` and `canonicalize_signed_zero`, so 
both agree. However, this does introduce a change: on main, eq-deletes go 
through arrow's kernel where `is_eq` is bitwise, so `-0.0 != 0.0` and different 
NaN bits also do not match. I feel like the spec is not really clear on what is 
correct... but at the end of the day, it only applies to input that the spec 
dissallows and would only hit non-conforming writes. But the old implemenation 
also already did not `Err` on this, so we'd introduce a regression for those 
non-conforming writer. I'd opt for the test and against the error.
   
   `if set.is_empty() { continue; }` untested: correct, but a test is limited. 
If `continue` is removed, you get `num_cols = 0`, empty `keys`, and `contains` 
is always `false`, so every row is kept for that pass. It is performance guard, 
not a correctness guard. “doesn’t affect row-group/row-selection filtering” is 
true by construction: after this PR only `task.predicat` drives row-group and 
page-index filtering, eq delete sets never do.
   
   equality-delete key column later dropped from the table: this is 
pre-existing, but nothing would reach the probe: the scan would fail outright 
on `generate_batch_transform`:
   ```
   Ok(field_id_to_mapped_schema_map
     .get(field_id)
     .ok_or(Error::new(ErrorKind::Unexpected, "field not found"))? // <------ 
here
     .0
     .clone())
   ```
   I checked 
[`DeleteFilter.java:76`](https://github.com/apache/iceberg/blob/main/data/src/main/java/org/apache/iceberg/data/DeleteFilter.java#L76)
 and 
[`DeleteFilter.java:318`](https://github.com/apache/iceberg/blob/main/data/src/main/java/org/apache/iceberg/data/DeleteFilter.java#L318):
 I think this is the same failure. I think this is worth an issue rather than 
checking on an error string here. WDYT?


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