Add BufFileRead variants with short read and EOF detection

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-12-28T10:47:02Z
Lists: pgsql-hackers

Attachments

Most callers of BufFileRead() want to check whether they read the full 
specified length.  Checking this at every call site is very tedious. 
This patch provides additional variants BufFileReadExact() and 
BufFileReadMaybeEOF() that include the length checks.

I considered changing BufFileRead() itself, but this function is also 
used in extensions, and so changing the behavior like this would create 
a lot of problems there.  The new names are analogous to the existing 
LogicalTapeReadExact().

Commits

  1. Add BufFileRead variants with short read and EOF detection

  2. Fix some BufFileRead() error reporting

  3. Push lpp variable closer to usage in heapgetpage()

  4. Fix buffile.c error handling.