Upgrade cost estimation for joins, per discussion with Bradley Baetz.
Tom Lane <tgl@sss.pgh.pa.us>
Upgrade cost estimation for joins, per discussion with Bradley Baetz. Try to model the effect of rescanning input tuples in mergejoins; account for JOIN_IN short-circuiting where appropriate. Also, recognize that mergejoin and hashjoin clauses may now be more than single operator calls, so we have to charge appropriate execution costs.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/executor/nodeHashjoin.c | modified | +8 −1 |
| src/backend/executor/nodeNestloop.c | modified | +5 −1 |
| src/backend/nodes/list.c | modified | +23 −1 |
| src/backend/optimizer/path/costsize.c | modified | +301 −139 |
| src/backend/optimizer/path/joinpath.c | modified | +4 −9 |
| src/backend/optimizer/util/pathnode.c | modified | +4 −17 |
| src/backend/utils/adt/selfuncs.c | modified | +3 −1 |
| src/include/nodes/pg_list.h | modified | +2 −1 |
| src/include/optimizer/cost.h | modified | +4 −13 |
| src/test/regress/expected/subselect.out | modified | +4 −4 |