Re: POC, WIP: OR-clause support for indexes
Alena Rybakina <lena.ribackina@yandex.ru>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Make group_similar_or_args() reorder clause list as little as possible
- 775a06d44c04 18.0 landed
-
Allow usage of match_orclause_to_indexcol() for joins
- 627d63419e22 18.0 landed
-
Skip not SOAP-supported indexes while transforming an OR clause into SAOP
- 5bba0546eecb 18.0 landed
-
Remove the wrong assertion from match_orclause_to_indexcol()
- d4d11940df94 18.0 landed
-
Teach bitmap path generation about transforming OR-clauses to SAOP's
- ae4569161a27 18.0 landed
-
Transform OR-clauses to SAOP's during index matching
- d4378c0005e6 18.0 landed
-
Fix the value of or_to_any_transform_limit in postgresql.conf.sample
- 2af75e117478 17.0 landed
-
Transform OR clauses to ANY expression
- 72bd38cc99a1 17.0 landed
-
MergeAttributes code deduplication
- 64444ce071f6 17.0 cited
-
SEARCH and CYCLE clauses
- 3696a600e229 14.0 cited
-
Improve estimation of OR clauses using extended statistics.
- 25a9e54d2db3 14.0 cited
-
Teach btree to handle ScalarArrayOpExpr quals natively.
- 9e8da0f75731 9.2.0 cited
-
Revise collation derivation method and expression-tree representation.
- b310b6e31ce5 9.1.0 cited
-
Instead of trying to force WHERE clauses into CNF or DNF normal form,
- 9888192fb773 8.0.0 cited
Attachments
- regression.diffs (text/plain)
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 >