diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index f48dd5f7812f508e8f3e011b164fd8a4ec373799..1ac972e46feb901c18e71703d199f45468c89330 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.322 2008/11/09 17:51:15 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.323 2008/12/03 08:20:11 heikki Exp $ * *------------------------------------------------------------------------- */ @@ -6674,6 +6674,8 @@ pg_stop_backup(PG_FUNCTION_ARGS) char histfilepath[MAXPGPATH]; char startxlogfilename[MAXFNAMELEN]; char stopxlogfilename[MAXFNAMELEN]; + char lastxlogfilename[MAXFNAMELEN]; + char histfilename[MAXFNAMELEN]; uint32 _logId; uint32 _logSeg; FILE *lfp; @@ -6801,14 +6803,18 @@ pg_stop_backup(PG_FUNCTION_ARGS) * we assume the admin wanted his backup to work completely. If you * don't wish to wait, you can set statement_timeout. */ - BackupHistoryFileName(histfilepath, ThisTimeLineID, _logId, _logSeg, + XLByteToPrevSeg(stoppoint, _logId, _logSeg); + XLogFileName(lastxlogfilename, ThisTimeLineID, _logId, _logSeg); + + XLByteToSeg(startpoint, _logId, _logSeg); + BackupHistoryFileName(histfilename, ThisTimeLineID, _logId, _logSeg, startpoint.xrecoff % XLogSegSize); seconds_before_warning = 60; waits = 0; - while (XLogArchiveIsBusy(stopxlogfilename) || - XLogArchiveIsBusy(histfilepath)) + while (XLogArchiveIsBusy(lastxlogfilename) || + XLogArchiveIsBusy(histfilename)) { CHECK_FOR_INTERRUPTS();