zjw1111 opened a new issue, #256:
URL: https://github.com/apache/paimon-cpp/issues/256

   ### Search before asking
   
   - [x] I searched the existing issues and found nothing similar.
   
   ### Paimon-cpp version
   
   `main` at `4027601e`.
   
   ### Minimal reproduce step
   
   1. Construct `float` or `double` NaN values with different sign or payload 
bits.
   2. Use those values in Literal hashing, Bloom filter hashing, Hive bucket 
hashing, BTree keys, Variant values, global-index scores, or indexed-split 
scores.
   3. Compare the generated hashes or serialized bytes with Java Paimon, which 
canonicalizes NaN through `Float.floatToIntBits` and `Double.doubleToLongBits`.
   
   ### What doesn't meet your expectations?
   
   C++ currently preserves raw NaN payload bits in several hashing and 
serialization paths. As a result, NaN values that compare as equivalent can 
produce different hashes, and C++ can emit bytes that differ from Java.
   
   All float NaN values should use canonical bits `0x7fc00000`, and all double 
NaN values should use canonical bits `0x7ff8000000000000`, while preserving 
every non-NaN value unchanged.
   
   ### Anything else?
   
   A fix is available in #255.
   
   ### Are you willing to submit a PR?
   
   - [x] I'm willing to submit a PR!
   


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