diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c index 8310f73212..f291ded795 100644 --- a/src/backend/storage/smgr/smgr.c +++ b/src/backend/storage/smgr/smgr.c @@ -147,18 +147,19 @@ static inline uint32 relfilenodebackend_hash(RelFileNodeBackend *rnode) { uint32 hashkey; + uint32 hashkey2; hashkey = murmurhash32((uint32) rnode->node.spcNode); /* rotate hashkey left 1 bit at each step */ - hashkey = pg_rotate_left32(hashkey, 1); - hashkey ^= murmurhash32((uint32) rnode->node.dbNode); + hashkey2 = murmurhash32((uint32) rnode->node.dbNode); + hashkey = hash_combine(hashkey, hashkey2); - hashkey = pg_rotate_left32(hashkey, 1); - hashkey ^= murmurhash32((uint32) rnode->node.relNode); + hashkey2 = murmurhash32((uint32) rnode->node.relNode); + hashkey = hash_combine(hashkey, hashkey2); - hashkey = pg_rotate_left32(hashkey, 1); - hashkey ^= murmurhash32((uint32) rnode->backend); + hashkey2 = murmurhash32((uint32) rnode->backend); + hashkey = hash_combine(hashkey, hashkey2); return hashkey; }