summaryrefslogtreecommitdiff
path: root/src/backend/access/gin/ginvacuum.c
diff options
context:
space:
mode:
authorTeodor Sigaev2007-06-05 12:47:49 +0000
committerTeodor Sigaev2007-06-05 12:47:49 +0000
commitf74426283d9a5d889c310e3844ef850622203d7e (patch)
treee531bd49453a2fe2fb1a1a83090a379eff0d7c27 /src/backend/access/gin/ginvacuum.c
parent4c0fe5127946715005a49a28be85a5f7597b9618 (diff)
Move call of MarkBufferDirty() before XLogInsert() as required.
Many thanks to Heikki Linnakangas <[email protected]> for his sharp eyes.
Diffstat (limited to 'src/backend/access/gin/ginvacuum.c')
-rw-r--r--src/backend/access/gin/ginvacuum.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/backend/access/gin/ginvacuum.c b/src/backend/access/gin/ginvacuum.c
index 6174be35bf2..2a636762c0f 100644
--- a/src/backend/access/gin/ginvacuum.c
+++ b/src/backend/access/gin/ginvacuum.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/gin/ginvacuum.c,v 1.14 2007/06/04 15:56:28 teodor Exp $
+ * $PostgreSQL: pgsql/src/backend/access/gin/ginvacuum.c,v 1.15 2007/06/05 12:47:49 teodor Exp $
*-------------------------------------------------------------------------
*/
@@ -191,9 +191,9 @@ ginVacuumPostingTreeLeaves(GinVacuumState *gvs, BlockNumber blkno, bool isRoot,
pfree(cleaned);
GinPageGetOpaque(page)->maxoff = newMaxOff;
+ MarkBufferDirty(buffer);
xlogVacuumPage(gvs->index, buffer);
- MarkBufferDirty(buffer);
END_CRIT_SECTION();
/* if root is a leaf page, we don't desire further processing */
@@ -282,6 +282,11 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn
*/
GinPageGetOpaque(page)->flags = GIN_DELETED;
+ MarkBufferDirty(pBuffer);
+ if (leftBlkno != InvalidBlockNumber)
+ MarkBufferDirty(lBuffer);
+ MarkBufferDirty(dBuffer);
+
if (!gvs->index->rd_istemp)
{
XLogRecPtr recptr;
@@ -339,18 +344,13 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn
}
}
- MarkBufferDirty(pBuffer);
if (!isParentRoot)
LockBuffer(pBuffer, GIN_UNLOCK);
ReleaseBuffer(pBuffer);
if (leftBlkno != InvalidBlockNumber)
- {
- MarkBufferDirty(lBuffer);
UnlockReleaseBuffer(lBuffer);
- }
- MarkBufferDirty(dBuffer);
UnlockReleaseBuffer(dBuffer);
END_CRIT_SECTION();
@@ -636,8 +636,8 @@ ginbulkdelete(PG_FUNCTION_ARGS)
{
START_CRIT_SECTION();
PageRestoreTempPage(resPage, page);
- xlogVacuumPage(gvs.index, buffer);
MarkBufferDirty(buffer);
+ xlogVacuumPage(gvs.index, buffer);
UnlockReleaseBuffer(buffer);
END_CRIT_SECTION();
}