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]
