Re: pg_preadv() and pg_pwritev()

Sergey Shinderuk <s.shinderuk@postgrespro.ru>

From: Sergey Shinderuk <s.shinderuk@postgrespro.ru>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-01-13T10:17:36Z
Lists: pgsql-hackers
On 13.01.2021 12:56, Thomas Munro wrote:
> 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?
> 

No, i've just rerun configure from clean checkout without any options. 
It does think that pwritev is available. I'll try to figure this out 
later and come back to you. Thanks.



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().