Re: pgsql: Introduce hash_search_with_hash_value() function

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Alexander Korotkov <aekorotkov(at)gmail(dot)com>
Cc: Alexander Korotkov <akorotkov(at)postgresql(dot)org>, pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: Re: pgsql: Introduce hash_search_with_hash_value() function
Date: 2024-08-07 10:34:11
Message-ID: CAFj8pRBKTdgr-aULHjZcjqnqPLxU8jj9CagcfWxrZyFrOv2rtQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

st 7. 8. 2024 v 12:22 odesílatel Alexander Korotkov <aekorotkov(at)gmail(dot)com>
napsal:

> On Wed, Aug 7, 2024 at 1:03 PM Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
> wrote:
> >
> > st 7. 8. 2024 v 10:52 odesílatel Alexander Korotkov <
> aekorotkov(at)gmail(dot)com> napsal:
> >>
> >> Hi, Pavel!
> >>
> >> On Wed, Aug 7, 2024 at 9:35 AM Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
> wrote:
> >> > st 7. 8. 2024 v 6:08 odesílatel Alexander Korotkov <
> akorotkov(at)postgresql(dot)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
>
>
> Thank you.
> Please see 40064a8ee1 takes special efforts to match HTAB hash
> function to syscache hash function. By default, their hash values
> don't match and you can't simply use syscache hash value to search
> HTAB. This probably should be mentioned in the header comment of
> hash_seq_init_with_hash_value().
>

yes, enhancing doc should be great + maybe assert

Regards

Pavel

>
> ------
> Regards,
> Alexander Korotkov
> Supabase
>

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2024-08-07 12:24:33 Re: pgsql: Introduce hash_search_with_hash_value() function
Previous Message Alexander Korotkov 2024-08-07 10:22:13 Re: pgsql: Introduce hash_search_with_hash_value() function

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2024-08-07 11:24:39 Call rm_redo in a temporary memory context
Previous Message Bertrand Drouvot 2024-08-07 10:33:49 Re: Historic snapshot doesn't track txns committed in BUILDING_SNAPSHOT state