Merge restrictlist_selectivity into clauselist_selectivity by
Tom Lane <tgl@sss.pgh.pa.us>
Merge restrictlist_selectivity into clauselist_selectivity by teaching the latter to accept either RestrictInfo nodes or bare clause expressions; and cache the selectivity result in the RestrictInfo node when possible. This extends the caching behavior of approx_selectivity to many more contexts, and should reduce duplicate selectivity calculations.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/nodes/copyfuncs.c | modified | +2 −1 |
| src/backend/nodes/outfuncs.c | modified | +2 −1 |
| src/backend/optimizer/path/clausesel.c | modified | +133 −72 |
| src/backend/optimizer/path/costsize.c | modified | +20 −47 |
| src/backend/optimizer/path/indxpath.c | modified | +6 −6 |
| src/backend/optimizer/plan/initsplan.c | modified | +6 −4 |
| src/backend/optimizer/prep/prepunion.c | modified | +5 −4 |
| src/backend/optimizer/util/clauses.c | modified | +1 −46 |
| src/backend/optimizer/util/restrictinfo.c | modified | +14 −10 |
| src/include/nodes/relation.h | modified | +5 −2 |
| src/include/optimizer/clauses.h | modified | +1 −2 |
| src/include/optimizer/cost.h | modified | +1 −5 |