forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit385f337
committed
Allow foreign and custom joins to handle EvalPlanQual rechecks.
Commite7cb7ee provided basicinfrastructure for allowing a foreign data wrapper or custom scanprovider to replace a join of one or more tables with a scan.However, this infrastructure failed to take into account the needfor possible EvalPlanQual rechecks, and ExecScanFetch would failan assertion (or just overwrite memory) if such a check was attemptedfor a plan containing a pushed-down join. To fix, adjust the EPQmachinery to skip some processing steps when scanrelid == 0, makingthose the responsibility of scan's recheck method, which also hasthe responsibility in this case of correctly populating the relevantslot.To allow foreign scans to gain control in the right place to makeuse of this new facility, add a new, optional RecheckForeignScanmethod. Also, allow a foreign scan to have a child plan, which canbe used to correctly populate the slot (or perhaps for somethingelse, but this is the only use currently envisioned).KaiGai Kohei, reviewed by Robert Haas, Etsuro Fujita, and KyotaroHoriguchi.1 parentedca44b commit385f337
File tree
12 files changed
+150
-18
lines changed- contrib
- file_fdw
- postgres_fdw
- doc/src/sgml
- src
- backend
- executor
- nodes
- optimizer
- plan
- util
- include
- foreign
- nodes
- optimizer
12 files changed
+150
-18
lines changedLines changed: 7 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
121 | 121 |
| |
122 | 122 |
| |
123 | 123 |
| |
124 |
| - | |
| 124 | + | |
| 125 | + | |
125 | 126 |
| |
126 | 127 |
| |
127 | 128 |
| |
| |||
525 | 526 |
| |
526 | 527 |
| |
527 | 528 |
| |
| 529 | + | |
528 | 530 |
| |
529 | 531 |
| |
530 | 532 |
| |
| |||
544 | 546 |
| |
545 | 547 |
| |
546 | 548 |
| |
547 |
| - | |
| 549 | + | |
| 550 | + | |
548 | 551 |
| |
549 | 552 |
| |
550 | 553 |
| |
| |||
564 | 567 |
| |
565 | 568 |
| |
566 | 569 |
| |
567 |
| - | |
| 570 | + | |
| 571 | + | |
568 | 572 |
| |
569 | 573 |
| |
570 | 574 |
| |
|
Lines changed: 9 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
214 | 214 |
| |
215 | 215 |
| |
216 | 216 |
| |
217 |
| - | |
| 217 | + | |
| 218 | + | |
218 | 219 |
| |
219 | 220 |
| |
220 | 221 |
| |
| |||
535 | 536 |
| |
536 | 537 |
| |
537 | 538 |
| |
| 539 | + | |
538 | 540 |
| |
539 | 541 |
| |
540 | 542 |
| |
| |||
589 | 591 |
| |
590 | 592 |
| |
591 | 593 |
| |
| 594 | + | |
592 | 595 |
| |
593 | 596 |
| |
594 | 597 |
| |
| |||
756 | 759 |
| |
757 | 760 |
| |
758 | 761 |
| |
| 762 | + | |
759 | 763 |
| |
760 | 764 |
| |
761 | 765 |
| |
| |||
771 | 775 |
| |
772 | 776 |
| |
773 | 777 |
| |
774 |
| - | |
| 778 | + | |
| 779 | + | |
775 | 780 |
| |
776 | 781 |
| |
777 | 782 |
| |
| |||
915 | 920 |
| |
916 | 921 |
| |
917 | 922 |
| |
918 |
| - | |
| 923 | + | |
| 924 | + | |
919 | 925 |
| |
920 | 926 |
| |
921 | 927 |
| |
|
Lines changed: 39 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
168 | 168 |
| |
169 | 169 |
| |
170 | 170 |
| |
171 |
| - | |
| 171 | + | |
| 172 | + | |
172 | 173 |
| |
173 | 174 |
| |
174 | 175 |
| |
| |||
765 | 766 |
| |
766 | 767 |
| |
767 | 768 |
| |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
768 | 798 |
| |
769 | 799 |
| |
770 | 800 |
| |
| |||
1137 | 1167 |
| |
1138 | 1168 |
| |
1139 | 1169 |
| |
1140 |
| - | |
| 1170 | + | |
| 1171 | + | |
1141 | 1172 |
| |
1142 | 1173 |
| |
1143 | 1174 |
| |
1144 |
| - | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
1145 | 1181 |
| |
1146 | 1182 |
| |
1147 | 1183 |
| |
|
Lines changed: 40 additions & 4 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
49 | 49 |
| |
50 | 50 |
| |
51 | 51 |
| |
52 |
| - | |
53 |
| - | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
54 | 67 |
| |
55 | 68 |
| |
56 | 69 |
| |
| |||
347 | 360 |
| |
348 | 361 |
| |
349 | 362 |
| |
350 |
| - | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
351 | 369 |
| |
352 |
| - | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
353 | 389 |
| |
354 | 390 |
|
Lines changed: 32 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
73 | 73 |
| |
74 | 74 |
| |
75 | 75 |
| |
| 76 | + | |
76 | 77 |
| |
77 | 78 |
| |
78 | 79 |
| |
| |||
85 | 86 |
| |
86 | 87 |
| |
87 | 88 |
| |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
88 | 101 |
| |
89 | 102 |
| |
90 | 103 |
| |
| |||
205 | 218 |
| |
206 | 219 |
| |
207 | 220 |
| |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
208 | 226 |
| |
209 | 227 |
| |
210 | 228 |
| |
| |||
225 | 243 |
| |
226 | 244 |
| |
227 | 245 |
| |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
228 | 250 |
| |
229 | 251 |
| |
230 | 252 |
| |
| |||
246 | 268 |
| |
247 | 269 |
| |
248 | 270 |
| |
| 271 | + | |
| 272 | + | |
249 | 273 |
| |
250 | 274 |
| |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
251 | 283 |
| |
252 | 284 |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1683 | 1683 |
| |
1684 | 1684 |
| |
1685 | 1685 |
| |
| 1686 | + | |
1686 | 1687 |
| |
1687 | 1688 |
| |
1688 | 1689 |
| |
|
Lines changed: 10 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2095 | 2095 |
| |
2096 | 2096 |
| |
2097 | 2097 |
| |
| 2098 | + | |
2098 | 2099 |
| |
2099 | 2100 |
| |
2100 | 2101 |
| |
2101 | 2102 |
| |
2102 | 2103 |
| |
| 2104 | + | |
| 2105 | + | |
| 2106 | + | |
| 2107 | + | |
2103 | 2108 |
| |
2104 | 2109 |
| |
2105 | 2110 |
| |
| |||
2129 | 2134 |
| |
2130 | 2135 |
| |
2131 | 2136 |
| |
2132 |
| - | |
| 2137 | + | |
| 2138 | + | |
2133 | 2139 |
| |
2134 | 2140 |
| |
2135 | 2141 |
| |
| |||
3747 | 3753 |
| |
3748 | 3754 |
| |
3749 | 3755 |
| |
3750 |
| - | |
| 3756 | + | |
| 3757 | + | |
3751 | 3758 |
| |
3752 | 3759 |
| |
3753 | 3760 |
| |
3754 | 3761 |
| |
3755 | 3762 |
| |
3756 | 3763 |
| |
3757 | 3764 |
| |
3758 |
| - | |
| 3765 | + | |
3759 | 3766 |
| |
3760 | 3767 |
| |
3761 | 3768 |
| |
|
Lines changed: 2 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1507 | 1507 |
| |
1508 | 1508 |
| |
1509 | 1509 |
| |
| 1510 | + | |
1510 | 1511 |
| |
1511 | 1512 |
| |
1512 | 1513 |
| |
| |||
1521 | 1522 |
| |
1522 | 1523 |
| |
1523 | 1524 |
| |
| 1525 | + | |
1524 | 1526 |
| |
1525 | 1527 |
| |
1526 | 1528 |
| |
|
Lines changed: 6 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
36 | 36 |
| |
37 | 37 |
| |
38 | 38 |
| |
39 |
| - | |
| 39 | + | |
| 40 | + | |
40 | 41 |
| |
41 | 42 |
| |
42 | 43 |
| |
43 | 44 |
| |
44 | 45 |
| |
45 | 46 |
| |
| 47 | + | |
| 48 | + | |
| 49 | + | |
46 | 50 |
| |
47 | 51 |
| |
48 | 52 |
| |
| |||
162 | 166 |
| |
163 | 167 |
| |
164 | 168 |
| |
| 169 | + | |
165 | 170 |
| |
166 | 171 |
| |
167 | 172 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
911 | 911 |
| |
912 | 912 |
| |
913 | 913 |
| |
| 914 | + | |
914 | 915 |
| |
915 | 916 |
| |
916 | 917 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
86 | 86 |
| |
87 | 87 |
| |
88 | 88 |
| |
| 89 | + | |
89 | 90 |
| |
90 | 91 |
| |
91 | 92 |
| |
|
0 commit comments
Comments
(0)