Re: Safer hash table initialization macro
Jelte Fennema-Nio <postgres@jeltef.nl>
From: "Jelte Fennema-Nio" <postgres@jeltef.nl>
To: "Bertrand Drouvot" <bertranddrouvot.pg@gmail.com>
Cc: <pgsql-hackers@lists.postgresql.org>
Date: 2025-12-04T15:29:55Z
Lists: pgsql-hackers
Attachments
- v2-0001-Add-hash_make-macros.patch (text/x-patch)
- v2-0002-Use-hash_make-macros-throughout-the-codebase.patch (text/x-patch)
- v2-0003-Inline-functions-that-have-now-become-trivial.patch (text/x-patch)
- v2-0004-Add-foreach_hash-macro.patch (text/x-patch)
- v2-0005-Use-foreach_hash-macro-throughout-the-codebase.patch (text/x-patch)
On Wed Dec 3, 2025 at 12:17 PM CET, Bertrand Drouvot wrote: > I suggest we move forward one > step at a time, first step being the new macros. Does that make sense to you? Normally I would agree, but in this case I think the new macros you proposing would become obsolete once we have the better hash table creation functions I have in mind. And if we're going to update all places where we create hash tables, I'd rather update them to something really nice than a small improvement. I couldn't let it go (nerd-sniped). So here's a patchset that adds some macros that I think are pretty nice. Including a foreach_hash macro. I'm a bit on the fence about the C11 _Generic code to determine whether we should use HASH_BLOBS or HASH_STRINGS based on the type of the key. It works really nicely in practice, but I'm worried it's a bit too much magic. Probably we should at least have an override to allow using HASH_BLOBS anyway for a char array (in case it's not null terminated).