aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/file/fd.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2009-08-05 18:01:54 +0000
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2009-08-05 18:01:54 +0000
commit23dc89d2c385e8e362cb4b8186b4d4ad02242ac0 (patch)
tree670020a84a87526aaa6f0f9421c125da8194ef50 /src/backend/storage/file/fd.c
parentf4095b4c4b24a6fd2c1c330e572c24c6a9c99ea9 (diff)
downloadpostgresql-23dc89d2c385e8e362cb4b8186b4d4ad02242ac0.tar.gz
postgresql-23dc89d2c385e8e362cb4b8186b4d4ad02242ac0.zip
Improve error messages in md.c. When a filesystem operation like open() or
fsync() fails, say "file" rather than "relation" when printing the filename. This makes messages that display block numbers a bit confusing. For example, in message 'could not read block 150000 of file "base/1234/5678.1"', 150000 is the block number from the beginning of the relation, ie. segment 0, not 150000th block within that segment. Per discussion, users aren't usually interested in the exact location within the file, so we can live with that. To ease constructing error messages, add FilePathName(File) function to return the pathname of a virtual fd.
Diffstat (limited to 'src/backend/storage/file/fd.c')
-rw-r--r--src/backend/storage/file/fd.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index e0742701f1e..b608b2c311b 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/storage/file/fd.c,v 1.149 2009/06/11 14:49:01 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/storage/file/fd.c,v 1.150 2009/08/05 18:01:54 heikki Exp $
*
* NOTES:
*
@@ -1319,6 +1319,20 @@ FileTruncate(File file, off_t offset)
return returnCode;
}
+/*
+ * Return the pathname associated with an open file.
+ *
+ * The returned string points to an internal buffer, which is valid until
+ * the file is closed.
+ */
+char *
+FilePathName(File file)
+{
+ Assert(FileIsValid(file));
+
+ return VfdCache[file].fileName;
+}
+
/*
* Routines that want to use stdio (ie, FILE*) should use AllocateFile