0002-ADDENDUM-add-finalizer-to-guc-name-hash.patch.txt

text/plain

Filename: 0002-ADDENDUM-add-finalizer-to-guc-name-hash.patch.txt
Type: text/plain
Part: 0
Message: Re: Change GUC hashtable to use simplehash?
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index b51d10dbc0..124b8fbe85 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -1363,10 +1363,17 @@ guc_name_compare(const char *namea, const char *nameb)
 static uint32
 guc_name_hash(const char *name)
 {
-	const unsigned char *bytes = (const unsigned char *)name;
-	int                  blen  = strlen(name);
+	uint32		result = 0;
 
-	return hash_bytes(bytes, blen);
+	while (*name)
+	{
+		char		ch = *name++;
+
+		/* Merge into hash ... not very bright, but it needn't be */
+		result = pg_rotate_left32(result, 5);
+		result ^= (uint32) ch;
+	}
+	return murmurhash32(result);
 }
 
 /*