forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitaa86129

Richard Guo
Support "Right Semi Join" plan shapes
Hash joins can support semijoin with the LHS input on the right, usingthe existing logic for inner join, combined with the assurance that onlythe first match for each inner tuple is considered, which can beachieved by leveraging the HEAP_TUPLE_HAS_MATCH flag. This can be veryuseful in some cases since we may now have the option to hash thesmaller table instead of the larger.Merge join could likely support "Right Semi Join" too. However, thebenefit of swapping inputs tends to be small here, so we do not addressthat in this patch.Note that this patch also modifies a test query in join.sql to ensure itcontinues testing as intended. With this patch the original query wouldresult in a right-semi-join rather than semi-join, compromising itsoriginal purpose of testing the fix for neqjoinsel's behavior forsemi-joins.Author: Richard GuoReviewed-by: wenhui qiu, Alena Rybakina, Japin LiDiscussion:https://postgr.es/m/CAMbWs4_X1mN=ic+SxcyymUqFx9bB8pqSLTGJ-F=MHy4PW3eRXw@mail.gmail.com1 parent5a519ab commitaa86129
File tree
14 files changed
+220
-171
lines changed- contrib/postgres_fdw/expected
- src
- backend
- commands
- executor
- optimizer
- path
- prep
- include/nodes
- test/regress
- expected
- sql
14 files changed
+220
-171
lines changedLines changed: 9 additions & 6 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
4127 | 4127 |
| |
4128 | 4128 |
| |
4129 | 4129 |
| |
4130 |
| - | |
4131 |
| - | |
4132 |
| - | |
| 4130 | + | |
| 4131 | + | |
| 4132 | + | |
4133 | 4133 |
| |
4134 |
| - | |
4135 |
| - | |
4136 |
| - | |
| 4134 | + | |
| 4135 | + | |
| 4136 | + | |
| 4137 | + | |
| 4138 | + | |
| 4139 | + | |
4137 | 4140 |
| |
4138 | 4141 |
| |
4139 | 4142 |
| |
|
Lines changed: 3 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1749 | 1749 |
| |
1750 | 1750 |
| |
1751 | 1751 |
| |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
1752 | 1755 |
| |
1753 | 1756 |
| |
1754 | 1757 |
| |
|
Lines changed: 12 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
533 | 533 |
| |
534 | 534 |
| |
535 | 535 |
| |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
536 | 544 |
| |
537 | 545 |
| |
538 | 546 |
| |
| |||
549 | 557 |
| |
550 | 558 |
| |
551 | 559 |
| |
552 |
| - | |
553 | 560 |
| |
554 |
| - | |
555 |
| - | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
556 | 564 |
| |
557 | 565 |
| |
558 | 566 |
| |
| |||
779 | 787 |
| |
780 | 788 |
| |
781 | 789 |
| |
| 790 | + | |
782 | 791 |
| |
783 | 792 |
| |
784 | 793 |
| |
|
Lines changed: 30 additions & 12 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
288 | 288 |
| |
289 | 289 |
| |
290 | 290 |
| |
291 |
| - | |
292 |
| - | |
| 291 | + | |
| 292 | + | |
293 | 293 |
| |
294 | 294 |
| |
295 | 295 |
| |
| |||
1728 | 1728 |
| |
1729 | 1729 |
| |
1730 | 1730 |
| |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
1731 | 1738 |
| |
1732 | 1739 |
| |
1733 | 1740 |
| |
| |||
2297 | 2304 |
| |
2298 | 2305 |
| |
2299 | 2306 |
| |
2300 |
| - | |
2301 |
| - | |
2302 |
| - | |
| 2307 | + | |
| 2308 | + | |
| 2309 | + | |
2303 | 2310 |
| |
2304 | 2311 |
| |
2305 | 2312 |
| |
| 2313 | + | |
2306 | 2314 |
| |
2307 | 2315 |
| |
2308 | 2316 |
| |
| |||
2327 | 2335 |
| |
2328 | 2336 |
| |
2329 | 2337 |
| |
2330 |
| - | |
2331 |
| - | |
2332 |
| - | |
2333 |
| - | |
2334 |
| - | |
2335 |
| - | |
2336 |
| - | |
| 2338 | + | |
| 2339 | + | |
| 2340 | + | |
| 2341 | + | |
| 2342 | + | |
| 2343 | + | |
| 2344 | + | |
2337 | 2345 |
| |
2338 | 2346 |
| |
2339 | 2347 |
| |
| |||
2357 | 2365 |
| |
2358 | 2366 |
| |
2359 | 2367 |
| |
| 2368 | + | |
| 2369 | + | |
| 2370 | + | |
| 2371 | + | |
| 2372 | + | |
| 2373 | + | |
| 2374 | + | |
| 2375 | + | |
| 2376 | + | |
| 2377 | + | |
2360 | 2378 |
| |
2361 | 2379 |
| |
2362 | 2380 |
| |
|
Lines changed: 3 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
991 | 991 |
| |
992 | 992 |
| |
993 | 993 |
| |
| 994 | + | |
| 995 | + | |
| 996 | + | |
994 | 997 |
| |
995 | 998 |
| |
996 | 999 |
| |
|
Lines changed: 3 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1294 | 1294 |
| |
1295 | 1295 |
| |
1296 | 1296 |
| |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
1297 | 1300 |
| |
1298 | 1301 |
| |
1299 | 1302 |
| |
|
Lines changed: 3 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
455 | 455 |
| |
456 | 456 |
| |
457 | 457 |
| |
458 |
| - | |
459 |
| - | |
| 458 | + | |
| 459 | + | |
460 | 460 |
| |
461 | 461 |
| |
462 | 462 |
| |
| |||
2950 | 2950 |
| |
2951 | 2951 |
| |
2952 | 2952 |
| |
2953 |
| - | |
| 2953 | + | |
2954 | 2954 |
| |
2955 | 2955 |
| |
2956 | 2956 |
| |
|
Lines changed: 5 additions & 4 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
306 | 306 |
| |
307 | 307 |
| |
308 | 308 |
| |
| 309 | + | |
309 | 310 |
| |
310 | 311 |
| |
311 | 312 |
| |
| |||
322 | 323 |
| |
323 | 324 |
| |
324 | 325 |
| |
325 |
| - | |
326 |
| - | |
327 |
| - | |
328 |
| - | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
329 | 330 |
| |
330 | 331 |
| |
331 | 332 |
| |
|
Lines changed: 3 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2823 | 2823 |
| |
2824 | 2824 |
| |
2825 | 2825 |
| |
2826 |
| - | |
2827 |
| - | |
2828 |
| - | |
| 2826 | + | |
| 2827 | + | |
| 2828 | + | |
2829 | 2829 |
| |
2830 | 2830 |
| |
2831 | 2831 |
| |
|
Lines changed: 14 additions & 13 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1905 | 1905 |
| |
1906 | 1906 |
| |
1907 | 1907 |
| |
1908 |
| - | |
1909 |
| - | |
1910 |
| - | |
1911 |
| - | |
1912 |
| - | |
1913 |
| - | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
1914 | 1914 |
| |
1915 |
| - | |
1916 |
| - | |
| 1915 | + | |
| 1916 | + | |
1917 | 1917 |
| |
1918 |
| - | |
1919 |
| - | |
| 1918 | + | |
| 1919 | + | |
1920 | 1920 |
| |
1921 |
| - | |
| 1921 | + | |
| 1922 | + | |
1922 | 1923 |
| |
1923 |
| - | |
1924 |
| - | |
| 1924 | + | |
| 1925 | + | |
1925 | 1926 |
| |
1926 | 1927 |
| |
1927 | 1928 |
| |
|
0 commit comments
Comments
(0)