From cbc0539c2a96de818d2efee522b3bed12d6b7df9 Mon Sep 17 00:00:00 2001 From: Tom Lane 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 75c26f0435..9d4ffa4b14 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; }