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
>