Re: Include WAL in base backup
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: Fujii Masao <masao.fujii@gmail.com>
Cc: Magnus Hagander <magnus@hagander.net>, Tom Lane <tgl@sss.pgh.pa.us>, Stephen Frost <sfrost@snowman.net>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2011-01-30T18:58:15Z
Lists: pgsql-hackers
On 29.01.2011 09:10, Fujii Masao wrote: > On Sat, Jan 29, 2011 at 6:02 AM, Heikki Linnakangas > <heikki.linnakangas@enterprisedb.com> wrote: >> On 27.01.2011 06:44, Fujii Masao wrote: >>> >>> + XLByteToSeg(endptr, endlogid, endlogseg); >>> <snip> >>> + /* Have we reached our stop position yet? */ >>> + if (logid> endlogid || >>> + (logid == endlogid&& logseg>= endlogseg)) >>> + break; >>> >>> What I said in upthread is wrong. We should use XLByteToPrevSeg >>> for endptr and check "logseg> endlogseg". Otherwise, if endptr is >>> not a boundary byte, endlogid/endlogseg indicates the last >>> necessary WAL file, but it's not sent. >> >> We should use XLByteToPrevSeg, but I believe>= is still correct. >> logid/logseg is the last WAL segment we've successfully sent, and >> endlogif/endlogid is the last WAL segment we need to send. When they are the >> same, we're done. > > Really? logid/logseg is incremented just before the check as follows. > So, when they are the same, the WAL file which logid/logseg indicates > has not been sent yet. Am I missing something? > > + /* Advance to the next WAL file */ > + NextLogSeg(logid, logseg); > + > + /* Have we reached our stop position yet? */ > + if (logid> endlogid || > + (logid == endlogid&& logseg>= endlogseg)) > + break; Ah, you're right, I misread it. Never mind.. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com