feat: Support float 32 and float 64 in approx_distinct#23084
Draft
mkleen wants to merge 2 commits into
Draft
Conversation
Float32 and Float64 don't implement `Hash` on their native type. Therefore, they can't use `NumericHLLAccumulator`. However they can be hashed generically via `create_hashes`, exactly like the string/binary types.
2e71c6c to
58dbfa1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Which issue does this PR close?
approx_distinctfunction #22989 but does not close it. More types are coming.Rationale for this change
Float32andFloat64don't implementHashon their native type so they they can't useNumericHLLAccumulator, therefore they were not supported byapprox_distinct.Float32andFloat64can be hashed generically viacreate_hashesinHLLAccumulatorandHllGroupsAccumulator, exactly like the string/binary types.f32::NaNandf:64::NaNare hashed by their bit pattern, so repeatedNaNvalues sharing the same bits collapse to a single distinct value.What changes are included in this PR?
See above.
Are these changes tested?
Yes, for the and non-grouped and grouped part as part of
approx_distinct.rstandaggregate.sltAre there any user-facing changes?
Yes, but no breaking changes.