st 7. 8. 2024 v 10:52 odesílatel Alexander Korotkov <aekorot...@gmail.com> napsal:
> Hi, Pavel! > > On Wed, Aug 7, 2024 at 9:35 AM Pavel Stehule <pavel.steh...@gmail.com> > wrote: > > st 7. 8. 2024 v 6:08 odesílatel Alexander Korotkov < > akorot...@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? > > I sent rebased patchset Message-ID: CAFj8pRAskimJmB9Q8pHDa8YoLphVoZMH1xPeGBK8Eze=u+_...@mail.gmail.com <https://www.postgresql.org/message-id/CAFj8pRAskimJmB9Q8pHDa8YoLphVoZMH1xPeGBK8Eze%3Du%2B_hBQ%40mail.gmail.com> Regards Pavel > Links. > 1. > https://www.postgresql.org/message-id/flat/CAFj8pRD053CY_N4%3D6SvPe7ke6xPbh%3DK50LUAOwjC3jm8Me9Obg%40mail.gmail.com > > ------ > Regards, > Alexander Korotkov > Supabase >