diff --git a/src/backend/storage/file/buffile.c b/src/backend/storage/file/buffile.c index d3722616bb..5d4dcb102f 100644 --- a/src/backend/storage/file/buffile.c +++ b/src/backend/storage/file/buffile.c @@ -304,7 +304,8 @@ BufFileOpenShared(SharedFileSet *fileset, const char *name) if (nfiles == 0) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not open BufFile \"%s\"", name))); + errmsg("could not open temporary file \"%s\" from BufFile \"%s\": %m", + segment_name, name))); file = makeBufFileCommon(nfiles); file->files = files; @@ -763,20 +764,26 @@ BufFileTellBlock(BufFile *file) #endif /* - * Return the current file size. + * Return the current shared BufFile size. * * Counts any holes left behind by BufFileAppend as part of the size. - * Returns -1 on error. + * ereport()s on failure. */ int64 BufFileSize(BufFile *file) { int64 lastFileSize; + Assert(file->fileset != NULL); + /* Get the size of the last physical file. */ lastFileSize = FileSize(file->files[file->numFiles - 1]); if (lastFileSize < 0) - return -1; + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not determine size of temporary file \"%s\" from BufFile \"%s\": %m", + FilePathName(file->files[file->numFiles - 1]), + file->name))); return ((file->numFiles - 1) * (int64) MAX_PHYSICAL_FILESIZE) + lastFileSize; diff --git a/src/backend/utils/sort/logtape.c b/src/backend/utils/sort/logtape.c index 269523d5f6..2358c6fe52 100644 --- a/src/backend/utils/sort/logtape.c +++ b/src/backend/utils/sort/logtape.c @@ -433,10 +433,6 @@ ltsConcatWorkerTapes(LogicalTapeSet *lts, TapeShare *shared, pg_itoa(i, filename); file = BufFileOpenShared(fileset, filename); filesize = BufFileSize(file); - if (filesize < 0) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not determine size of temporary file \"%s\"", filename))); /* * Stash first BufFile, and concatenate subsequent BufFiles to that.