1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-03 15:22:11 +03:00

Remove dead pread and pwrite replacement code.

pread() and pwrite() are in SUSv2, and all targeted Unix systems have
them.

Previously, we defined pg_pread and pg_pwrite to emulate these function
with lseek() on old Unixen.  The names with a pg_ prefix were a reminder
of a portability hazard: they might change the current file position.
That hazard is gone, so we can drop the prefixes.

Since the remaining replacement code is Windows-only, move it into
src/port/win32p{read,write}.c, and move the declarations into
src/include/port/win32_port.h.

No need for vestigial HAVE_PREAD, HAVE_PWRITE macros as they were only
used for declarations in port.h which have now moved into win32_port.h.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Greg Stark <stark@mit.edu>
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/CA+hUKGJ3LHeP9w5Fgzdr4G8AnEtJ=z=p6hGDEm4qYGEUX5B6fQ@mail.gmail.com
This commit is contained in:
Thomas Munro
2022-08-05 09:42:31 +12:00
parent 71f5dc6dfb
commit cf112c1220
23 changed files with 76 additions and 137 deletions

View File

@@ -30,7 +30,7 @@ pg_preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset)
{
#ifdef HAVE_READV
if (iovcnt == 1)
return pg_pread(fd, iov[0].iov_base, iov[0].iov_len, offset);
return pread(fd, iov[0].iov_base, iov[0].iov_len, offset);
if (lseek(fd, offset, SEEK_SET) < 0)
return -1;
return readv(fd, iov, iovcnt);
@@ -40,7 +40,7 @@ pg_preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset)
for (int i = 0; i < iovcnt; ++i)
{
part = pg_pread(fd, iov[i].iov_base, iov[i].iov_len, offset);
part = pread(fd, iov[i].iov_base, iov[i].iov_len, offset);
if (part < 0)
{
if (i == 0)

View File

@@ -30,7 +30,7 @@ pg_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset)
{
#ifdef HAVE_WRITEV
if (iovcnt == 1)
return pg_pwrite(fd, iov[0].iov_base, iov[0].iov_len, offset);
return pwrite(fd, iov[0].iov_base, iov[0].iov_len, offset);
if (lseek(fd, offset, SEEK_SET) < 0)
return -1;
return writev(fd, iov, iovcnt);
@@ -40,7 +40,7 @@ pg_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset)
for (int i = 0; i < iovcnt; ++i)
{
part = pg_pwrite(fd, iov[i].iov_base, iov[i].iov_len, offset);
part = pwrite(fd, iov[i].iov_base, iov[i].iov_len, offset);
if (part < 0)
{
if (i == 0)

View File

@@ -1,15 +1,12 @@
/*-------------------------------------------------------------------------
*
* pread.c
* Implementation of pread(2) for platforms that lack one.
* win32pread.c
* Implementation of pread(2) for Windows.
*
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/port/pread.c
*
* Note that this implementation changes the current file position, unlike
* the POSIX function, so we use the name pg_pread().
* src/port/win32pread.c
*
*-------------------------------------------------------------------------
*/
@@ -17,16 +14,11 @@
#include "postgres.h"
#ifdef WIN32
#include <windows.h>
#else
#include <unistd.h>
#endif
ssize_t
pg_pread(int fd, void *buf, size_t size, off_t offset)
pread(int fd, void *buf, size_t size, off_t offset)
{
#ifdef WIN32
OVERLAPPED overlapped = {0};
HANDLE handle;
DWORD result;
@@ -49,10 +41,4 @@ pg_pread(int fd, void *buf, size_t size, off_t offset)
}
return result;
#else
if (lseek(fd, offset, SEEK_SET) < 0)
return -1;
return read(fd, buf, size);
#endif
}

View File

@@ -1,15 +1,12 @@
/*-------------------------------------------------------------------------
*
* pwrite.c
* Implementation of pwrite(2) for platforms that lack one.
* win32pwrite.c
* Implementation of pwrite(2) for Windows.
*
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/port/pwrite.c
*
* Note that this implementation changes the current file position, unlike
* the POSIX function, so we use the name pg_pwrite().
* src/port/win32pwrite.c
*
*-------------------------------------------------------------------------
*/
@@ -17,16 +14,11 @@
#include "postgres.h"
#ifdef WIN32
#include <windows.h>
#else
#include <unistd.h>
#endif
ssize_t
pg_pwrite(int fd, const void *buf, size_t size, off_t offset)
pwrite(int fd, const void *buf, size_t size, off_t offset)
{
#ifdef WIN32
OVERLAPPED overlapped = {0};
HANDLE handle;
DWORD result;
@@ -46,10 +38,4 @@ pg_pwrite(int fd, const void *buf, size_t size, off_t offset)
}
return result;
#else
if (lseek(fd, offset, SEEK_SET) < 0)
return -1;
return write(fd, buf, size);
#endif
}