From: Teodor Sigaev Date: Fri, 19 May 2006 17:15:41 +0000 (+0000) Subject: Call MarkBufferDirty() before XLogInsert() during completion of insert X-Git-Tag: REL9_0_0~7920 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=09518fbdf445554f54e4c3cffc964fe2d073b550;p=pg-rex%2Fsyncrep.git Call MarkBufferDirty() before XLogInsert() during completion of insert --- diff --git a/src/backend/access/gist/gistxlog.c b/src/backend/access/gist/gistxlog.c index aef2056a34..c4291c01f8 100644 --- a/src/backend/access/gist/gistxlog.c +++ b/src/backend/access/gist/gistxlog.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistxlog.c,v 1.19 2006/05/19 16:15:17 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistxlog.c,v 1.20 2006/05/19 17:15:41 teodor Exp $ *------------------------------------------------------------------------- */ #include "postgres.h" @@ -753,14 +753,16 @@ gistContinueInsert(gistIncompleteInsert *insert) * for following possible replays */ - /* write pages with XLOG LSN */ + /* write pages, we should mark it dirty befor XLogInsert() */ + for (j = 0; j < numbuffer; j++) { + GistPageGetOpaque(pages[j])->rightlink = InvalidBlockNumber; + MarkBufferDirty(buffers[j]); + } recptr = XLogInsert(RM_GIST_ID, XLOG_GIST_PAGE_UPDATE, rdata); for (j = 0; j < numbuffer; j++) { PageSetLSN(pages[j], recptr); PageSetTLI(pages[j], ThisTimeLineID); - GistPageGetOpaque(pages[j])->rightlink = InvalidBlockNumber; - MarkBufferDirty(buffers[j]); } END_CRIT_SECTION();