Re: HASH_FIXED_SIZE flag gets lost when attaching to existing hash table

Поиск
Список
Период
Сортировка
От Aidar Imamov
Тема Re: HASH_FIXED_SIZE flag gets lost when attaching to existing hash table
Дата
Msg-id 4a0dd37545a58a5e1f8c64bf8b0413fa@postgrespro.ru
обсуждение исходный текст
Ответ на Re: HASH_FIXED_SIZE flag gets lost when attaching to existing hash table  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: HASH_FIXED_SIZE flag gets lost when attaching to existing hash table
Список pgsql-hackers
On 2025-07-24 20:24, Tom Lane wrote:
> Aidar Imamov <a.imamov@postgrespro.ru> writes:
>> Recently, while working with hash tables in dynahash.c, I noticed
>> something weird.
>> When a hash table is already created in shared memory, and the another
>> process
>> calls hash_create attempting to attach to it, it seems like the
>> HASH_FIXED_SIZE
>> flag gets lost.
> 
> Yeah, you are right.  This seems to be an oversight in 7c797e719
> which introduced that flag.  It only affects predicate-lock tables
> because we don't use HASH_FIXED_SIZE anywhere else, and it'd only
> matter in EXEC_BACKEND builds, so it's not that surprising that
> nobody noticed.  But we ought to fix it going forward.
> 
> I don't really like your solution though.  ISTM the intent of the
> code is that if the shared hashtable already exists, we adhere to the
> properties it has, we don't rely on the current caller to specify the
> exact same values.  So relying on the caller to get HASH_FIXED_SIZE
> correct here seems like the wrong thing.  I think we ought to add
> an isfixed flag to the shared hashtable header and copy that.
> (IOW, isfixed ought to act more like keysize/ssize/sshift, and should
> perhaps be grouped with them.)
> 
>             regards, tom lane

Thank's, I agree with you.
Attaching an edited version of the patch.

regards,
Aidar Imamov

Вложения

В списке pgsql-hackers по дате отправления: