File tree Expand file tree Collapse file tree 2 files changed +20
-18
lines changed Expand file tree Collapse file tree 2 files changed +20
-18
lines changed Original file line number Diff line number Diff line change 4545#include "nodes/tidbitmap.h"
4646#include "storage/lwlock.h"
4747#include "utils/dsa.h"
48+ #include "utils/hashutils.h"
4849
4950/*
5051 * 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);
237238static int tbm_shared_comparator (const void * left , const void * right ,
238239 void * arg );
239240
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-
257241/* define hashtable mapping block numbers to PagetableEntry's */
258242#define SH_USE_NONDEFAULT_ALLOCATOR
259243#define SH_PREFIX pagetable
260244#define SH_ELEMENT_TYPE PagetableEntry
261245#define SH_KEY_TYPE BlockNumber
262246#define SH_KEY blockno
263- #define SH_HASH_KEY (tb , key ) hash_blockno (key)
247+ #define SH_HASH_KEY (tb , key ) murmurhash32 (key)
264248#define SH_EQUAL (tb , a , b ) a == b
265249#define SH_SCOPE static inline
266250#define SH_DEFINE
Original file line number Diff line number Diff line change @@ -20,4 +20,22 @@ hash_combine(uint32 a, uint32 b)
2020 return a ;
2121}
2222
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+
2341#endif /* HASHUTILS_H */
You can’t perform that action at this time.
0 commit comments