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