Fix mergejoin cost estimation so that we consider the statistical ranges of
Tom Lane <tgl@sss.pgh.pa.us>
Fix mergejoin cost estimation so that we consider the statistical ranges of the two join variables at both ends: not only trailing rows that need not be scanned because there cannot be a match on the other side, but initial rows that will be scanned without possibly having a match. This allows a more realistic estimate of startup cost to be made, per recent pgsql-performance discussion. In passing, fix a couple of bugs that had crept into mergejoinscansel: it was not quite up to speed for the task of estimating descending-order scans, which is a new requirement in 8.3.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/optimizer/path/costsize.c | modified | +78 −31 |
| src/backend/utils/adt/selfuncs.c | modified | +259 −111 |
| src/include/nodes/relation.h | modified | +5 −3 |
| src/include/utils/selfuncs.h | modified | +3 −3 |