From e0b76cbffd9d1b766b94c52d796e50f513f17e9f Mon Sep 17 00:00:00 2001 From: lani_karrot Date: Thu, 12 Feb 2026 00:05:33 +0900 Subject: [PATCH] fix: wrong bloom filter max size bits --- filters/bloom_filter_builder.go | 7 +++++-- filters/bloom_filter_test.go | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/filters/bloom_filter_builder.go b/filters/bloom_filter_builder.go index 73fe651..9eb0374 100644 --- a/filters/bloom_filter_builder.go +++ b/filters/bloom_filter_builder.go @@ -22,11 +22,15 @@ import ( "encoding/binary" "fmt" "math" + + "github.com/apache/datasketches-go/internal" ) -// Default seed value for hash functions +// DefaultSeed is the default seed value for hash functions const DefaultSeed = uint64(9001) +var maxBits = uint64((math.MaxInt32 - internal.FamilyEnum.BloomFilter.MaxPreLongs) * 64) + // bloomFilterOptions holds optional parameters for filter construction. type bloomFilterOptions struct { seed uint64 @@ -59,7 +63,6 @@ func NewBloomFilterBySize(numBits uint64, numHashes uint16, opts ...BloomFilterO } // Check for overflow - maxBits := uint64(math.MaxInt32-32) * 64 if numBits > maxBits { return nil, fmt.Errorf("numBits exceeds maximum allowed size") } diff --git a/filters/bloom_filter_test.go b/filters/bloom_filter_test.go index fe85a23..3a4f0b7 100644 --- a/filters/bloom_filter_test.go +++ b/filters/bloom_filter_test.go @@ -38,6 +38,10 @@ func TestInvalidConstructorArguments(t *testing.T) { _, err = NewBloomFilterBySize(1<<60, 3) assert.Error(t, err) + // numBits exceeds maxBits by 1 + _, err = NewBloomFilterBySize(maxBits+1, 3) + assert.ErrorContains(t, err, "numBits exceeds maximum allowed size") + // Invalid FPP _, err = NewBloomFilterByAccuracy(1000, 0.0) assert.Error(t, err)