Re: pg_preadv() and pg_pwritev()

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Sergey Shinderuk <s.shinderuk@postgrespro.ru>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-01-13T09:56:50Z
Lists: pgsql-hackers
On Wed, Jan 13, 2021 at 10:40 PM Sergey Shinderuk
<s.shinderuk@postgrespro.ru> wrote:
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/usr/include/sys/uio.h:104:9:
> note: 'pwritev' has been marked as being introduced in macOS 11.0 here,
> but the deployment target is macOS
>        10.15.0
> ssize_t pwritev(int, const struct iovec *, int, off_t)
> __DARWIN_NOCANCEL(pwritev) __API_AVAILABLE(macos(11.0), ios(14.0),
> watchos(7.0), tvos(14.0));
>          ^

Hrm...  So why did "configure" think you have pwritev, then?  It seems
like you must have been using different compilers or options at
configure time and compile time, no?



Commits

  1. Improve our heuristic for selecting PG_SYSROOT on macOS.

  2. Move our p{read,write}v replacements into their own files.

  3. Don't use elog() in src/port/pwrite.c.

  4. Use vectored I/O to fill new WAL segments.

  5. Provide pg_preadv() and pg_pwritev().