Rework join-removal logic as per recent discussion. In particular this
Tom Lane <tgl@sss.pgh.pa.us>
Rework join-removal logic as per recent discussion. In particular this fixes things so that it works for cases where nested removals are possible. The overhead of the optimization should be significantly less, as well.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/nodes/outfuncs.c | modified | +1 −14 |
| src/backend/optimizer/path/allpaths.c | modified | +1 −5 |
| src/backend/optimizer/path/joinpath.c | modified | +1 −204 |
| src/backend/optimizer/plan/analyzejoins.c | added | +413 −0 |
| src/backend/optimizer/plan/createplan.c | modified | +1 −6 |
| src/backend/optimizer/plan/Makefile | modified | +2 −2 |
| src/backend/optimizer/plan/planmain.c | modified | +44 −26 |
| src/backend/optimizer/README | modified | +1 −2 |
| src/backend/optimizer/util/pathnode.c | modified | +1 −21 |
| src/backend/optimizer/util/placeholder.c | modified | +20 −11 |
| src/include/nodes/nodes.h | modified | +1 −2 |
| src/include/nodes/relation.h | modified | +6 −19 |
| src/include/optimizer/pathnode.h | modified | +1 −3 |
| src/include/optimizer/placeholder.h | modified | +2 −1 |
| src/include/optimizer/planmain.h | modified | +6 −1 |
| src/test/regress/expected/join.out | modified | +53 −0 |
| src/test/regress/sql/join.sql | modified | +31 −0 |