Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcf112c1

Browse files
committed
Remove dead pread and pwrite replacement code.
pread() and pwrite() are in SUSv2, and all targeted Unix systems havethem.Previously, we defined pg_pread and pg_pwrite to emulate these functionwith lseek() on old Unixen. The names with a pg_ prefix were a reminderof 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 intosrc/port/win32p{read,write}.c, and move the declarations intosrc/include/port/win32_port.h.No need for vestigial HAVE_PREAD, HAVE_PWRITE macros as they were onlyused 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
1 parent71f5dc6 commitcf112c1

File tree

23 files changed

+76
-137
lines changed

23 files changed

+76
-137
lines changed

‎configure

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16728,32 +16728,6 @@ esac
1672816728

1672916729
fi
1673016730

16731-
ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread"
16732-
if test "x$ac_cv_func_pread" = xyes; then :
16733-
$as_echo "#define HAVE_PREAD 1" >>confdefs.h
16734-
16735-
else
16736-
case " $LIBOBJS " in
16737-
*" pread.$ac_objext "* ) ;;
16738-
*) LIBOBJS="$LIBOBJS pread.$ac_objext"
16739-
;;
16740-
esac
16741-
16742-
fi
16743-
16744-
ac_fn_c_check_func "$LINENO" "pwrite" "ac_cv_func_pwrite"
16745-
if test "x$ac_cv_func_pwrite" = xyes; then :
16746-
$as_echo "#define HAVE_PWRITE 1" >>confdefs.h
16747-
16748-
else
16749-
case " $LIBOBJS " in
16750-
*" pwrite.$ac_objext "* ) ;;
16751-
*) LIBOBJS="$LIBOBJS pwrite.$ac_objext"
16752-
;;
16753-
esac
16754-
16755-
fi
16756-
1675716731
ac_fn_c_check_func "$LINENO" "strlcat" "ac_cv_func_strlcat"
1675816732
if test "x$ac_cv_func_strlcat" = xyes; then :
1675916733
$as_echo "#define HAVE_STRLCAT 1" >>confdefs.h
@@ -17015,6 +16989,18 @@ esac
1701516989
;;
1701616990
esac
1701716991

16992+
case " $LIBOBJS " in
16993+
*" win32pread.$ac_objext "* ) ;;
16994+
*) LIBOBJS="$LIBOBJS win32pread.$ac_objext"
16995+
;;
16996+
esac
16997+
16998+
case " $LIBOBJS " in
16999+
*" win32pwrite.$ac_objext "* ) ;;
17000+
*) LIBOBJS="$LIBOBJS win32pwrite.$ac_objext"
17001+
;;
17002+
esac
17003+
1701817004
case " $LIBOBJS " in
1701917005
*" win32security.$ac_objext "* ) ;;
1702017006
*) LIBOBJS="$LIBOBJS win32security.$ac_objext"

‎configure.ac

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1876,8 +1876,6 @@ AC_REPLACE_FUNCS(m4_normalize([
18761876
getpeereid
18771877
inet_aton
18781878
mkdtemp
1879-
pread
1880-
pwrite
18811879
strlcat
18821880
strlcpy
18831881
strnlen
@@ -1943,6 +1941,8 @@ if test "$PORTNAME" = "win32"; then
19431941
AC_LIBOBJ(win32error)
19441942
AC_LIBOBJ(win32link)
19451943
AC_LIBOBJ(win32ntdll)
1944+
AC_LIBOBJ(win32pread)
1945+
AC_LIBOBJ(win32pwrite)
19461946
AC_LIBOBJ(win32security)
19471947
AC_LIBOBJ(win32setlocale)
19481948
AC_LIBOBJ(win32stat)

‎contrib/pg_stat_statements/pg_stat_statements.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2103,9 +2103,9 @@ qtext_store(const char *query, int query_len,
21032103
if (fd<0)
21042104
gotoerror;
21052105

2106-
if (pg_pwrite(fd,query,query_len,off)!=query_len)
2106+
if (pwrite(fd,query,query_len,off)!=query_len)
21072107
gotoerror;
2108-
if (pg_pwrite(fd,"\0",1,off+query_len)!=1)
2108+
if (pwrite(fd,"\0",1,off+query_len)!=1)
21092109
gotoerror;
21102110

21112111
CloseTransientFile(fd);

‎src/backend/access/heap/rewriteheap.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1149,7 +1149,7 @@ heap_xlog_logical_rewrite(XLogReaderState *r)
11491149
/* write out tail end of mapping file (again) */
11501150
errno=0;
11511151
pgstat_report_wait_start(WAIT_EVENT_LOGICAL_REWRITE_MAPPING_WRITE);
1152-
if (pg_pwrite(fd,data,len,xlrec->offset)!=len)
1152+
if (pwrite(fd,data,len,xlrec->offset)!=len)
11531153
{
11541154
/* if write didn't set errno, assume problem is no disk space */
11551155
if (errno==0)

‎src/backend/access/transam/slru.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,7 @@ SlruPhysicalReadPage(SlruCtl ctl, int pageno, int slotno)
718718

719719
errno=0;
720720
pgstat_report_wait_start(WAIT_EVENT_SLRU_READ);
721-
if (pg_pread(fd,shared->page_buffer[slotno],BLCKSZ,offset)!=BLCKSZ)
721+
if (pread(fd,shared->page_buffer[slotno],BLCKSZ,offset)!=BLCKSZ)
722722
{
723723
pgstat_report_wait_end();
724724
slru_errcause=SLRU_READ_FAILED;
@@ -873,7 +873,7 @@ SlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno, SlruWriteAll fdata)
873873

874874
errno=0;
875875
pgstat_report_wait_start(WAIT_EVENT_SLRU_WRITE);
876-
if (pg_pwrite(fd,shared->page_buffer[slotno],BLCKSZ,offset)!=BLCKSZ)
876+
if (pwrite(fd,shared->page_buffer[slotno],BLCKSZ,offset)!=BLCKSZ)
877877
{
878878
pgstat_report_wait_end();
879879
/* if write didn't set errno, assume problem is no disk space */

‎src/backend/access/transam/xlog.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2189,7 +2189,7 @@ XLogWrite(XLogwrtRqst WriteRqst, TimeLineID tli, bool flexible)
21892189
INSTR_TIME_SET_CURRENT(start);
21902190

21912191
pgstat_report_wait_start(WAIT_EVENT_WAL_WRITE);
2192-
written=pg_pwrite(openLogFile,from,nleft,startoffset);
2192+
written=pwrite(openLogFile,from,nleft,startoffset);
21932193
pgstat_report_wait_end();
21942194

21952195
/*
@@ -3011,7 +3011,7 @@ XLogFileInitInternal(XLogSegNo logsegno, TimeLineID logtli,
30113011
* enough.
30123012
*/
30133013
errno=0;
3014-
if (pg_pwrite(fd,zbuffer.data,1,wal_segment_size-1)!=1)
3014+
if (pwrite(fd,zbuffer.data,1,wal_segment_size-1)!=1)
30153015
{
30163016
/* if write didn't set errno, assume no disk space */
30173017
save_errno=errno ?errno :ENOSPC;

‎src/backend/access/transam/xlogreader.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1514,7 +1514,7 @@ WALRead(XLogReaderState *state,
15141514

15151515
/* Reset errno first; eases reporting non-errno-affecting errors */
15161516
errno=0;
1517-
readbytes=pg_pread(state->seg.ws_file,p,segbytes, (off_t)startoff);
1517+
readbytes=pread(state->seg.ws_file,p,segbytes, (off_t)startoff);
15181518

15191519
#ifndefFRONTEND
15201520
pgstat_report_wait_end();

‎src/backend/access/transam/xlogrecovery.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3260,7 +3260,7 @@ XLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr, int reqLen,
32603260
readOff=targetPageOff;
32613261

32623262
pgstat_report_wait_start(WAIT_EVENT_WAL_READ);
3263-
r=pg_pread(readFile,readBuf,XLOG_BLCKSZ, (off_t)readOff);
3263+
r=pread(readFile,readBuf,XLOG_BLCKSZ, (off_t)readOff);
32643264
if (r!=XLOG_BLCKSZ)
32653265
{
32663266
charfname[MAXFNAMELEN];

‎src/backend/replication/basebackup.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1822,7 +1822,7 @@ basebackup_read_file(int fd, char *buf, size_t nbytes, off_t offset,
18221822
intrc;
18231823

18241824
pgstat_report_wait_start(WAIT_EVENT_BASEBACKUP_READ);
1825-
rc=pg_pread(fd,buf,nbytes,offset);
1825+
rc=pread(fd,buf,nbytes,offset);
18261826
pgstat_report_wait_end();
18271827

18281828
if (rc<0)

‎src/backend/replication/walreceiver.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -915,7 +915,7 @@ XLogWalRcvWrite(char *buf, Size nbytes, XLogRecPtr recptr, TimeLineID tli)
915915
/* OK to write the logs */
916916
errno=0;
917917

918-
byteswritten=pg_pwrite(recvFile,buf,segbytes, (off_t)startoff);
918+
byteswritten=pwrite(recvFile,buf,segbytes, (off_t)startoff);
919919
if (byteswritten <=0)
920920
{
921921
charxlogfname[MAXFNAMELEN];

‎src/backend/storage/file/fd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2063,7 +2063,7 @@ FileRead(File file, char *buffer, int amount, off_t offset,
20632063

20642064
retry:
20652065
pgstat_report_wait_start(wait_event_info);
2066-
returnCode=pg_pread(vfdP->fd,buffer,amount,offset);
2066+
returnCode=pread(vfdP->fd,buffer,amount,offset);
20672067
pgstat_report_wait_end();
20682068

20692069
if (returnCode<0)
@@ -2145,7 +2145,7 @@ FileWrite(File file, char *buffer, int amount, off_t offset,
21452145
retry:
21462146
errno=0;
21472147
pgstat_report_wait_start(wait_event_info);
2148-
returnCode=pg_pwrite(VfdCache[file].fd,buffer,amount,offset);
2148+
returnCode=pwrite(VfdCache[file].fd,buffer,amount,offset);
21492149
pgstat_report_wait_end();
21502150

21512151
/* if write didn't set errno, assume problem is no disk space */

‎src/backend/utils/init/miscinit.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1429,7 +1429,7 @@ AddToDataDirLockFile(int target_line, const char *str)
14291429
len=strlen(destbuffer);
14301430
errno=0;
14311431
pgstat_report_wait_start(WAIT_EVENT_LOCK_FILE_ADDTODATADIR_WRITE);
1432-
if (pg_pwrite(fd,destbuffer,len,0)!=len)
1432+
if (pwrite(fd,destbuffer,len,0)!=len)
14331433
{
14341434
pgstat_report_wait_end();
14351435
/* if write didn't set errno, assume problem is no disk space */

‎src/bin/pg_test_fsync/pg_test_fsync.c

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,10 @@ test_sync(int writes_per_op)
312312
for (ops=0;alarm_triggered== false;ops++)
313313
{
314314
for (writes=0;writes<writes_per_op;writes++)
315-
if (pg_pwrite(tmpfile,
316-
buf,
317-
XLOG_BLCKSZ,
318-
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
315+
if (pwrite(tmpfile,
316+
buf,
317+
XLOG_BLCKSZ,
318+
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
319319
die("write failed");
320320
}
321321
STOP_TIMER;
@@ -338,10 +338,10 @@ test_sync(int writes_per_op)
338338
for (ops=0;alarm_triggered== false;ops++)
339339
{
340340
for (writes=0;writes<writes_per_op;writes++)
341-
if (pg_pwrite(tmpfile,
342-
buf,
343-
XLOG_BLCKSZ,
344-
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
341+
if (pwrite(tmpfile,
342+
buf,
343+
XLOG_BLCKSZ,
344+
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
345345
die("write failed");
346346
fdatasync(tmpfile);
347347
}
@@ -363,10 +363,10 @@ test_sync(int writes_per_op)
363363
for (ops=0;alarm_triggered== false;ops++)
364364
{
365365
for (writes=0;writes<writes_per_op;writes++)
366-
if (pg_pwrite(tmpfile,
367-
buf,
368-
XLOG_BLCKSZ,
369-
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
366+
if (pwrite(tmpfile,
367+
buf,
368+
XLOG_BLCKSZ,
369+
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
370370
die("write failed");
371371
if (fsync(tmpfile)!=0)
372372
die("fsync failed");
@@ -387,10 +387,10 @@ test_sync(int writes_per_op)
387387
for (ops=0;alarm_triggered== false;ops++)
388388
{
389389
for (writes=0;writes<writes_per_op;writes++)
390-
if (pg_pwrite(tmpfile,
391-
buf,
392-
XLOG_BLCKSZ,
393-
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
390+
if (pwrite(tmpfile,
391+
buf,
392+
XLOG_BLCKSZ,
393+
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
394394
die("write failed");
395395
if (pg_fsync_writethrough(tmpfile)!=0)
396396
die("fsync failed");
@@ -419,10 +419,10 @@ test_sync(int writes_per_op)
419419
for (ops=0;alarm_triggered== false;ops++)
420420
{
421421
for (writes=0;writes<writes_per_op;writes++)
422-
if (pg_pwrite(tmpfile,
423-
buf,
424-
XLOG_BLCKSZ,
425-
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
422+
if (pwrite(tmpfile,
423+
buf,
424+
XLOG_BLCKSZ,
425+
writes*XLOG_BLCKSZ)!=XLOG_BLCKSZ)
426426

427427
/*
428428
* This can generate write failures if the filesystem has
@@ -484,10 +484,10 @@ test_open_sync(const char *msg, int writes_size)
484484
for (ops=0;alarm_triggered== false;ops++)
485485
{
486486
for (writes=0;writes<16 /writes_size;writes++)
487-
if (pg_pwrite(tmpfile,
488-
buf,
489-
writes_size*1024,
490-
writes*writes_size*1024)!=
487+
if (pwrite(tmpfile,
488+
buf,
489+
writes_size*1024,
490+
writes*writes_size*1024)!=
491491
writes_size*1024)
492492
die("write failed");
493493
}
@@ -586,7 +586,7 @@ test_non_sync(void)
586586
START_TIMER;
587587
for (ops=0;alarm_triggered== false;ops++)
588588
{
589-
if (pg_pwrite(tmpfile,buf,XLOG_BLCKSZ,0)!=XLOG_BLCKSZ)
589+
if (pwrite(tmpfile,buf,XLOG_BLCKSZ,0)!=XLOG_BLCKSZ)
590590
die("write failed");
591591
}
592592
STOP_TIMER;

‎src/include/access/xlogreader.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,11 +375,11 @@ extern bool XLogReaderValidatePageHeader(XLogReaderState *state,
375375

376376
/*
377377
* Error information from WALRead that both backend and frontend caller can
378-
* process. Currently only errors frompg_pread can be reported.
378+
* process. Currently only errors frompread can be reported.
379379
*/
380380
typedefstructWALReadError
381381
{
382-
intwre_errno;/* errno set by the lastpg_pread() */
382+
intwre_errno;/* errno set by the lastpread() */
383383
intwre_off;/* Offset we tried to read from. */
384384
intwre_req;/* Bytes requested to be read. */
385385
intwre_read;/* Bytes read by the last read(). */

‎src/include/pg_config.h.in

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -388,9 +388,6 @@
388388
/* Define to 1 if you have the `ppoll' function. */
389389
#undef HAVE_PPOLL
390390

391-
/* Define to 1 if you have the `pread' function. */
392-
#undef HAVE_PREAD
393-
394391
/* Define to 1 if the PS_STRINGS thing exists. */
395392
#undef HAVE_PS_STRINGS
396393

@@ -406,9 +403,6 @@
406403
/* Have PTHREAD_PRIO_INHERIT. */
407404
#undef HAVE_PTHREAD_PRIO_INHERIT
408405

409-
/* Define to 1 if you have the `pwrite' function. */
410-
#undef HAVE_PWRITE
411-
412406
/* Define to 1 if you have the <readline.h> header file. */
413407
#undef HAVE_READLINE_H
414408

‎src/include/port.h

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -417,25 +417,6 @@ extern char *mkdtemp(char *path);
417417
externintinet_aton(constchar*cp,structin_addr*addr);
418418
#endif
419419

420-
/*
421-
* Windows and older Unix don't have pread(2) and pwrite(2). We have
422-
* replacement functions, but they have slightly different semantics so we'll
423-
* use a name with a pg_ prefix to avoid confusion.
424-
*/
425-
#ifdefHAVE_PREAD
426-
#definepg_pread pread
427-
#else
428-
externssize_tpg_pread(intfd,void*buf,size_tnbyte,off_toffset);
429-
#endif
430-
431-
#ifdefHAVE_PWRITE
432-
#definepg_pwrite pwrite
433-
#else
434-
externssize_tpg_pwrite(intfd,constvoid*buf,size_tnbyte,off_toffset);
435-
#endif
436-
437-
/* For pg_pwritev() and pg_preadv(), see port/pg_iovec.h. */
438-
439420
#if !HAVE_DECL_STRLCAT
440421
externsize_tstrlcat(char*dst,constchar*src,size_tsiz);
441422
#endif

‎src/include/port/win32_port.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,4 +562,10 @@ typedef unsigned short mode_t;
562562
#defineHAVE_BUGGY_STRTOF 1
563563
#endif
564564

565+
/* in port/win32pread.c */
566+
externssize_tpread(intfd,void*buf,size_tnbyte,off_toffset);
567+
568+
/* in port/win32pwrite.c */
569+
externssize_tpwrite(intfd,constvoid*buf,size_tnbyte,off_toffset);
570+
565571
#endif/* PG_WIN32_PORT_H */

‎src/port/preadv.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pg_preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset)
3030
{
3131
#ifdefHAVE_READV
3232
if (iovcnt==1)
33-
returnpg_pread(fd,iov[0].iov_base,iov[0].iov_len,offset);
33+
returnpread(fd,iov[0].iov_base,iov[0].iov_len,offset);
3434
if (lseek(fd,offset,SEEK_SET)<0)
3535
return-1;
3636
returnreadv(fd,iov,iovcnt);
@@ -40,7 +40,7 @@ pg_preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset)
4040

4141
for (inti=0;i<iovcnt;++i)
4242
{
43-
part=pg_pread(fd,iov[i].iov_base,iov[i].iov_len,offset);
43+
part=pread(fd,iov[i].iov_base,iov[i].iov_len,offset);
4444
if (part<0)
4545
{
4646
if (i==0)

‎src/port/pwritev.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pg_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset)
3030
{
3131
#ifdefHAVE_WRITEV
3232
if (iovcnt==1)
33-
returnpg_pwrite(fd,iov[0].iov_base,iov[0].iov_len,offset);
33+
returnpwrite(fd,iov[0].iov_base,iov[0].iov_len,offset);
3434
if (lseek(fd,offset,SEEK_SET)<0)
3535
return-1;
3636
returnwritev(fd,iov,iovcnt);
@@ -40,7 +40,7 @@ pg_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset)
4040

4141
for (inti=0;i<iovcnt;++i)
4242
{
43-
part=pg_pwrite(fd,iov[i].iov_base,iov[i].iov_len,offset);
43+
part=pwrite(fd,iov[i].iov_base,iov[i].iov_len,offset);
4444
if (part<0)
4545
{
4646
if (i==0)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp