]> granicus.if.org Git - postgresql/commit
Fix the plan-invalidation mechanism to treat regclass constants that refer to
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 11 Oct 2007 18:05:27 +0000 (18:05 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 11 Oct 2007 18:05:27 +0000 (18:05 +0000)
commit82d8ab6fc4c1a0330c91022728e1e766db207069
tree0bd9635d34da6c964d37fd4a725ead26a9a7340d
parent68b08b251239e9ec883156b0cba53316c88adb5f
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.
src/backend/nodes/copyfuncs.c
src/backend/nodes/outfuncs.c
src/backend/optimizer/plan/planner.c
src/backend/optimizer/plan/setrefs.c
src/backend/utils/cache/plancache.c
src/include/nodes/plannodes.h
src/include/nodes/relation.h
src/include/optimizer/planmain.h
src/test/regress/expected/plancache.out
src/test/regress/sql/plancache.sql