From cbc0539c2a96de818d2efee522b3bed12d6b7df9 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 6 May 2006 15:51:07 +0000
Subject: [PATCH] Further minor simplification of relcache startup: don't need
 a static needNewCacheFile flag anymore, it can just be local in
 RelationCacheInitializePhase2.

---
 src/backend/utils/cache/relcache.c | 27 ++++++++++-----------------
 1 file changed, 10 insertions(+), 17 deletions(-)

diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 75c26f0435a..9d4ffa4b148 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -8,13 +8,13 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.240 2006/05/04 18:51:35 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.241 2006/05/06 15:51:07 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 /*
  * INTERFACE ROUTINES
- *		RelationCacheInitialize			- initialize relcache
+ *		RelationCacheInitialize			- initialize relcache (to empty)
  *		RelationCacheInitializePhase2	- finish initializing relcache
  *		RelationIdGetRelation			- get a reldesc by relation id
  *		RelationIdCacheGetRelation		- get a cached reldesc by relid
@@ -102,12 +102,6 @@ static HTAB *RelationIdCache;
  */
 bool		criticalRelcachesBuilt = false;
 
-/*
- * This flag is set if we discover that we need to write a new relcache
- * cache file at the end of startup.
- */
-static bool needNewCacheFile = false;
-
 /*
  * This counter counts relcache inval events received since backend startup
  * (but only for rels that are actually in cache).	Presently, we use it only
@@ -1162,14 +1156,14 @@ LookupOpclassInfo(Oid operatorClassOid,
  *		formrdesc
  *
  *		This is a special cut-down version of RelationBuildDesc()
- *		used by RelationCacheInitialize() in initializing the relcache.
+ *		used by RelationCacheInitializePhase2() in initializing the relcache.
  *		The relation descriptor is built just from the supplied parameters,
  *		without actually looking at any system table entries.  We cheat
  *		quite a lot since we only need to work for a few basic system
  *		catalogs.
  *
  * formrdesc is currently used for: pg_class, pg_attribute, pg_proc,
- * and pg_type (see RelationCacheInitialize).
+ * and pg_type (see RelationCacheInitializePhase2).
  *
  * Note that these catalogs can't have constraints (except attnotnull),
  * default values, rules, or triggers, since we don't cope with any of that.
@@ -2026,7 +2020,7 @@ RelationBuildLocalRelation(const char *relname,
 	/*
 	 * check for creation of a rel that must be nailed in cache.
 	 *
-	 * XXX this list had better match RelationCacheInitialize's list.
+	 * XXX this list had better match RelationCacheInitializePhase2's list.
 	 */
 	switch (relid)
 	{
@@ -2180,7 +2174,7 @@ RelationCacheInitialize(void)
 	oldcxt = MemoryContextSwitchTo(CacheMemoryContext);
 
 	/*
-	 * create hashtables that index the relcache
+	 * create hashtable that indexes the relcache
 	 */
 	MemSet(&ctl, 0, sizeof(ctl));
 	ctl.keysize = sizeof(Oid);
@@ -2211,6 +2205,7 @@ RelationCacheInitializePhase2(void)
 	HASH_SEQ_STATUS status;
 	RelIdCacheEnt *idhentry;
 	MemoryContext oldcxt;
+	bool needNewCacheFile = false;
 
 	/*
 	 * switch to cache memory context
@@ -2225,6 +2220,8 @@ RelationCacheInitializePhase2(void)
 	if (IsBootstrapProcessingMode() ||
 		!load_relcache_init_file())
 	{
+		needNewCacheFile = true;
+
 		formrdesc("pg_class", PG_CLASS_RELTYPE_OID,
 				  true, Natts_pg_class, Desc_pg_class);
 		formrdesc("pg_attribute", PG_ATTRIBUTE_RELTYPE_OID,
@@ -2909,7 +2906,7 @@ RelationGetIndexPredicate(Relation relation)
  * load_relcache_init_file -- attempt to load cache from the init file
  *
  * If successful, return TRUE and set criticalRelcachesBuilt to true.
- * If not successful, return FALSE and set needNewCacheFile to true.
+ * If not successful, return FALSE.
  *
  * NOTE: we assume we are already switched into CacheMemoryContext.
  */
@@ -2932,10 +2929,7 @@ load_relcache_init_file(void)
 
 	fp = AllocateFile(initfilename, PG_BINARY_R);
 	if (fp == NULL)
-	{
-		needNewCacheFile = true;
 		return false;
-	}
 
 	/*
 	 * Read the index relcache entries from the file.  Note we will not enter
@@ -3199,7 +3193,6 @@ read_failed:
 	pfree(rels);
 	FreeFile(fp);
 
-	needNewCacheFile = true;
 	return false;
 }
 
-- 
GitLab