v6-0012-Use-chunk-interface-for-guc_name_hash.patch
text/x-patch
Filename: v6-0012-Use-chunk-interface-for-guc_name_hash.patch
Type: text/x-patch
Part: 12
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 v6-0012
Subject: Use chunk interface for guc_name_hash
| File | + | − |
|---|---|---|
| src/backend/utils/misc/guc.c | 8 | 5 |
From a96ec013abdd79f2e061fddaa49291f2f16f5e65 Mon Sep 17 00:00:00 2001
From: John Naylor <john.naylor@postgresql.org>
Date: Sat, 9 Dec 2023 18:05:27 +0700
Subject: [PATCH v6 12/13] Use chunk interface for guc_name_hash
---
src/backend/utils/misc/guc.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 46591172fd..507d35718f 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -1351,16 +1351,19 @@ guc_name_hash(const char *name)
{
fasthash_state hs;
- fasthash_init(&hs, 0, 0);
+ fasthash_init(&hs, 0, 0, true);
while (*name)
{
- unsigned char ch = *name++;
+ int chunk_len;
- /* quick and dirty casefolding suitable for hashing */
- ch |= 0x20;
+ for (chunk_len = 0;
+ chunk_len < FH_SIZEOF_ACCUM && name[chunk_len] != '\0';
+ chunk_len++)
+ ;
- fasthash_accum_byte(&hs, ch);
+ fasthash_accum(&hs, (const unsigned char *) name, chunk_len);
+ name += chunk_len;
}
return fasthash_final32(&hs);
}
--
2.43.0