aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/cache/relcache.c
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-05-22 17:24:20 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-05-22 17:24:20 +0000
commitc9be1bccc18df88c8a95b6748b9e979bed2f6cac (patch)
treee399828b16c78211644592d9a296bb2c5f99412c /src/backend/utils/cache/relcache.c
parent19269069dccf805653aef5a46bbab99a8b39b4aa (diff)
downloadpostgresql-c9be1bccc18df88c8a95b6748b9e979bed2f6cac.tar.gz
postgresql-c9be1bccc18df88c8a95b6748b9e979bed2f6cac.zip
RelationPurgeLocalRelation():
/* * RelationFlushRelation () below will flush relation information * from the cache. We must call smgrclose to flush relation * information from SMGR & FMGR, too. We assume that for temp * relations smgrunlink is already called by heap_destroyr * and we skip smgrclose for them. - vadim 05/22/97 */ smgrclose(reln->rd_rel->relsmgr, reln); - it avoids memory leaks in SMGR & VFD. RelationFlushRelation(): there is no more call FileInvalidate(RelationGetSystemPort(relation)); - invalid (FileInvalidate() expects File, not SMGR' fd) - unuseful anyway.
Diffstat (limited to 'src/backend/utils/cache/relcache.c')
-rw-r--r--src/backend/utils/cache/relcache.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 31c8f352144..61c6359e088 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.7 1997/05/20 11:41:38 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.8 1997/05/22 17:24:20 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1217,9 +1217,7 @@ RelationFlushRelation(Relation *relationPtr,
oldcxt = MemoryContextSwitchTo((MemoryContext)CacheCxt);
RelationCacheDelete(relation);
-
- FileInvalidate(RelationGetSystemPort(relation));
-
+
p = relation->rd_att->attrs;
for (i = 0; i < relation->rd_rel->relnatts; i++, p++)
pfree (*p);
@@ -1425,6 +1423,15 @@ RelationPurgeLocalRelation(bool xactCommitted)
smgrunlink(reln->rd_rel->relsmgr, reln);
}
}
+ else if ( !IsBootstrapProcessingMode () && !(reln->rd_istemp) )
+ /*
+ * RelationFlushRelation () below will flush relation information
+ * from the cache. We must call smgrclose to flush relation
+ * information from SMGR & FMGR, too. We assume that for temp
+ * relations smgrunlink is already called by heap_destroyr
+ * and we skip smgrclose for them. - vadim 05/22/97
+ */
+ smgrclose(reln->rd_rel->relsmgr, reln);
reln->rd_islocal = FALSE;