File tree 2 files changed +20
-18
lines changed
2 files changed +20
-18
lines changed Original file line number Diff line number Diff line change 45
45
#include "nodes/tidbitmap.h"
46
46
#include "storage/lwlock.h"
47
47
#include "utils/dsa.h"
48
+ #include "utils/hashutils.h"
48
49
49
50
/*
50
51
* The maximum number of tuples per page is not large (typically 256 with
@@ -237,30 +238,13 @@ static int tbm_comparator(const void *left, const void *right);
237
238
static int tbm_shared_comparator (const void * left , const void * right ,
238
239
void * arg );
239
240
240
- /*
241
- * Simple inline murmur hash implementation for the exact width required, for
242
- * performance.
243
- */
244
- static inline uint32
245
- hash_blockno (BlockNumber b )
246
- {
247
- uint32 h = b ;
248
-
249
- h ^= h >> 16 ;
250
- h *= 0x85ebca6b ;
251
- h ^= h >> 13 ;
252
- h *= 0xc2b2ae35 ;
253
- h ^= h >> 16 ;
254
- return h ;
255
- }
256
-
257
241
/* define hashtable mapping block numbers to PagetableEntry's */
258
242
#define SH_USE_NONDEFAULT_ALLOCATOR
259
243
#define SH_PREFIX pagetable
260
244
#define SH_ELEMENT_TYPE PagetableEntry
261
245
#define SH_KEY_TYPE BlockNumber
262
246
#define SH_KEY blockno
263
- #define SH_HASH_KEY (tb , key ) hash_blockno (key)
247
+ #define SH_HASH_KEY (tb , key ) murmurhash32 (key)
264
248
#define SH_EQUAL (tb , a , b ) a == b
265
249
#define SH_SCOPE static inline
266
250
#define SH_DEFINE
Original file line number Diff line number Diff line change @@ -20,4 +20,22 @@ hash_combine(uint32 a, uint32 b)
20
20
return a ;
21
21
}
22
22
23
+
24
+ /*
25
+ * Simple inline murmur hash implementation hashing a 32 bit ingeger, for
26
+ * performance.
27
+ */
28
+ static inline uint32
29
+ murmurhash32 (uint32 data )
30
+ {
31
+ uint32 h = data ;
32
+
33
+ h ^= h >> 16 ;
34
+ h *= 0x85ebca6b ;
35
+ h ^= h >> 13 ;
36
+ h *= 0xc2b2ae35 ;
37
+ h ^= h >> 16 ;
38
+ return h ;
39
+ }
40
+
23
41
#endif /* HASHUTILS_H */
You can’t perform that action at this time.
0 commit comments