mirror of https://github.com/postgres/postgres
Fix some BufFileRead() error reporting
Remove "%m" from error messages where errno would be bogus. Add short
read byte counts where appropriate.
This is equivalent to what was done in
7897e3bb90
, but some code was apparently
developed concurrently to that and not updated accordingly.
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/f3501945-c591-8cc3-5ef0-b72a2e0eaa9c@enterprisedb.com
This commit is contained in:
parent
9a740f81eb
commit
1561612e3b
|
@ -371,7 +371,8 @@ SendBackupManifest(backup_manifest_info *manifest, bbsink *sink)
|
|||
if (rc != bytes_to_read)
|
||||
ereport(ERROR,
|
||||
(errcode_for_file_access(),
|
||||
errmsg("could not read from temporary file: %m")));
|
||||
errmsg("could not read from temporary file: read only %zu of %zu bytes",
|
||||
rc, bytes_to_read)));
|
||||
bbsink_manifest_contents(sink, bytes_to_read);
|
||||
manifest_bytes_done += bytes_to_read;
|
||||
}
|
||||
|
|
|
@ -2063,7 +2063,7 @@ apply_spooled_messages(FileSet *stream_fileset, TransactionId xid,
|
|||
nchanges = 0;
|
||||
while (true)
|
||||
{
|
||||
int nbytes;
|
||||
size_t nbytes;
|
||||
int len;
|
||||
|
||||
CHECK_FOR_INTERRUPTS();
|
||||
|
@ -2079,8 +2079,8 @@ apply_spooled_messages(FileSet *stream_fileset, TransactionId xid,
|
|||
if (nbytes != sizeof(len))
|
||||
ereport(ERROR,
|
||||
(errcode_for_file_access(),
|
||||
errmsg("could not read from streaming transaction's changes file \"%s\": %m",
|
||||
path)));
|
||||
errmsg("could not read from streaming transaction's changes file \"%s\": read only %zu of %zu bytes",
|
||||
path, nbytes, sizeof(len))));
|
||||
|
||||
if (len <= 0)
|
||||
elog(ERROR, "incorrect length %d in streaming transaction's changes file \"%s\"",
|
||||
|
@ -2090,11 +2090,12 @@ apply_spooled_messages(FileSet *stream_fileset, TransactionId xid,
|
|||
buffer = repalloc(buffer, len);
|
||||
|
||||
/* and finally read the data into the buffer */
|
||||
if (BufFileRead(stream_fd, buffer, len) != len)
|
||||
nbytes = BufFileRead(stream_fd, buffer, len);
|
||||
if (nbytes != len)
|
||||
ereport(ERROR,
|
||||
(errcode_for_file_access(),
|
||||
errmsg("could not read from streaming transaction's changes file \"%s\": %m",
|
||||
path)));
|
||||
errmsg("could not read from streaming transaction's changes file \"%s\": read only %zu of %zu bytes",
|
||||
path, nbytes, (size_t) len)));
|
||||
|
||||
BufFileTell(stream_fd, &fileno, &offset);
|
||||
|
||||
|
@ -3992,6 +3993,7 @@ static void
|
|||
subxact_info_read(Oid subid, TransactionId xid)
|
||||
{
|
||||
char path[MAXPGPATH];
|
||||
size_t nread;
|
||||
Size len;
|
||||
BufFile *fd;
|
||||
MemoryContext oldctx;
|
||||
|
@ -4011,13 +4013,12 @@ subxact_info_read(Oid subid, TransactionId xid)
|
|||
return;
|
||||
|
||||
/* read number of subxact items */
|
||||
if (BufFileRead(fd, &subxact_data.nsubxacts,
|
||||
sizeof(subxact_data.nsubxacts)) !=
|
||||
sizeof(subxact_data.nsubxacts))
|
||||
nread = BufFileRead(fd, &subxact_data.nsubxacts, sizeof(subxact_data.nsubxacts));
|
||||
if (nread != sizeof(subxact_data.nsubxacts))
|
||||
ereport(ERROR,
|
||||
(errcode_for_file_access(),
|
||||
errmsg("could not read from streaming transaction's subxact file \"%s\": %m",
|
||||
path)));
|
||||
errmsg("could not read from streaming transaction's subxact file \"%s\": read only %zu of %zu bytes",
|
||||
path, nread, sizeof(subxact_data.nsubxacts))));
|
||||
|
||||
len = sizeof(SubXactInfo) * subxact_data.nsubxacts;
|
||||
|
||||
|
@ -4035,11 +4036,15 @@ subxact_info_read(Oid subid, TransactionId xid)
|
|||
sizeof(SubXactInfo));
|
||||
MemoryContextSwitchTo(oldctx);
|
||||
|
||||
if ((len > 0) && ((BufFileRead(fd, subxact_data.subxacts, len)) != len))
|
||||
if (len > 0)
|
||||
{
|
||||
nread = BufFileRead(fd, subxact_data.subxacts, len);
|
||||
if (nread != len)
|
||||
ereport(ERROR,
|
||||
(errcode_for_file_access(),
|
||||
errmsg("could not read from streaming transaction's subxact file \"%s\": %m",
|
||||
path)));
|
||||
errmsg("could not read from streaming transaction's subxact file \"%s\": read only %zu of %zu bytes",
|
||||
path, nread, len)));
|
||||
}
|
||||
|
||||
BufFileClose(fd);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue