diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-10-11 18:05:27 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-10-11 18:05:27 +0000 |
| commit | 82d8ab6fc4c1a0330c91022728e1e766db207069 (patch) | |
| tree | 0bd9635d34da6c964d37fd4a725ead26a9a7340d /src/include/nodes/relation.h | |
| parent | 68b08b251239e9ec883156b0cba53316c88adb5f (diff) | |
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.
Diffstat (limited to 'src/include/nodes/relation.h')
| -rw-r--r-- | src/include/nodes/relation.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/include/nodes/relation.h b/src/include/nodes/relation.h index 32c699b6de6..38903520222 100644 --- a/src/include/nodes/relation.h +++ b/src/include/nodes/relation.h @@ -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/nodes/relation.h,v 1.146 2007/09/20 17:56:32 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/relation.h,v 1.147 2007/10/11 18:05:27 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -72,6 +72,8 @@ typedef struct PlannerGlobal List *finalrtable; /* "flat" rangetable for executor */ + List *relationOids; /* OIDs of relations the plan depends on */ + bool transientPlan; /* redo plan when TransactionXmin changes? */ } PlannerGlobal; |
