Fix PrivateRefCount hash table key size

Bertrand Drouvot <bertranddrouvot.pg@gmail.com>

From: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
To: pgsql-hackers@lists.postgresql.org
Date: 2025-12-02T14:43:25Z
Lists: pgsql-hackers

Attachments

Hi hackers,

While working on [1], I noticed that there is a type mismatch when computing
the key size for the PrivateRefCount hash table. Indeed, the first
PrivateRefCountEntry member type is Buffer (int), so the keysize should be
sizeof(Buffer) and not sizeof(int32).

PFA attached a patch to fix it.

It has been kind of automatically detected while working on [1], so I'm pretty
confident there are no other type mismatches for hash table key size.

Note that this is exactly the kind of issue that the macro proposed in [1] would
avoid.

[1]: https://www.postgresql.org/message-id/flat/aS2b3LoUypW1/Gdz%40ip-10-97-1-34.eu-west-3.compute.internal

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix key size of PrivateRefCountHash.

  2. Make backend local tracking of buffer pins memory efficient.

  3. Remove RelationGetBufferWithBuffer(), which is horribly confused about