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); } /*