Commit 627d634
committed
Allow usage of match_orclause_to_indexcol() for joins
This commit allows transformation of OR-clauses into SAOP's for index scans
within nested loop joins. That required the following changes.
1. Make match_orclause_to_indexcol() and group_similar_or_args() understand
const-ness in the same way as match_opclause_to_indexcol(). This
generally makes our approach more uniform.
2. Make match_join_clauses_to_index() pass OR-clauses to
match_clause_to_index().
3. Also switch match_join_clauses_to_index() to use list_append_unique_ptr()
for adding clauses to *joinorclauses. That avoids possible duplicates
when processing the same clauses with different indexes. Previously such
duplicates were elimited in match_clause_to_index(), but now
group_similar_or_args() each time generates distinct copies of grouped
OR clauses.
Discussion: https://postgr.es/m/CAPpHfdv%2BjtNwofg-p5z86jLYZUTt6tR17Wy00ta0dL%3DwHQN3ZA%40mail.gmail.com
Reviewed-by: Andrei Lepikhov <lepihov@gmail.com>
Reviewed-by: Alena Rybakina <a.rybakina@postgrespro.ru>
Reviewed-by: Pavel Borisov <pashkin.elfe@gmail.com>1 parent 23ef119 commit 627d634
File tree
6 files changed
+150
-42
lines changed- src
- backend/optimizer/path
- test/regress
- expected
- sql
6 files changed
+150
-42
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1255 | 1255 | | |
1256 | 1256 | | |
1257 | 1257 | | |
| 1258 | + | |
1258 | 1259 | | |
1259 | 1260 | | |
1260 | 1261 | | |
| |||
1319 | 1320 | | |
1320 | 1321 | | |
1321 | 1322 | | |
1322 | | - | |
1323 | | - | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
1324 | 1326 | | |
1325 | | - | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
1326 | 1330 | | |
1327 | 1331 | | |
1328 | 1332 | | |
| |||
1333 | 1337 | | |
1334 | 1338 | | |
1335 | 1339 | | |
1336 | | - | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
1337 | 1343 | | |
1338 | 1344 | | |
1339 | 1345 | | |
| |||
2414 | 2420 | | |
2415 | 2421 | | |
2416 | 2422 | | |
| 2423 | + | |
2417 | 2424 | | |
2418 | 2425 | | |
2419 | 2426 | | |
| |||
2432 | 2439 | | |
2433 | 2440 | | |
2434 | 2441 | | |
2435 | | - | |
| 2442 | + | |
| 2443 | + | |
| 2444 | + | |
| 2445 | + | |
| 2446 | + | |
2436 | 2447 | | |
2437 | | - | |
2438 | | - | |
2439 | | - | |
| 2448 | + | |
| 2449 | + | |
| 2450 | + | |
2440 | 2451 | | |
2441 | 2452 | | |
2442 | 2453 | | |
| |||
2585 | 2596 | | |
2586 | 2597 | | |
2587 | 2598 | | |
2588 | | - | |
2589 | | - | |
2590 | | - | |
2591 | | - | |
| 2599 | + | |
2592 | 2600 | | |
2593 | 2601 | | |
2594 | 2602 | | |
| |||
3247 | 3255 | | |
3248 | 3256 | | |
3249 | 3257 | | |
3250 | | - | |
| 3258 | + | |
| 3259 | + | |
3251 | 3260 | | |
3252 | 3261 | | |
3253 | 3262 | | |
| |||
3259 | 3268 | | |
3260 | 3269 | | |
3261 | 3270 | | |
3262 | | - | |
3263 | | - | |
3264 | | - | |
3265 | | - | |
| 3271 | + | |
| 3272 | + | |
| 3273 | + | |
3266 | 3274 | | |
3267 | 3275 | | |
3268 | 3276 | | |
| |||
3313 | 3321 | | |
3314 | 3322 | | |
3315 | 3323 | | |
3316 | | - | |
3317 | | - | |
| 3324 | + | |
| 3325 | + | |
3318 | 3326 | | |
3319 | 3327 | | |
3320 | 3328 | | |
3321 | | - | |
| 3329 | + | |
| 3330 | + | |
| 3331 | + | |
3322 | 3332 | | |
3323 | 3333 | | |
3324 | 3334 | | |
3325 | 3335 | | |
3326 | | - | |
| 3336 | + | |
| 3337 | + | |
| 3338 | + | |
3327 | 3339 | | |
3328 | 3340 | | |
3329 | 3341 | | |
| |||
3350 | 3362 | | |
3351 | 3363 | | |
3352 | 3364 | | |
3353 | | - | |
3354 | | - | |
3355 | | - | |
3356 | | - | |
3357 | 3365 | | |
3358 | 3366 | | |
3359 | 3367 | | |
| |||
3390 | 3398 | | |
3391 | 3399 | | |
3392 | 3400 | | |
3393 | | - | |
3394 | | - | |
| 3401 | + | |
| 3402 | + | |
| 3403 | + | |
| 3404 | + | |
| 3405 | + | |
| 3406 | + | |
3395 | 3407 | | |
3396 | 3408 | | |
3397 | 3409 | | |
| |||
3408 | 3420 | | |
3409 | 3421 | | |
3410 | 3422 | | |
3411 | | - | |
| 3423 | + | |
3412 | 3424 | | |
3413 | 3425 | | |
3414 | | - | |
| 3426 | + | |
3415 | 3427 | | |
3416 | 3428 | | |
3417 | 3429 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2006 | 2006 | | |
2007 | 2007 | | |
2008 | 2008 | | |
| 2009 | + | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
| 2015 | + | |
| 2016 | + | |
| 2017 | + | |
| 2018 | + | |
| 2019 | + | |
| 2020 | + | |
| 2021 | + | |
| 2022 | + | |
| 2023 | + | |
| 2024 | + | |
| 2025 | + | |
| 2026 | + | |
| 2027 | + | |
| 2028 | + | |
| 2029 | + | |
2009 | 2030 | | |
2010 | 2031 | | |
2011 | 2032 | | |
| |||
3255 | 3276 | | |
3256 | 3277 | | |
3257 | 3278 | | |
| 3279 | + | |
| 3280 | + | |
| 3281 | + | |
| 3282 | + | |
| 3283 | + | |
| 3284 | + | |
| 3285 | + | |
| 3286 | + | |
| 3287 | + | |
| 3288 | + | |
| 3289 | + | |
3258 | 3290 | | |
3259 | 3291 | | |
3260 | 3292 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3849 | 3849 | | |
3850 | 3850 | | |
3851 | 3851 | | |
3852 | | - | |
3853 | | - | |
3854 | | - | |
3855 | | - | |
3856 | | - | |
| 3852 | + | |
| 3853 | + | |
3857 | 3854 | | |
3858 | 3855 | | |
3859 | | - | |
| 3856 | + | |
3860 | 3857 | | |
3861 | 3858 | | |
3862 | 3859 | | |
| |||
8239 | 8236 | | |
8240 | 8237 | | |
8241 | 8238 | | |
| 8239 | + | |
| 8240 | + | |
| 8241 | + | |
| 8242 | + | |
| 8243 | + | |
| 8244 | + | |
| 8245 | + | |
| 8246 | + | |
| 8247 | + | |
| 8248 | + | |
| 8249 | + | |
| 8250 | + | |
| 8251 | + | |
| 8252 | + | |
| 8253 | + | |
| 8254 | + | |
| 8255 | + | |
| 8256 | + | |
| 8257 | + | |
| 8258 | + | |
| 8259 | + | |
| 8260 | + | |
| 8261 | + | |
| 8262 | + | |
| 8263 | + | |
| 8264 | + | |
| 8265 | + | |
| 8266 | + | |
| 8267 | + | |
| 8268 | + | |
| 8269 | + | |
| 8270 | + | |
| 8271 | + | |
| 8272 | + | |
| 8273 | + | |
| 8274 | + | |
| 8275 | + | |
| 8276 | + | |
| 8277 | + | |
| 8278 | + | |
| 8279 | + | |
| 8280 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2533 | 2533 | | |
2534 | 2534 | | |
2535 | 2535 | | |
2536 | | - | |
| 2536 | + | |
2537 | 2537 | | |
2538 | 2538 | | |
2539 | | - | |
2540 | | - | |
2541 | 2539 | | |
2542 | 2540 | | |
| 2541 | + | |
| 2542 | + | |
2543 | 2543 | | |
2544 | 2544 | | |
2545 | 2545 | | |
2546 | 2546 | | |
2547 | | - | |
| 2547 | + | |
2548 | 2548 | | |
2549 | 2549 | | |
2550 | | - | |
2551 | | - | |
2552 | 2550 | | |
2553 | 2551 | | |
| 2552 | + | |
| 2553 | + | |
2554 | 2554 | | |
2555 | 2555 | | |
2556 | 2556 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
781 | 781 | | |
782 | 782 | | |
783 | 783 | | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
784 | 790 | | |
785 | 791 | | |
786 | 792 | | |
| |||
1367 | 1373 | | |
1368 | 1374 | | |
1369 | 1375 | | |
| 1376 | + | |
| 1377 | + | |
| 1378 | + | |
1370 | 1379 | | |
1371 | 1380 | | |
1372 | 1381 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3016 | 3016 | | |
3017 | 3017 | | |
3018 | 3018 | | |
3019 | | - | |
3020 | 3019 | | |
3021 | 3020 | | |
3022 | 3021 | | |
| |||
3046 | 3045 | | |
3047 | 3046 | | |
3048 | 3047 | | |
| 3048 | + | |
| 3049 | + | |
| 3050 | + | |
| 3051 | + | |
| 3052 | + | |
| 3053 | + | |
| 3054 | + | |
| 3055 | + | |
| 3056 | + | |
| 3057 | + | |
| 3058 | + | |
| 3059 | + | |
| 3060 | + | |
| 3061 | + | |
| 3062 | + | |
| 3063 | + | |
| 3064 | + | |
0 commit comments