Re: Use pread and pwrite instead of lseek + write and read - Mailing list pgsql-hackers

From Magnus Hagander
Subject Re: Use pread and pwrite instead of lseek + write and read
Date
Msg-id CABUevEzZ=CGdmwSZwW9oNuf4pQZMExk33jcNO7rseqrAgKzj5Q@mail.gmail.com
Whole thread Raw
In response to Re: Use pread and pwrite instead of lseek + write and read  (Victor Wagner <vitus@wagner.pp.ru>)
Responses Re: Use pread and pwrite instead of lseek + write and read  (ilmari@ilmari.org (Dagfinn Ilmari Mannsåker))
Re: Use pread and pwrite instead of lseek + write and read  (Victor Wagner <vitus@wagner.pp.ru>)
List pgsql-hackers


On Wed, Aug 17, 2016 at 11:34 AM, Victor Wagner <vitus@wagner.pp.ru> wrote:
On Wed, 17 Aug 2016 10:58:09 +0300
Oskari Saarenmaa <os@ohmu.fi> wrote:



>
> The attached patch replaces FileWrite and FileRead with FileWriteAt
> and FileReadAt and removes most FileSeek calls.  FileSeek is still
> around so we can find the end of a file, but it's not used for
> anything else.

It seems that configure test for availability of pread/pwrite functions
and corresponding #define is needed.

I don't think that all platforms, supported by PostgreSQL support this
API. Especially, I cannot find any mention of pread/pwrite in the Win32
except this thread on stackoverflow:


Yeah, Windows does not have those API calls, but it shouldn't be rocket science to write a wrapper for it. The standard windows APIs can do the same thing -- but they'll need access to the HANDLE for the file and not the posix file descriptor.

It also has things like ReadFileScatter() (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365469(v=vs.85).aspx) which is not the same, but might also be interesting as a future improvement. That's clearly something different though, and out of scope for this one. But IIRC that functionality was actually added for the sake of SQLServer back in the days.

--

pgsql-hackers by date:

Previous
From: Aleksander Alekseev
Date:
Subject: Re: [GENERAL] C++ port of Postgres
Next
From: ilmari@ilmari.org (Dagfinn Ilmari Mannsåker)
Date:
Subject: Re: Use pread and pwrite instead of lseek + write and read