Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit14f81d8

Browse files
committed
Decrement relation reference count incremented in
RelationIdCacheGetRelation() to flush relations from cachein commit time.
1 parentdefb10a commit14f81d8

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

‎src/backend/storage/buffer/bufmgr.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.26 1997/09/22 07:13:56 vadim Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.27 1997/10/12 07:12:02 vadim Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -832,6 +832,8 @@ FlushBuffer(Buffer buffer, bool release)
832832

833833
status=smgrflush(bufHdr->bufsmgr,bufrel,bufHdr->tag.blockNum,
834834
(char*)MAKE_PTR(bufHdr->data));
835+
836+
RelationDecrementReferenceCount(bufrel);
835837

836838
if (status==SM_FAIL)
837839
{
@@ -1065,15 +1067,8 @@ BufferSync()
10651067
* were flushing it out we must not clear DIRTY flag -
10661068
* vadim 01/17/97
10671069
*/
1068-
if (bufHdr->flags&BM_JUST_DIRTIED)
1069-
{
1070-
elog(NOTICE,"BufferSync: content of block %u (%s) changed while flushing",
1071-
bufHdr->tag.blockNum,bufHdr->sb_relname);
1072-
}
1073-
else
1074-
{
1070+
if (!(bufHdr->flags&BM_JUST_DIRTIED))
10751071
bufHdr->flags &= ~BM_DIRTY;
1076-
}
10771072
if (reln!= (Relation)NULL)
10781073
RelationDecrementReferenceCount(reln);
10791074
}
@@ -1392,6 +1387,9 @@ BufferReplace(BufferDesc *bufHdr, bool bufferLockHeld)
13921387
bufHdr->tag.blockNum,
13931388
(char*)MAKE_PTR(bufHdr->data));
13941389
}
1390+
1391+
if (reln!= (Relation)NULL)
1392+
RelationDecrementReferenceCount(reln);
13951393

13961394
if (status==SM_FAIL)
13971395
return (FALSE);

‎src/backend/storage/buffer/localbuf.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*
1616
*
1717
* IDENTIFICATION
18-
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.12 1997/09/18 20:21:22 momjian Exp $
18+
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.13 1997/10/12 07:12:03 vadim Exp $
1919
*
2020
*-------------------------------------------------------------------------
2121
*/
@@ -127,6 +127,7 @@ LocalBufferAlloc(Relation reln, BlockNumber blockNum, bool *foundPtr)
127127
smgrwrite(bufrel->rd_rel->relsmgr,bufrel,bufHdr->tag.blockNum,
128128
(char*)MAKE_PTR(bufHdr->data));
129129
LocalBufferFlushCount++;
130+
RelationDecrementReferenceCount(bufrel);
130131
}
131132

132133
/*
@@ -204,7 +205,8 @@ FlushLocalBuffer(Buffer buffer, bool release)
204205
smgrflush(bufrel->rd_rel->relsmgr,bufrel,bufHdr->tag.blockNum,
205206
(char*)MAKE_PTR(bufHdr->data));
206207
LocalBufferFlushCount++;
207-
208+
RelationDecrementReferenceCount(bufrel);
209+
208210
Assert(LocalRefCount[bufid]>0);
209211
if (release)
210212
LocalRefCount[bufid]--;
@@ -277,7 +279,8 @@ LocalBufferSync(void)
277279
smgrwrite(bufrel->rd_rel->relsmgr,bufrel,buf->tag.blockNum,
278280
(char*)MAKE_PTR(buf->data));
279281
LocalBufferFlushCount++;
280-
282+
RelationDecrementReferenceCount(bufrel);
283+
281284
buf->tag.relId.relId=InvalidOid;
282285
buf->flags &= ~BM_DIRTY;
283286
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp