From 944a1909a4659452d80d1516a4a180824928e150 Mon Sep 17 00:00:00 2001
From: Aleksander Alekseev <aleksander@tigerdata.com>
Date: Tue, 3 Feb 2026 17:13:17 +0300
Subject: [PATCH v2 3/5] Use murmurhash32() instead of hash_uint32() where
 appropriate

Avoid unnecessary uint32 -> Datum -> uint32 casting and use a better hash
function when possible.

Author: Aleksander Alekseev <aleksander@tigerdata.com>
Suggested-by: John Naylor <johncnaylorls@gmail.com>
Reviewed-by: TODO FIXME
Discussion: https://postgr.es/m/CAJ7c6TMPhDRQMmkUHPv8oOK97B1mR8NRS61DgjpdaZUPAwaeZQ%40mail.gmail.com
---
 src/backend/commands/async.c    | 2 +-
 src/backend/utils/adt/bytea.c   | 2 +-
 src/backend/utils/adt/varlena.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index 9ed65bd65ac..96987b145ca 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -651,7 +651,7 @@ globalChannelTableHash(const void *key, size_t size, void *arg)
 	const GlobalChannelKey *k = (const GlobalChannelKey *) key;
 	dshash_hash h;
 
-	h = DatumGetUInt32(hash_uint32(k->dboid));
+	h = murmurhash32(k->dboid);
 	h ^= hash_bytes((const unsigned char *) k->channel,
 					strnlen(k->channel, NAMEDATALEN));
 
diff --git a/src/backend/utils/adt/bytea.c b/src/backend/utils/adt/bytea.c
index 31c849bd2a1..1e255f00570 100644
--- a/src/backend/utils/adt/bytea.c
+++ b/src/backend/utils/adt/bytea.c
@@ -1110,7 +1110,7 @@ bytea_abbrev_convert(Datum original, SortSupport ssup)
 					  Min(len, PG_CACHE_LINE_SIZE));
 
 	if (len > PG_CACHE_LINE_SIZE)
-		hash ^= DatumGetUInt32(hash_uint32((uint32) len));
+		hash ^= murmurhash32((uint32) len);
 
 	addHyperLogLog(&bss->full_card, hash);
 
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 717f26c56fa..24cb47afe47 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -2110,7 +2110,7 @@ varstr_abbrev_convert(Datum original, SortSupport ssup)
 					  Min(len, PG_CACHE_LINE_SIZE));
 
 	if (len > PG_CACHE_LINE_SIZE)
-		hash ^= DatumGetUInt32(hash_uint32((uint32) len));
+		hash ^= murmurhash32((uint32) len);
 
 	addHyperLogLog(&sss->full_card, hash);
 
-- 
2.43.0

