diff options
Diffstat (limited to 'src/backend/lib/bloomfilter.c')
-rw-r--r-- | src/backend/lib/bloomfilter.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/backend/lib/bloomfilter.c b/src/backend/lib/bloomfilter.c index e2c1276f219..1e907cabc6e 100644 --- a/src/backend/lib/bloomfilter.c +++ b/src/backend/lib/bloomfilter.c @@ -37,7 +37,6 @@ #include "access/hash.h" #include "lib/bloomfilter.h" -#include "port/pg_bitutils.h" #define MAX_HASH_FUNCS 10 @@ -188,7 +187,19 @@ double bloom_prop_bits_set(bloom_filter *filter) { int bitset_bytes = filter->m / BITS_PER_BYTE; - uint64 bits_set = pg_popcount((char *) filter->bitset, bitset_bytes); + uint64 bits_set = 0; + int i; + + for (i = 0; i < bitset_bytes; i++) + { + unsigned char byte = filter->bitset[i]; + + while (byte) + { + bits_set++; + byte &= (byte - 1); + } + } return bits_set / (double) filter->m; } |