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

From: Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>
To: Andrei Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>, pgsql-hackers(at)postgresql(dot)org
Cc: Peter Geoghegan <pg(at)bowt(dot)ie>, Robert Haas <robertmhaas(at)gmail(dot)com>, "Finnerty, Jim" <jfinnert(at)amazon(dot)com>, Marcos Pegoraro <marcos(at)f10(dot)com(dot)br>, teodor(at)sigaev(dot)ru, Ranier Vilela <ranier(dot)vf(at)gmail(dot)com>, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>, Alexander Korotkov <aekorotkov(at)gmail(dot)com>
Subject: Re: POC, WIP: OR-clause support for indexes
Date: 2023-11-21 00:50:15
Message-ID: 4c1c2c0b-802f-45ae-a7cd-007bfd8957cf@postgrespro.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 20.11.2023 11:52, Andrei Lepikhov wrote:
> Looking into the patch, I found some trivial improvements (see
> attachment).
> Also, it is not obvious that using a string representation of the
> clause as a hash table key is needed here. Also, by making a copy of
> the node in the get_key_nconst_node(), you replace the location field,
> but in the case of complex expression, you don't do the same with
> other nodes.
> I propose to generate expression hash instead + prove the equality of
> two expressions by calling equal().
>
I was thinking about your last email and a possible error where the
location field may not be cleared in complex expressions. Unfortunately,
I didn't come up with any examples either, but I think I was able to
handle this with a special function that removes location-related
patterns. The alternative to this is to bypass this expression, but I
think it will be more invasive. In addition, I have added changes
related to the hash table: now the key is of type int.

All changes are displayed in the attached
v9-0001-Replace-OR-clause-to_ANY.diff.txt file.

I haven't measured it yet. But what do you think about these changes?

--
Regards,
Alena Rybakina
Postgres Professional

Attachment Content-Type Size
v9-0001-PATCH-Replace-OR-clause-to-ANY-expressions.patch text/x-patch 34.6 KB
v9-0001-Replace-OR-clause-to_ANY.diff.txt text/plain 7.5 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jeff Davis 2023-11-21 01:13:33 Re: Faster "SET search_path"
Previous Message Michael Paquier 2023-11-21 00:26:00 Re: Show WAL write and fsync stats in pg_stat_io