PostgreSQL Source Code: src/test/modules/test_bloomfilter/test_bloomfilter.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
14
19
21
22
23#define MAX_ELEMENT_BYTES 21
24
25#define FPOSITIVE_THRESHOLD 0.01
26
27
28
29
30
31static void
33{
36
37 for (i = 0; i < nelements; i++)
38 {
40
43 }
44}
45
46
47
48
49
50
53{
55 int64 nfalsepos = 0;
57
58 for (i = 0; i < nelements; i++)
59 {
61
65 nfalsepos++;
66 }
67
68 return nfalsepos;
69}
70
71static void
73{
74 int bloom_work_mem;
78
79 bloom_work_mem = ((int64) 1 << power) / (8 * 1024);
80
81 elog(DEBUG1, "bloom_work_mem (KB): %d", bloom_work_mem);
82
83
84
85
86
87
89
90
91 filter = bloom_create(nelements, bloom_work_mem, seed);
94
97 seed, nfalsepos, (double) nfalsepos / nelements,
99
101}
102
104
105
106
107
108
109
110
111
114{
119 int i;
120
121 if (power < 23 || power > 32)
122 elog(ERROR, "power argument must be between 23 and 32 inclusive");
123
124 if (tests <= 0)
125 elog(ERROR, "invalid number of tests: %d", tests);
126
127 if (nelements < 0)
128 elog(ERROR, "invalid number of elements: %d", tests);
129
130 for (i = 0; i < tests; i++)
131 {
132 elog(DEBUG1, "beginning test #%d...", i + 1);
133
135 }
136
138}
void bloom_free(bloom_filter *filter)
bloom_filter * bloom_create(int64 total_elems, int bloom_work_mem, uint64 seed)
double bloom_prop_bits_set(bloom_filter *filter)
bool bloom_lacks_element(bloom_filter *filter, unsigned char *elem, size_t len)
void bloom_add_element(bloom_filter *filter, unsigned char *elem, size_t len)
int errmsg_internal(const char *fmt,...)
#define ereport(elevel,...)
#define PG_GETARG_INT64(n)
#define PG_GETARG_INT32(n)
#define CHECK_FOR_INTERRUPTS()
int32 pg_prng_int32p(pg_prng_state *state)
pg_prng_state pg_global_prng_state
static chr element(struct vars *v, const chr *startp, const chr *endp)
static void populate_with_dummy_strings(bloom_filter *filter, int64 nelements)
static int64 nfalsepos_for_missing_strings(bloom_filter *filter, int64 nelements)
PG_FUNCTION_INFO_V1(test_bloomfilter)
Datum test_bloomfilter(PG_FUNCTION_ARGS)
static void create_and_test_bloom(int power, int64 nelements, int callerseed)
#define MAX_ELEMENT_BYTES
#define FPOSITIVE_THRESHOLD