forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commite6ae3b5
committed
Add a concept of "placeholder" variables to the planner. These are variables
that represent some expression that we desire to compute below the top levelof the plan, and then let that value "bubble up" as though it were a plainVar (ie, a column value).The immediate application is to allow sub-selects to be flattened even whenthey are below an outer join and have non-nullable output expressions.Formerly we couldn't flatten because such an expression wouldn't properlygo to NULL when evaluated above the outer join. Now, we wrap it in aPlaceHolderVar and arrange for the actual evaluation to occur below the outerjoin. When the resulting Var bubbles up through the join, it will be set toNULL if necessary, yielding the correct results. This fixes a plannerlimitation that's existed since 7.1.In future we might want to use this mechanism to re-introduce some form ofHellerstein's "expensive functions" optimization, ie place the evaluation ofan expensive function at the most suitable point in the plan tree.1 parent831abae commite6ae3b5
File tree
28 files changed
+1134
-225
lines changed- src
- backend
- nodes
- optimizer
- path
- plan
- prep
- util
- rewrite
- utils/adt
- include
- nodes
- optimizer
28 files changed
+1134
-225
lines changedLines changed: 40 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
15 | 15 |
| |
16 | 16 |
| |
17 | 17 |
| |
18 |
| - | |
| 18 | + | |
19 | 19 |
| |
20 | 20 |
| |
21 | 21 |
| |
| |||
1592 | 1592 |
| |
1593 | 1593 |
| |
1594 | 1594 |
| |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
1595 | 1611 |
| |
1596 | 1612 |
| |
1597 | 1613 |
| |
| |||
1631 | 1647 |
| |
1632 | 1648 |
| |
1633 | 1649 |
| |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
1634 | 1667 |
| |
1635 | 1668 |
| |
1636 | 1669 |
| |
| |||
3438 | 3471 |
| |
3439 | 3472 |
| |
3440 | 3473 |
| |
| 3474 | + | |
| 3475 | + | |
| 3476 | + | |
3441 | 3477 |
| |
3442 | 3478 |
| |
3443 | 3479 |
| |
3444 | 3480 |
| |
3445 | 3481 |
| |
3446 | 3482 |
| |
| 3483 | + | |
| 3484 | + | |
| 3485 | + | |
3447 | 3486 |
| |
3448 | 3487 |
| |
3449 | 3488 |
| |
|
Lines changed: 41 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
22 | 22 |
| |
23 | 23 |
| |
24 | 24 |
| |
25 |
| - | |
| 25 | + | |
26 | 26 |
| |
27 | 27 |
| |
28 | 28 |
| |
| |||
763 | 763 |
| |
764 | 764 |
| |
765 | 765 |
| |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
766 | 787 |
| |
767 | 788 |
| |
768 | 789 |
| |
| |||
792 | 813 |
| |
793 | 814 |
| |
794 | 815 |
| |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
795 | 828 |
| |
796 | 829 |
| |
797 | 830 |
| |
| |||
2289 | 2322 |
| |
2290 | 2323 |
| |
2291 | 2324 |
| |
| 2325 | + | |
| 2326 | + | |
| 2327 | + | |
2292 | 2328 |
| |
2293 | 2329 |
| |
2294 | 2330 |
| |
2295 | 2331 |
| |
2296 | 2332 |
| |
2297 | 2333 |
| |
| 2334 | + | |
| 2335 | + | |
| 2336 | + | |
| 2337 | + | |
2298 | 2338 |
| |
2299 | 2339 |
| |
2300 | 2340 |
| |
|
Lines changed: 37 additions & 3 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 |
| |
| |||
220 | 220 |
| |
221 | 221 |
| |
222 | 222 |
| |
| 223 | + | |
| 224 | + | |
| 225 | + | |
223 | 226 |
| |
224 | 227 |
| |
225 | 228 |
| |
| |||
420 | 423 |
| |
421 | 424 |
| |
422 | 425 |
| |
| 426 | + | |
| 427 | + | |
423 | 428 |
| |
424 | 429 |
| |
425 | 430 |
| |
| |||
876 | 881 |
| |
877 | 882 |
| |
878 | 883 |
| |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
879 | 888 |
| |
880 | 889 |
| |
881 | 890 |
| |
| |||
1272 | 1281 |
| |
1273 | 1282 |
| |
1274 | 1283 |
| |
1275 |
| - | |
1276 |
| - | |
| 1284 | + | |
1277 | 1285 |
| |
1278 | 1286 |
| |
1279 | 1287 |
| |
| 1288 | + | |
| 1289 | + | |
1280 | 1290 |
| |
1281 | 1291 |
| |
1282 | 1292 |
| |
| |||
1286 | 1296 |
| |
1287 | 1297 |
| |
1288 | 1298 |
| |
| 1299 | + | |
| 1300 | + | |
1289 | 1301 |
| |
1290 | 1302 |
| |
1291 | 1303 |
| |
| |||
1918 | 1930 |
| |
1919 | 1931 |
| |
1920 | 1932 |
| |
| 1933 | + | |
| 1934 | + | |
| 1935 | + | |
| 1936 | + | |
| 1937 | + | |
| 1938 | + | |
| 1939 | + | |
| 1940 | + | |
| 1941 | + | |
| 1942 | + | |
| 1943 | + | |
1921 | 1944 |
| |
1922 | 1945 |
| |
1923 | 1946 |
| |
| |||
1928 | 1951 |
| |
1929 | 1952 |
| |
1930 | 1953 |
| |
| 1954 | + | |
| 1955 | + | |
| 1956 | + | |
| 1957 | + | |
| 1958 | + | |
| 1959 | + | |
| 1960 | + | |
| 1961 | + | |
| 1962 | + | |
| 1963 | + | |
| 1964 | + | |
1931 | 1965 |
| |
1932 | 1966 |
| |
1933 | 1967 |
| |
|
Lines changed: 33 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 |
| |
| |||
1412 | 1412 |
| |
1413 | 1413 |
| |
1414 | 1414 |
| |
| 1415 | + | |
| 1416 | + | |
1415 | 1417 |
| |
1416 | 1418 |
| |
1417 | 1419 |
| |
| |||
1435 | 1437 |
| |
1436 | 1438 |
| |
1437 | 1439 |
| |
| 1440 | + | |
1438 | 1441 |
| |
1439 | 1442 |
| |
1440 | 1443 |
| |
| |||
1590 | 1593 |
| |
1591 | 1594 |
| |
1592 | 1595 |
| |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
1593 | 1607 |
| |
1594 | 1608 |
| |
1595 | 1609 |
| |
| |||
1619 | 1633 |
| |
1620 | 1634 |
| |
1621 | 1635 |
| |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
1622 | 1648 |
| |
1623 | 1649 |
| |
1624 | 1650 |
| |
| |||
2539 | 2565 |
| |
2540 | 2566 |
| |
2541 | 2567 |
| |
| 2568 | + | |
| 2569 | + | |
| 2570 | + | |
2542 | 2571 |
| |
2543 | 2572 |
| |
2544 | 2573 |
| |
2545 | 2574 |
| |
2546 | 2575 |
| |
2547 | 2576 |
| |
| 2577 | + | |
| 2578 | + | |
| 2579 | + | |
2548 | 2580 |
| |
2549 | 2581 |
| |
2550 | 2582 |
| |
|
Lines changed: 19 additions & 2 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 |
| |
| |||
423 | 423 |
| |
424 | 424 |
| |
425 | 425 |
| |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
426 | 430 |
| |
427 | 431 |
| |
428 | 432 |
| |
| |||
1105 | 1109 |
| |
1106 | 1110 |
| |
1107 | 1111 |
| |
1108 |
| - | |
| 1112 | + | |
1109 | 1113 |
| |
1110 | 1114 |
| |
1111 | 1115 |
| |
1112 | 1116 |
| |
1113 | 1117 |
| |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
1114 | 1131 |
| |
1115 | 1132 |
| |
1116 | 1133 |
| |
|
0 commit comments
Comments
(0)