diff --git a/src/backend/utils/adt/genfile.c b/src/backend/utils/adt/genfile.c index d34182a7b0..7ea7ca21b0 100644 --- a/src/backend/utils/adt/genfile.c +++ b/src/backend/utils/adt/genfile.c @@ -126,8 +126,10 @@ read_binary_file(const char *filename, int64 seek_offset, int64 bytes_to_read, filename))); } - if (fseeko(file, (off_t) seek_offset, - (seek_offset >= 0) ? SEEK_SET : SEEK_END) != 0) + /* Avoid syscall fseeko, if seek_offset is zero */ + if (seek_offset != 0 && + fseeko(file, (off_t) seek_offset, + (seek_offset > 0) ? SEEK_SET : SEEK_END) != 0) ereport(ERROR, (errcode_for_file_access(), errmsg("could not seek in file \"%s\": %m", filename)));