From: Heikki Linnakangas Date: Mon, 12 Apr 2010 10:18:50 +0000 (+0000) Subject: Need to use the start pointer of a block we read from WAL segment in X-Git-Tag: REL9_0_0~592 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=258174b4629e59469a1b73a02e552b7e7cf60e7c;p=pg-rex%2Fsyncrep.git Need to use the start pointer of a block we read from WAL segment in the calculation, not the end pointer, as pointed out by Fujii Masao. --- diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index aa8fbc1a40..26fddba10b 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -30,7 +30,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/replication/walsender.c,v 1.15 2010/04/12 09:52:29 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/replication/walsender.c,v 1.16 2010/04/12 10:18:50 heikki Exp $ * *------------------------------------------------------------------------- */ @@ -506,8 +506,8 @@ WalSndKill(int code, Datum arg) void XLogRead(char *buf, XLogRecPtr recptr, Size nbytes) { + XLogRecPtr startRecPtr = recptr; char path[MAXPGPATH]; - uint32 startoff; uint32 lastRemovedLog; uint32 lastRemovedSeg; uint32 log; @@ -515,6 +515,7 @@ XLogRead(char *buf, XLogRecPtr recptr, Size nbytes) while (nbytes > 0) { + uint32 startoff; int segbytes; int readbytes; @@ -596,7 +597,7 @@ XLogRead(char *buf, XLogRecPtr recptr, Size nbytes) * already have been overwritten with new WAL records. */ XLogGetLastRemoved(&lastRemovedLog, &lastRemovedSeg); - XLByteToPrevSeg(recptr, log, seg); + XLByteToSeg(startRecPtr, log, seg); if (log < lastRemovedLog || (log == lastRemovedLog && seg <= lastRemovedSeg)) {