mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
Fix aboriginal bug in BufFileDumpBuffer that would cause it to write the
wrong data when dumping a bufferload that crosses a component-file boundary. This probably has not been seen in the wild because (a) component files are normally 1GB apiece and (b) non-block-aligned buffer usage is relatively rare. But it's fairly easy to reproduce a problem if one reduces RELSEG_SIZE in a test build. Kudos to Kurt Harriman for spotting the bug.
This commit is contained in:
parent
3e2c198e06
commit
1e172f9692
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/storage/file/buffile.c,v 1.24 2006/07/14 05:28:28 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/storage/file/buffile.c,v 1.24.2.1 2007/06/01 23:43:17 tgl Exp $
|
||||
*
|
||||
* NOTES:
|
||||
*
|
||||
@ -289,7 +289,7 @@ BufFileDumpBuffer(BufFile *file)
|
||||
return; /* seek failed, give up */
|
||||
file->offsets[file->curFile] = file->curOffset;
|
||||
}
|
||||
bytestowrite = FileWrite(thisfile, file->buffer, bytestowrite);
|
||||
bytestowrite = FileWrite(thisfile, file->buffer + wpos, bytestowrite);
|
||||
if (bytestowrite <= 0)
|
||||
return; /* failed to write */
|
||||
file->offsets[file->curFile] += bytestowrite;
|
||||
|
Loading…
Reference in New Issue
Block a user