Re: POC, WIP: OR-clause support for indexes

From: Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>
To: Ranier Vilela <ranier(dot)vf(at)gmail(dot)com>
Cc: Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>, Marcos Pegoraro <marcos(at)f10(dot)com(dot)br>, teodor(at)sigaev(dot)ru, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, Peter Geoghegan <pg(at)bowt(dot)ie>
Subject: Re: POC, WIP: OR-clause support for indexes
Date: 2023-07-11 12:29:21
Message-ID: 61732291-742a-9fb0-dc26-82782121d203@yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi!

On 10.07.2023 15:15, Ranier Vilela wrote:
> Em seg., 10 de jul. de 2023 às 09:03, Ranier Vilela
> <ranier(dot)vf(at)gmail(dot)com> escreveu:
>
> Hi Alena,
>
> Em seg., 10 de jul. de 2023 às 05:38, Alena Rybakina
> <lena(dot)ribackina(at)yandex(dot)ru> escreveu:
>
> I agreed with the changes. Thank you for your work.
>
> I updated patch and added you to the authors.
>
> I specified Ranier Vilela as a reviewer.
>
> Is a good habit when post a new version of the patch, name it v1,
> v2, v3,etc.
> Makes it easy to follow development and references on the thread.
>
Sorry, I fixed it.
>
> Regarding the last patch.
> 1. I think that variable const_is_left is not necessary.
> You can stick with:
> + if (IsA(get_leftop(orqual), Const))
> + nconst_expr =get_rightop(orqual);
> + const_expr = get_leftop(orqual) ;
> + else if (IsA(get_rightop(orqual), Const))
> + nconst_expr =get_leftop(orqual);
> + const_expr = get_rightop(orqual) ;
> + else
> + {
> + or_list = lappend(or_list, orqual);
> + continue;
> + }
>
Agreed.
>
>
> 2. Test scalar_type != RECORDOID is more cheaper,
> mainly if OidIsValid were a function, we knows that is a macro.
> + if (scalar_type != RECORDOID && OidIsValid(scalar_type))
>
Is it safe? Maybe we should first make sure that it can be checked on
RECORDOID at all?
>
> 3. Sorry about wrong tip about array_type, but if really necessary,
> better use it.
> + newa->element_typeid = scalar_type;
> + newa->array_typeid = array_type;
>
Agreed.
>
>
> 4. Is a good habit, call free last, to avoid somebody accidentally
> using it.
> + or_list = lappend(or_list, gentry->expr);
> + list_free(gentry->consts);
> + continue;
>
No, this is not necessary, because we add the original expression in
these places to the resulting list and later
we will not use the list of constants for this group at all, otherwise
it would be an error.

--
Regards,
Alena Rybakina
Postgres Professional

Attachment Content-Type Size
v5-Replace-OR-clause-to-ANY-expressions.patch text/x-patch 8.0 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Palak Chaturvedi 2023-07-11 12:38:56 Re: Extension Enhancement: Buffer Invalidation in pg_buffercache
Previous Message Amit Kapila 2023-07-11 12:29:07 Re: pg_decode_message vs skip_empty_xacts and xact_wrote_changes