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

From: Alena Rybakina <lena(dot)ribackina(at)yandex(dot)ru>
To: Marcos Pegoraro <marcos(at)f10(dot)com(dot)br>, Alena Rybakina <a(dot)rybakina(at)postgrespro(dot)ru>
Cc: Andrey Lepikhov <a(dot)lepikhov(at)postgrespro(dot)ru>, pgsql-hackers(at)postgresql(dot)org, teodor(at)sigaev(dot)ru
Subject: Re: POC, WIP: OR-clause support for indexes
Date: 2023-06-26 02:38:14
Message-ID: 4fd4319b-68cb-d866-90fa-0059b63ccbea@yandex.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Sorry,  I wrote the last sentence in a confusing way, I meant that I
formed transformations for any number of "or" expressions
(const_transform_or_limit=1). in regression tests, I noticed only diff
changes of transformations of "or" expressions to "any". I attach a file
with diff.

On 26.06.2023 04:47, Alena Rybakina wrote:
>
> Hi, all! Sorry I haven't written for a long time.
>
> I finished writing the code patch for transformation "Or" expressions
> to "Any" expressions. I didn't see any problems in regression tests,
> even when I changed the constant at which the minimum or expression is
> replaced by any at 0. I ran my patch on sqlancer and so far the code
> has never fallen.
>
> On 14.01.2023 18:45, Marcos Pegoraro wrote:
>>
>> I agree with your idea and try to implement it and will soon
>> attach a patch with a solution.
>>
>> Additionally, if those OR constants repeat you'll see ...
>> If all constants are the same value, fine
>> explain select * from x where ((ID = 1) OR (ID = 1) OR (ID = 1));
>> Index Only Scan using x_id on x  (cost=0.42..4.44 rows=1 width=4)
>>   Index Cond: (id = 1)
>>
>> if all values are almost the same, ops
>> explain select * from x where ((ID = 1) OR (ID = 1) OR (ID = 1) OR
>> (ID = 2));
>> Bitmap Heap Scan on x  (cost=17.73..33.45 rows=4 width=4)
>>   Recheck Cond: ((id = 1) OR (id = 1) OR (id = 1) OR (id = 2))
>>   ->  BitmapOr  (cost=17.73..17.73 rows=4 width=0)
>>         ->  Bitmap Index Scan on x_id  (cost=0.00..4.43 rows=1 width=0)
>>               Index Cond: (id = 1)
>>         ->  Bitmap Index Scan on x_id  (cost=0.00..4.43 rows=1 width=0)
>>               Index Cond: (id = 1)
>>         ->  Bitmap Index Scan on x_id  (cost=0.00..4.43 rows=1 width=0)
>>               Index Cond: (id = 1)
>>         ->  Bitmap Index Scan on x_id  (cost=0.00..4.43 rows=1 width=0)
>>               Index Cond: (id = 2)
>>
>> thanks
>> Marcos
>>
> --
>
> Regards,
>
> Alena Rybakina
>

Attachment Content-Type Size
regression.diffs text/plain 11.3 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message David Rowley 2023-06-26 02:38:43 Re: Speeding Up Bitmapset
Previous Message Peter Smith 2023-06-26 02:21:14 Re: [PATCH] Reuse Workers and Replication Slots during Logical Replication