waterWang opened a new pull request, #24436:
URL: https://github.com/apache/datafusion/pull/24436

   ### Problem
   
   `ScalarValue::eq_array` is documented as an optimized equivalent of 
extracting an array element with `ScalarValue::try_from_array` and comparing 
the resulting scalars. However, for floating-point values `eq_array` uses IEEE 
equality (via the generic `eq_array_primitive!` macro) while 
`ScalarValue::PartialEq` compares bit representations, producing inconsistent 
results:
   
   - Identical NaN bit patterns compare equal as `ScalarValue`s but unequal 
through `eq_array`.
   - `+0.0` and `-0.0` compare unequal as `ScalarValue`s but equal through 
`eq_array`.
   
   ### Fix
   
   Replace the Float16, Float32, and Float64 branches of `eq_array` with custom 
`to_bits()` comparison, matching the semantics of `ScalarValue::PartialEq` for 
floats.
   
   Closes #24431


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