aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/file/buffile.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/storage/file/buffile.c')
-rw-r--r--src/backend/storage/file/buffile.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/backend/storage/file/buffile.c b/src/backend/storage/file/buffile.c
index d3722616bba..5d4dcb102fc 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;