From dc1b8cea93df76596cbf8b1c41fbfa5977746095 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 26 Mar 2007 00:36:19 +0000 Subject: [PATCH] Fix plancache's invalidation callback to do the right thing for a SI reset event, namely invalidate everything. This oversight probably explains the rare failures that some buildfarm machines have been showing for the plancache regression test. --- src/backend/utils/cache/plancache.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c index 4ff2f745c31..f02a58e29b1 100644 --- a/src/backend/utils/cache/plancache.c +++ b/src/backend/utils/cache/plancache.c @@ -33,7 +33,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/plancache.c,v 1.4 2007/03/23 19:53:51 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/plancache.c,v 1.5 2007/03/26 00:36:19 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -812,6 +812,9 @@ PlanCacheComputeResultDesc(List *stmt_list) /* * PlanCacheCallback * Relcache inval callback function + * + * Invalidate all plans mentioning the given rel, or all plans mentioning + * any rel at all if relid == InvalidOid. */ static void PlanCacheCallback(Datum arg, Oid relid) @@ -843,7 +846,7 @@ PlanCacheCallback(Datum arg, Oid relid) if (rte->rtekind != RTE_RELATION) continue; - if (relid == rte->relid) + if (relid == rte->relid || relid == InvalidOid) { /* Invalidate the plan! */ plan->dead = true; @@ -883,10 +886,11 @@ PlanCacheCallback(Datum arg, Oid relid) static void InvalRelid(Oid relid, LOCKMODE lockmode, InvalRelidContext *context) { - if (relid == context->inval_relid) + if (relid == context->inval_relid || context->inval_relid == InvalidOid) context->plan->dead = true; } + /* * HaveCachedPlans * Check if the plancache has stored any plans at all. @@ -896,4 +900,3 @@ HaveCachedPlans(void) { return (cached_plans_list != NIL); } - -- 2.39.5