Re: pread() and pwrite()

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Thomas Munro <thomas.munro@enterprisedb.com>, Pg Hackers <pgsql-hackers@postgresql.org>, Oskari Saarenmaa <os@ohmu.fi>, Tobias Oberstein <tobias.oberstein@gmail.com>
Date: 2018-07-20T15:34:57Z
Lists: pgsql-hackers
Heikki Linnakangas <hlinnaka@iki.fi> writes:
> No objections, if you want to make the effort. But IMHO the lseek+read 
> fallback is good enough on Windows. Unless you were thinking that we 
> could then remove the !HAVE_PREAD fallback altogether. Are there any 
> other platforms out there that don't have pread/pwrite that we care about?

AFAICT, macOS has them as far back as we care about (prairiedog does).
HPUX 10.20 (gaur/pademelon) does not, so personally I'd like to keep
the lseek+read workaround.  Don't know about the oldest Solaris critters
we have in the buildfarm.  FreeBSD has had 'em at least since 4.0 (1994);
didn't check the other BSDen.

SUS v2 (POSIX 1997) does specify both functions, so we could insist on
their presence without breaking any of our own portability guidelines.
However, if we have to have some workaround anyway for Windows, it
seems like including an lseek+read code path is reasonable so that we
needn't retire those oldest buildfarm critters.

			regards, tom lane


Commits

  1. Use pg_pread() and pg_pwrite() for data files and WAL.

  2. Provide pg_pread() and pg_pwrite() for random I/O.

  3. Convert some long lists in configure.in to one-line-per-entry style.