-
- Downloads
Fix the plan-invalidation mechanism to treat regclass constants that refer to
a relation as a reason to invalidate a plan when the relation changes. This handles scenarios such as dropping/recreating a sequence that is referenced by nextval('seq') in a cached plan. Rather than teach plancache.c all about digging through plan trees to find regclass Consts, we charge the planner's setrefs.c with making a list of the relation OIDs on which each plan depends. That way the list can be built cheaply during a plan tree traversal that has to happen anyway. Per bug #3662 and subsequent discussion.
Showing
- src/backend/nodes/copyfuncs.c 2 additions, 1 deletionsrc/backend/nodes/copyfuncs.c
- src/backend/nodes/outfuncs.c 3 additions, 1 deletionsrc/backend/nodes/outfuncs.c
- src/backend/optimizer/plan/planner.c 5 additions, 2 deletionssrc/backend/optimizer/plan/planner.c
- src/backend/optimizer/plan/setrefs.c 167 additions, 78 deletionssrc/backend/optimizer/plan/setrefs.c
- src/backend/utils/cache/plancache.c 6 additions, 15 deletionssrc/backend/utils/cache/plancache.c
- src/include/nodes/plannodes.h 3 additions, 1 deletionsrc/include/nodes/plannodes.h
- src/include/nodes/relation.h 3 additions, 1 deletionsrc/include/nodes/relation.h
- src/include/optimizer/planmain.h 3 additions, 2 deletionssrc/include/optimizer/planmain.h
- src/test/regress/expected/plancache.out 17 additions, 0 deletionssrc/test/regress/expected/plancache.out
- src/test/regress/sql/plancache.sql 14 additions, 0 deletionssrc/test/regress/sql/plancache.sql
Loading
Please register or sign in to comment