forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit72bd38c
committed
Transform OR clauses to ANY expression
Replace (expr op C1) OR (expr op C2) ... with expr op ANY(ARRAY[C1, C2, ...])on the preliminary stage of optimization when we are still working with theexpression tree.Here Cn is a n-th constant expression, 'expr' is non-constant expression, 'op'is an operator which returns boolean result and has a commuter (for the caseof reverse order of constant and non-constant parts of the expression,like 'Cn op expr').Sometimes it can lead to not optimal plan. This is why there is aor_to_any_transform_limit GUC. It specifies a threshold value of length ofarguments in an OR expression that triggers the OR-to-ANY transformation.Generally, more groupable OR arguments mean that transformation will be morelikely to win than to lose.Discussion:https://postgr.es/m/567ED6CA.2040504%40sigaev.ruAuthor: Alena Rybakina <lena.ribackina@yandex.ru>Author: Andrey Lepikhov <a.lepikhov@postgrespro.ru>Reviewed-by: Peter Geoghegan <pg@bowt.ie>Reviewed-by: Ranier Vilela <ranier.vf@gmail.com>Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>Reviewed-by: Robert Haas <robertmhaas@gmail.com>Reviewed-by: Jian He <jian.universality@gmail.com>1 parent75a47b6 commit72bd38c
File tree
14 files changed
+785
-20
lines changed- doc/src/sgml
- src
- backend
- nodes
- optimizer/prep
- utils/misc
- include
- nodes
- optimizer
- test/regress
- expected
- sql
- tools/pgindent
14 files changed
+785
-20
lines changedLines changed: 57 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
6304 | 6304 |
| |
6305 | 6305 |
| |
6306 | 6306 |
| |
| 6307 | + | |
| 6308 | + | |
| 6309 | + | |
| 6310 | + | |
| 6311 | + | |
| 6312 | + | |
| 6313 | + | |
| 6314 | + | |
| 6315 | + | |
| 6316 | + | |
| 6317 | + | |
| 6318 | + | |
| 6319 | + | |
| 6320 | + | |
| 6321 | + | |
| 6322 | + | |
| 6323 | + | |
| 6324 | + | |
| 6325 | + | |
| 6326 | + | |
| 6327 | + | |
| 6328 | + | |
| 6329 | + | |
| 6330 | + | |
| 6331 | + | |
| 6332 | + | |
| 6333 | + | |
| 6334 | + | |
| 6335 | + | |
| 6336 | + | |
| 6337 | + | |
| 6338 | + | |
| 6339 | + | |
| 6340 | + | |
| 6341 | + | |
| 6342 | + | |
| 6343 | + | |
| 6344 | + | |
| 6345 | + | |
| 6346 | + | |
| 6347 | + | |
| 6348 | + | |
| 6349 | + | |
| 6350 | + | |
| 6351 | + | |
| 6352 | + | |
| 6353 | + | |
| 6354 | + | |
| 6355 | + | |
| 6356 | + | |
| 6357 | + | |
| 6358 | + | |
| 6359 | + | |
| 6360 | + | |
| 6361 | + | |
| 6362 | + | |
| 6363 | + | |
6307 | 6364 |
| |
6308 | 6365 |
| |
6309 | 6366 |
| |
|
Lines changed: 27 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
141 | 141 |
| |
142 | 142 |
| |
143 | 143 |
| |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
144 | 171 |
| |
145 | 172 |
| |
146 | 173 |
| |
|
0 commit comments
Comments
(0)