jackylee-ch opened a new pull request, #926:
URL: https://github.com/apache/paimon-rust/pull/926

   `data_leaf_must_match`'s `Eq`/`In` arms claim every non-null row equals the 
literal when `min == max == literal`. For FLOAT/DOUBLE that is unsound: the 
writer leaves NaN out of min/max without counting it null, so a file holding 
`[1.0, NaN]` reports `min == max == 1.0` over two rows. `NOT(v = 1.0)` is 
evaluated as `!must_match(Eq 1.0)`, so the whole file was pruned even though 
the NaN row satisfies `<> 1.0` — **a silently dropped row**.
   
   Guard both arms with `equality_exclusion_is_sound`, exactly as the dual 
`may_match` `NotEq`/`NotIn` arms already do, so `NOT(=)` / `NOT(IN)` on a float 
column now agrees with the direct `<>` path and keeps such files. Reachable via 
`ReadBuilder::with_filter` with a negated equality.
   
   The added unit test prunes the row before the fix and keeps it after.
   


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

Reply via email to