diff options
Diffstat (limited to 'src/backend/utils/time/snapmgr.c')
-rw-r--r-- | src/backend/utils/time/snapmgr.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c index b20440ee21f..4a3613d15fc 100644 --- a/src/backend/utils/time/snapmgr.c +++ b/src/backend/utils/time/snapmgr.c @@ -1390,9 +1390,21 @@ ImportSnapshot(const char *idstr) f = AllocateFile(path, PG_BINARY_R); if (!f) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("invalid snapshot identifier: \"%s\"", idstr))); + { + /* + * If file is missing while identifier has a correct format, avoid + * system errors. + */ + if (errno == ENOENT) + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("snapshot \"%s\" does not exist", idstr))); + else + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not open file \"%s\" for reading: %m", + path))); + } /* get the size of the file so that we know how much memory we need */ if (fstat(fileno(f), &stat_buf)) |