forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit4e97631
committed
Fix join-removal logic for pseudoconstant and outerjoin-delayed quals.
In these cases a qual can get marked with the removable rel in itsrequired_relids, but this is just to schedule its evaluation correctly, notbecause it really depends on the rel. We were assuming that, in effect,we could throw away *all* quals so marked, which is nonsense. Tighten upthe logic to be a little more paranoid about which quals belong to theouter join being considered for removal, and arrange for all quals thatdon't belong to be updated so they will still get evaluated correctly.Also fix another problem that happened to be exposed by this test case,which was that make_join_rel() was failing to notice some cases wherea constant-false qual could be used to prove a join relation empty. If it'sa pushed-down constant false, then the relation is empty even if it's anouter join, because the qual applies after the outer join expansion.Per report from Nathan Grange. Back-patch into 9.0.1 parent3522217 commit4e97631
File tree
6 files changed
+187
-31
lines changed- src
- backend/optimizer
- path
- plan
- util
- include/optimizer
- test/regress
- expected
- sql
6 files changed
+187
-31
lines changedLines changed: 29 additions & 11 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
29 | 29 |
| |
30 | 30 |
| |
31 | 31 |
| |
32 |
| - | |
| 32 | + | |
| 33 | + | |
33 | 34 |
| |
34 | 35 |
| |
35 | 36 |
| |
| |||
603 | 604 |
| |
604 | 605 |
| |
605 | 606 |
| |
606 |
| - | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
607 | 611 |
| |
608 | 612 |
| |
609 | 613 |
| |
| |||
612 | 616 |
| |
613 | 617 |
| |
614 | 618 |
| |
615 |
| - | |
| 619 | + | |
616 | 620 |
| |
617 | 621 |
| |
618 | 622 |
| |
| |||
625 | 629 |
| |
626 | 630 |
| |
627 | 631 |
| |
628 |
| - | |
| 632 | + | |
| 633 | + | |
629 | 634 |
| |
630 | 635 |
| |
631 | 636 |
| |
632 | 637 |
| |
633 |
| - | |
| 638 | + | |
634 | 639 |
| |
635 | 640 |
| |
636 | 641 |
| |
| |||
641 | 646 |
| |
642 | 647 |
| |
643 | 648 |
| |
644 |
| - | |
| 649 | + | |
| 650 | + | |
645 | 651 |
| |
646 | 652 |
| |
647 | 653 |
| |
| |||
665 | 671 |
| |
666 | 672 |
| |
667 | 673 |
| |
668 |
| - | |
| 674 | + | |
669 | 675 |
| |
670 | 676 |
| |
671 | 677 |
| |
| |||
687 | 693 |
| |
688 | 694 |
| |
689 | 695 |
| |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
690 | 702 |
| |
691 | 703 |
| |
692 | 704 |
| |
| |||
696 | 708 |
| |
697 | 709 |
| |
698 | 710 |
| |
699 |
| - | |
| 711 | + | |
| 712 | + | |
700 | 713 |
| |
701 | 714 |
| |
702 | 715 |
| |
703 | 716 |
| |
704 |
| - | |
| 717 | + | |
705 | 718 |
| |
706 | 719 |
| |
707 | 720 |
| |
| |||
947 | 960 |
| |
948 | 961 |
| |
949 | 962 |
| |
| 963 | + | |
| 964 | + | |
950 | 965 |
| |
951 | 966 |
| |
952 |
| - | |
| 967 | + | |
953 | 968 |
| |
954 | 969 |
| |
955 | 970 |
| |
| |||
964 | 979 |
| |
965 | 980 |
| |
966 | 981 |
| |
| 982 | + | |
| 983 | + | |
| 984 | + | |
967 | 985 |
| |
968 | 986 |
| |
969 | 987 |
| |
|
Lines changed: 65 additions & 18 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
16 | 16 |
| |
17 | 17 |
| |
18 | 18 |
| |
19 |
| - | |
| 19 | + | |
20 | 20 |
| |
21 | 21 |
| |
22 | 22 |
| |
23 | 23 |
| |
24 | 24 |
| |
| 25 | + | |
25 | 26 |
| |
26 | 27 |
| |
27 | 28 |
| |
28 | 29 |
| |
29 | 30 |
| |
30 | 31 |
| |
31 |
| - | |
| 32 | + | |
| 33 | + | |
32 | 34 |
| |
33 | 35 |
| |
34 | 36 |
| |
| |||
67 | 69 |
| |
68 | 70 |
| |
69 | 71 |
| |
70 |
| - | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
71 | 75 |
| |
72 | 76 |
| |
73 | 77 |
| |
| |||
216 | 220 |
| |
217 | 221 |
| |
218 | 222 |
| |
219 |
| - | |
220 |
| - | |
221 |
| - | |
222 |
| - | |
223 | 223 |
| |
224 |
| - | |
225 |
| - | |
226 |
| - | |
227 |
| - | |
228 |
| - | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
229 | 228 |
| |
230 |
| - | |
231 |
| - | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
232 | 242 |
| |
233 | 243 |
| |
234 | 244 |
| |
| |||
299 | 309 |
| |
300 | 310 |
| |
301 | 311 |
| |
302 |
| - | |
303 |
| - | |
304 |
| - | |
| 312 | + | |
| 313 | + | |
305 | 314 |
| |
306 | 315 |
| |
307 |
| - | |
| 316 | + | |
308 | 317 |
| |
309 | 318 |
| |
| 319 | + | |
310 | 320 |
| |
311 | 321 |
| |
312 | 322 |
| |
| |||
379 | 389 |
| |
380 | 390 |
| |
381 | 391 |
| |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
382 | 429 |
| |
383 | 430 |
| |
384 | 431 |
| |
|
Lines changed: 35 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
98 | 98 |
| |
99 | 99 |
| |
100 | 100 |
| |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + |
Lines changed: 4 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
23 | 23 |
| |
24 | 24 |
| |
25 | 25 |
| |
| 26 | + | |
| 27 | + | |
| 28 | + | |
26 | 29 |
| |
27 | 30 |
|
Lines changed: 37 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2586 | 2586 |
| |
2587 | 2587 |
| |
2588 | 2588 |
| |
| 2589 | + | |
| 2590 | + | |
| 2591 | + | |
| 2592 | + | |
| 2593 | + | |
| 2594 | + | |
| 2595 | + | |
| 2596 | + | |
| 2597 | + | |
| 2598 | + | |
| 2599 | + | |
| 2600 | + | |
| 2601 | + | |
| 2602 | + | |
| 2603 | + | |
| 2604 | + | |
| 2605 | + | |
| 2606 | + | |
| 2607 | + | |
| 2608 | + | |
| 2609 | + | |
| 2610 | + | |
| 2611 | + | |
| 2612 | + | |
| 2613 | + | |
| 2614 | + | |
| 2615 | + | |
| 2616 | + | |
| 2617 | + | |
| 2618 | + | |
| 2619 | + | |
| 2620 | + | |
| 2621 | + | |
| 2622 | + | |
| 2623 | + | |
| 2624 | + | |
| 2625 | + | |
2589 | 2626 |
| |
2590 | 2627 |
| |
2591 | 2628 |
| |
|
Lines changed: 17 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
615 | 615 |
| |
616 | 616 |
| |
617 | 617 |
| |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
618 | 635 |
| |
619 | 636 |
| |
620 | 637 |
| |
|
0 commit comments
Comments
(0)