This came up in the "Refactoring backend fork+exec code" thread recently
[0], but is independent of that work:
On 11/07/2023 01:50, Andres Freund wrote:
>> --- a/src/backend/storage/ipc/shmem.c
>> +++ b/src/backend/storage/ipc/shmem.c
>> @@ -144,6 +144,8 @@ InitShmemAllocation(void)
>> /*
>> * Initialize ShmemVariableCache for transaction manager. (This doesn't
>> * really belong here, but not worth moving.)
>> + *
>> + * XXX: we really should move this
>> */
>> ShmemVariableCache = (VariableCache)
>> ShmemAlloc(sizeof(*ShmemVariableCache));
>
> Heh. Indeed. And probably just rename it to something less insane.
Here's a patch to allocate and initialize it with a pair of ShmemSize
and ShmemInit functions, like all other shared memory structs.
+1 on renaming it too. It's not a cache, the values tracked in
ShmemVariableCache are the authoritative source. Attached patch renames
it to "TransamVariables", but I'm all ears for other suggestions.
[0]
https://www.postgresql.org/message-id/20230710225043.svl7fqxecwshwc7a@awork3.anarazel.de
--
Heikki Linnakangas
Neon (https://neon.tech)