diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 1997-05-22 17:24:20 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 1997-05-22 17:24:20 +0000 |
commit | c9be1bccc18df88c8a95b6748b9e979bed2f6cac (patch) | |
tree | e399828b16c78211644592d9a296bb2c5f99412c /src/backend/utils/cache/relcache.c | |
parent | 19269069dccf805653aef5a46bbab99a8b39b4aa (diff) | |
download | postgresql-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.c | 15 |
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; |