pg_waldump: Fix error message for WAL files smaller than XLOG_BLCKSZ.
When opening a WAL file smaller than XLOG_BLCKSZ (e.g. 0 bytes long) while determining the wal_segment_size, pg_waldump checked errno, despite errno not being set by the short read. Resulting in a bogus error message. Author: Kyotaro Horiguchi <horikyota.ntt@gmail.com> Discussion: https://postgr.es/m/20220214.181847.775024684568733277.horikyota.ntt@gmail.com Backpatch: 11-, the bug was introducedin fc49e24fa
This commit is contained in:
parent
3faa21bb76
commit
51c3416561
@ -210,8 +210,10 @@ search_directory(const char *directory, const char *fname)
|
||||
if (fd >= 0)
|
||||
{
|
||||
PGAlignedXLogBlock buf;
|
||||
int r;
|
||||
|
||||
if (read(fd, buf.data, XLOG_BLCKSZ) == XLOG_BLCKSZ)
|
||||
r = read(fd, buf.data, XLOG_BLCKSZ);
|
||||
if (r == XLOG_BLCKSZ)
|
||||
{
|
||||
XLogLongPageHeader longhdr = (XLogLongPageHeader) buf.data;
|
||||
|
||||
@ -223,14 +225,12 @@ search_directory(const char *directory, const char *fname)
|
||||
WalSegSz),
|
||||
fname, WalSegSz);
|
||||
}
|
||||
else if (r < 0)
|
||||
fatal_error("could not read file \"%s\": %s",
|
||||
fname, strerror(errno));
|
||||
else
|
||||
{
|
||||
if (errno != 0)
|
||||
fatal_error("could not read file \"%s\": %s",
|
||||
fname, strerror(errno));
|
||||
else
|
||||
fatal_error("not enough data in file \"%s\"", fname);
|
||||
}
|
||||
fatal_error("not enough data in file \"%s\"", fname);
|
||||
|
||||
close(fd);
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user