Skip to content

Commit

Permalink
Enlarge assertion in bloom_init() for false_positive_rate
Browse files Browse the repository at this point in the history
false_positive_rate is a parameter that can be set with the bloom
opclass in BRIN, and setting it to a value of exactly 0.25 would trigger
an assertion in the first INSERT done on the index with value set.

The assertion changed here relied on BLOOM_{MIN|MAX}_FALSE_POSITIVE_RATE
that are somewhat arbitrary values, and specifying an out-of-range value
would also trigger a failure when defining such an index.  So, as-is,
the assertion was just doubling on the min-max check of the reloption.
This is now enlarged to check that it is a correct percentage value,
instead, based on a suggestion by Tom Lane.

Author: Alexander Lakhin
Reviewed-by: Tom Lane, Shihao Zhong
Discussion: https://postgr.es/m/[email protected]
Backpatch-through: 14
  • Loading branch information
michaelpq committed Nov 8, 2023
1 parent 615f5f6 commit 1b2c6b7
Showing 1 changed file with 1 addition and 2 deletions.
3 changes: 1 addition & 2 deletions src/backend/access/brin/brin_bloom.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,7 @@ bloom_init(int ndistinct, double false_positive_rate)
int nhashes; /* number of hash functions */

Assert(ndistinct > 0);
Assert((false_positive_rate >= BLOOM_MIN_FALSE_POSITIVE_RATE) &&
(false_positive_rate < BLOOM_MAX_FALSE_POSITIVE_RATE));
Assert(false_positive_rate > 0 && false_positive_rate < 1);

/* calculate bloom filter size / parameters */
bloom_filter_size(ndistinct, false_positive_rate,
Expand Down

0 comments on commit 1b2c6b7

Please sign in to comment.