From: Hiroshi Inoue Date: Sat, 6 Jan 2001 01:48:59 +0000 (+0000) Subject: init_irels() is changed to be called in RelationCacheInitializePhase2() X-Git-Tag: REL7_1_BETA2~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4451ed3dfebf9a87f3961f9dee038f4807a43334;p=postgresql init_irels() is changed to be called in RelationCacheInitializePhase2() so that transactional control could guarantee the consistency. --- diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 843cbcff76..963818ffd9 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.123 2001/01/04 02:24:22 inoue Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.124 2001/01/06 01:48:59 inoue Exp $ * *------------------------------------------------------------------------- */ @@ -2104,15 +2104,11 @@ RelationCacheInitialize(void) formrdesc(LogRelationName, Natts_pg_log, Desc_pg_log); /* - * If this isn't initdb time, then we want to initialize some index - * relation descriptors, as well. The descriptors are for - * pg_attnumind (to make building relation descriptors fast) and - * possibly others, as they're added. + * init_irels() used to be called here. It is changed to be called + * in RelationCacheInitializePhase2() now so that transactional + * control could guarantee the consistency. */ - if (!IsBootstrapProcessingMode()) - init_irels(); - MemoryContextSwitchTo(oldcxt); } @@ -2134,6 +2130,17 @@ RelationCacheInitializePhase2(void) */ if (!IsBootstrapProcessingMode()) { + /* + * Initialize critical system index relation descriptors, first. + * They are to make building relation descriptors fast. + * init_irels() used to be called in RelationCacheInitialize(). + * It is changed to be called here to be transaction safe. + */ + MemoryContext oldcxt = MemoryContextSwitchTo(CacheMemoryContext); + init_irels(); + MemoryContextSwitchTo(oldcxt); + + /* fix nailed-in-cache relations */ fixrdesc(RelationRelationName); fixrdesc(AttributeRelationName); fixrdesc(ProcedureRelationName);