Upgrade planner and executor to allow multiple hash keys for a hash join,
Tom Lane <tgl@sss.pgh.pa.us>
Upgrade planner and executor to allow multiple hash keys for a hash join, instead of only one. This should speed up planning (only one hash path to consider for a given pair of relations) as well as allow more effective hashing, when there are multiple hashable joinclauses.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/executor/nodeHash.c | modified | +52 −31 |
| src/backend/executor/nodeHashjoin.c | modified | +20 −12 |
| src/backend/nodes/copyfuncs.c | modified | +3 −4 |
| src/backend/nodes/outfuncs.c | modified | +2 −3 |
| src/backend/optimizer/path/costsize.c | modified | +48 −36 |
| src/backend/optimizer/path/joinpath.c | modified | +19 −11 |
| src/backend/optimizer/plan/createplan.c | modified | +16 −14 |
| src/backend/optimizer/plan/subselect.c | modified | +2 −2 |
| src/backend/optimizer/util/pathnode.c | modified | +2 −2 |
| src/include/executor/hashjoin.h | modified | +7 −6 |
| src/include/executor/nodeHash.h | modified | +3 −3 |
| src/include/nodes/execnodes.h | modified | +5 −3 |
| src/include/nodes/plannodes.h | modified | +2 −3 |
| src/include/nodes/relation.h | modified | +1 −3 |