bitNot marked as NO_SANITIZE_UNDEFINED #48899
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Close #48689
Some
bit*
functions doesn't work with float and throw an exception (see added test).Another just covert floats to long and they are marked with
NO_SANITIZE_UNDEFINED
:ClickHouse/src/Functions/bitShiftLeft.cpp
Line 23 in c06b580
ClickHouse/src/Functions/bitTest.cpp
Line 24 in c06b580
ClickHouse/src/Functions/bitShiftRight.cpp
Line 24 in c06b580
Also it's mentioned in the doc that we do float to long conversion
ClickHouse/docs/en/sql-reference/functions/bit-functions.md
Lines 11 to 12 in c06b580
So, I believe this change is enough to fix UBSan assert
/build/src/Functions/bitNot.cpp:25:41: runtime error: -inf is outside the range of representable values of type 'long'