st 7. 8. 2024 v 10:52 odesílatel Alexander Korotkov <aekorotkov@gmail.com> napsal:
Hi, Pavel!
On Wed, Aug 7, 2024 at 9:35 AM Pavel Stehule <pavel.stehule@gmail.com> wrote: > st 7. 8. 2024 v 6:08 odesílatel Alexander Korotkov <akorotkov@postgresql.org> napsal: >> >> Introduce hash_search_with_hash_value() function >> >> This new function iterates hash entries with given hash values. This function >> is designed to avoid full sequential hash search in the syscache invalidation >> callbacks. >> >> Discussion: https://postgr.es/m/5812a6e5-68ae-4d84-9d85-b443176966a1%40sigaev.ru >> Author: Teodor Sigaev >> Reviewed-by: Aleksander Alekseev, Tom Lane, Michael Paquier, Roman Zharkov >> Reviewed-by: Andrei Lepikhov > > > I tried to use hash_seq_init_with_hash_value in session variables patch, but it doesn't work there. > > <-->if (!sessionvars) > <--><-->return; > > elog(NOTICE, "%u", hashvalue); > > > <-->hash_seq_init(&status, sessionvars); > > <-->while ((svar = (SVariable) hash_seq_search(&status)) != NULL) > <-->{ > <--><-->if (hashvalue == 0 || svar->hashvalue == hashvalue) > <--><-->{ > <--><--><-->elog(NOTICE, "FOUND OLD"); > <--><--><-->svar->is_valid = false; > <--><-->} > <-->} > > > > <-->/* > <--> * If the hashvalue is not specified, we have to recheck all currently > <--> * used session variables. Since we can't tell the exact session variable > <--> * from its hashvalue, we have to iterate over all items in the hash bucket. > <--> */ > <-->if (hashvalue == 0) > <--><-->hash_seq_init(&status, sessionvars); > <-->else > <--><-->hash_seq_init_with_hash_value(&status, sessionvars, hashvalue); > > <-->while ((svar = (SVariable) hash_seq_search(&status)) != NULL) > <-->{ > <--><-->Assert(hashvalue == 0 || svar->hashvalue == hashvalue); > > elog(NOTICE, "found"); > > <--><-->svar->is_valid = false; > <--><-->needs_validation = true; > <-->} > } > > Old methods found an entry, but new not. > > What am I doing wrong?
I'm trying to check this. Applying this patch [1], but got conflicts. Could you please, rebase the patch, so I can recheck the issue?