v2-0003-Use-murmurhash32-instead-of-hash_uint32-where-app.patch
text/x-patch
Filename: v2-0003-Use-murmurhash32-instead-of-hash_uint32-where-app.patch
Type: text/x-patch
Part: 2
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v2-0003
Subject: Use murmurhash32() instead of hash_uint32() where appropriate
| File | + | − |
|---|---|---|
| src/backend/commands/async.c | 1 | 1 |
| src/backend/utils/adt/bytea.c | 1 | 1 |
| src/backend/utils/adt/varlena.c | 1 | 1 |
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