diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/storage/buffer/localbuf.c | 16 | ||||
-rw-r--r-- | src/backend/utils/init/postinit.c | 3 | ||||
-rw-r--r-- | src/include/storage/bufmgr.h | 3 |
3 files changed, 19 insertions, 3 deletions
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c index f52ed71cd8b..eb6db2447a8 100644 --- a/src/backend/storage/buffer/localbuf.c +++ b/src/backend/storage/buffer/localbuf.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/localbuf.c,v 1.63 2005/03/04 20:21:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/localbuf.c,v 1.64 2005/03/18 16:16:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -259,3 +259,17 @@ AtEOXact_LocalBuffers(bool isCommit) } #endif } + +/* + * AtProcExit_LocalBuffers - ensure we have dropped pins during backend exit. + * + * This is just like AtProcExit_Buffers, but for local buffers. We have + * to drop pins to ensure that any attempt to drop temp files doesn't + * fail in DropRelFileNodeBuffers. + */ +void +AtProcExit_LocalBuffers(void) +{ + /* just zero the refcounts ... */ + MemSet(LocalRefCount, 0, NLocBuffer * sizeof(*LocalRefCount)); +} diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index 901053f1839..05f669c2ccd 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.142 2005/03/18 05:24:13 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.143 2005/03/18 16:16:09 tgl Exp $ * * *------------------------------------------------------------------------- @@ -515,6 +515,7 @@ ShutdownPostgres(int code, Datum arg) */ LWLockReleaseAll(); AtProcExit_Buffers(); + AtProcExit_LocalBuffers(); /* * In case a transaction is open, delete any files it created. This diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h index 5fb706f5958..9268335b026 100644 --- a/src/include/storage/bufmgr.h +++ b/src/include/storage/bufmgr.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/storage/bufmgr.h,v 1.90 2005/03/04 20:21:07 tgl Exp $ + * $PostgreSQL: pgsql/src/include/storage/bufmgr.h,v 1.91 2005/03/18 16:16:09 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -158,6 +158,7 @@ extern void BufferSync(void); extern void BgBufferSync(void); extern void InitLocalBuffer(void); +extern void AtProcExit_LocalBuffers(void); /* in freelist.c */ extern void StrategyHintVacuum(bool vacuum_active); |