Improve the plan cache invalidation mechanism to make it invalidate plans
Tom Lane <tgl@sss.pgh.pa.us>
Improve the plan cache invalidation mechanism to make it invalidate plans when user-defined functions used in a plan are modified. Also invalidate plans when schemas, operators, or operator classes are modified; but for these cases we just invalidate everything rather than tracking exact dependencies, since these types of objects seldom change in a production database. Tom Lane; loosely based on a patch by Martin Pihlak.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/namespace.c | modified | +3 −3 |
| src/backend/nodes/copyfuncs.c | modified | +20 −1 |
| src/backend/nodes/outfuncs.c | modified | +22 −6 |
| src/backend/optimizer/plan/planner.c | modified | +3 −1 |
| src/backend/optimizer/plan/setrefs.c | modified | +189 −96 |
| src/backend/optimizer/util/clauses.c | modified | +23 −1 |
| src/backend/parser/parse_oper.c | modified | +3 −3 |
| src/backend/utils/adt/acl.c | modified | +3 −3 |
| src/backend/utils/cache/inval.c | modified | +49 −35 |
| src/backend/utils/cache/plancache.c | modified | +154 −106 |
| src/backend/utils/cache/ts_cache.c | modified | +8 −7 |
| src/backend/utils/misc/superuser.c | modified | +3 −3 |
| src/include/nodes/nodes.h | modified | +3 −1 |
| src/include/nodes/plannodes.h | modified | +21 −1 |
| src/include/nodes/relation.h | modified | +3 −1 |
| src/include/optimizer/planmain.h | modified | +5 −1 |
| src/include/utils/inval.h | modified | +5 −4 |
| src/include/utils/plancache.h | modified | +4 −1 |