mirror of
https://github.com/postgres/postgres.git
synced 2025-10-27 00:12:01 +03:00
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.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/optimizer/planmain.h,v 1.102 2007/10/04 20:44:47 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/optimizer/planmain.h,v 1.103 2007/10/11 18:05:27 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -96,7 +96,8 @@ extern RestrictInfo *build_implied_join_equality(Oid opno,
|
||||
extern Plan *set_plan_references(PlannerGlobal *glob,
|
||||
Plan *plan,
|
||||
List *rtable);
|
||||
extern List *set_returning_clause_references(List *rlist,
|
||||
extern List *set_returning_clause_references(PlannerGlobal *glob,
|
||||
List *rlist,
|
||||
Plan *topplan,
|
||||
Index resultRelation);
|
||||
extern void fix_opfuncids(Node *node);
|
||||
|
||||
Reference in New Issue
Block a user