forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commite8638d7
committed
Fix planner error with multiple copies of an AlternativeSubPlan.
It's possible for us to copy an AlternativeSubPlan expression nodeinto multiple places, for example the scan quals of severalpartition children. Then it's possible that we choose a differentone of the alternatives as optimal in each place. Commit41efb83failed to consider this scenario, so its attempt to remove "unused"subplans could remove subplans that were still used elsewhere.Fix by delaying the removal logic until we've examined all theAlternativeSubPlans in a given query level. (This does assume thatAlternativeSubPlans couldn't get copied to other query levels, butfor the foreseeable future that's fine; cf qual_is_pushdown_safe.)Per report from Rajkumar Raghuwanshi. Back-patch to v14where the faulty logic came in.Discussion:https://postgr.es/m/CAKcux6==O3NNZC3bZ2prRYv3cjm3_Zw1GfzmOjEVqYN4jub2+Q@mail.gmail.com1 parentbdeb2c4 commite8638d7
File tree
4 files changed
+103
-24
lines changed- src
- backend/optimizer/plan
- include/nodes
- test/regress
- expected
- sql
4 files changed
+103
-24
lines changedLines changed: 47 additions & 24 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
249 | 249 |
| |
250 | 250 |
| |
251 | 251 |
| |
| 252 | + | |
252 | 253 |
| |
253 | 254 |
| |
254 | 255 |
| |
| |||
301 | 302 |
| |
302 | 303 |
| |
303 | 304 |
| |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
304 | 314 |
| |
305 |
| - | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
306 | 343 |
| |
307 | 344 |
| |
308 | 345 |
| |
| |||
1765 | 1802 |
| |
1766 | 1803 |
| |
1767 | 1804 |
| |
1768 |
| - | |
1769 |
| - | |
| 1805 | + | |
1770 | 1806 |
| |
1771 | 1807 |
| |
1772 | 1808 |
| |
| |||
1778 | 1814 |
| |
1779 | 1815 |
| |
1780 | 1816 |
| |
1781 |
| - | |
1782 |
| - | |
1783 |
| - | |
| 1817 | + | |
| 1818 | + | |
1784 | 1819 |
| |
1785 | 1820 |
| |
1786 | 1821 |
| |
| |||
1791 | 1826 |
| |
1792 | 1827 |
| |
1793 | 1828 |
| |
1794 |
| - | |
1795 |
| - | |
1796 |
| - | |
1797 |
| - | |
1798 |
| - | |
1799 |
| - | |
| 1829 | + | |
1800 | 1830 |
| |
1801 |
| - | |
1802 |
| - | |
1803 |
| - | |
1804 |
| - | |
1805 |
| - | |
1806 | 1831 |
| |
1807 | 1832 |
| |
1808 | 1833 |
| |
1809 |
| - | |
1810 |
| - | |
1811 |
| - | |
1812 |
| - | |
1813 |
| - | |
1814 | 1834 |
| |
1815 |
| - | |
1816 |
| - | |
| 1835 | + | |
| 1836 | + | |
1817 | 1837 |
| |
1818 | 1838 |
| |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
1819 | 1842 |
| |
1820 | 1843 |
| |
1821 | 1844 |
| |
|
Lines changed: 4 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
368 | 368 |
| |
369 | 369 |
| |
370 | 370 |
| |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
371 | 375 |
| |
372 | 376 |
| |
373 | 377 |
| |
|
Lines changed: 40 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
921 | 921 |
| |
922 | 922 |
| |
923 | 923 |
| |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
924 | 964 |
| |
925 | 965 |
| |
926 | 966 |
| |
|
Lines changed: 12 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
526 | 526 |
| |
527 | 527 |
| |
528 | 528 |
| |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
529 | 541 |
| |
530 | 542 |
| |
531 | 543 |
| |
|
0 commit comments
Comments
(0)