From abe765e81382bc0e56619cc2058d48db5a21459b Mon Sep 17 00:00:00 2001 From: Bharath Rupireddy Date: Tue, 4 Oct 2022 06:35:01 +0000 Subject: [PATCH v2] Use MAXFNAMELEN for WAL file names instead of MAXPGPATH MAXFNAMELEN (64 bytes) is typically meant to be used for all WAL file names across the code base. Because the WAL file names in postgres can't be bigger than 64 bytes, in fact, not more than XLOG_FNAME_LEN (24 bytes) but there are suffixes, timeline history files etc. To accommodate all of that MAXFNAMELEN is introduced. There are some places in the code base that still use MAXPGPATH (1024 bytes) for WAL file names which is an unnecessary wastage of stack memory. Replace MAXPGPATH with MAXFNAMELEN for WAL file names for consistency across the code base and a bit of space savings. --- src/backend/access/transam/xlogarchive.c | 4 ++-- src/bin/pg_basebackup/receivelog.c | 2 +- src/bin/pg_waldump/pg_waldump.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/access/transam/xlogarchive.c b/src/backend/access/transam/xlogarchive.c index e2b7176f2f..2d499bb665 100644 --- a/src/backend/access/transam/xlogarchive.c +++ b/src/backend/access/transam/xlogarchive.c @@ -57,7 +57,7 @@ RestoreArchivedFile(char *path, const char *xlogfname, { char xlogpath[MAXPGPATH]; char *xlogRestoreCmd; - char lastRestartPointFname[MAXPGPATH]; + char lastRestartPointFname[MAXFNAMELEN]; int rc; struct stat stat_buf; XLogSegNo restartSegNo; @@ -292,7 +292,7 @@ ExecuteRecoveryCommand(const char *command, const char *commandName, bool failOnSignal, uint32 wait_event_info) { char xlogRecoveryCmd[MAXPGPATH]; - char lastRestartPointFname[MAXPGPATH]; + char lastRestartPointFname[MAXFNAMELEN]; char *dp; char *endp; const char *sp; diff --git a/src/bin/pg_basebackup/receivelog.c b/src/bin/pg_basebackup/receivelog.c index 9c71323d70..3e1561e4dd 100644 --- a/src/bin/pg_basebackup/receivelog.c +++ b/src/bin/pg_basebackup/receivelog.c @@ -93,7 +93,7 @@ open_walfile(StreamCtl *stream, XLogRecPtr startpoint) char *fn; ssize_t size; XLogSegNo segno; - char walfile_name[MAXPGPATH]; + char walfile_name[MAXFNAMELEN]; XLByteToSeg(startpoint, segno, WalSegSz); XLogFileName(walfile_name, stream->timeline, segno, WalSegSz); diff --git a/src/bin/pg_waldump/pg_waldump.c b/src/bin/pg_waldump/pg_waldump.c index 9993378ca5..079b3c155d 100644 --- a/src/bin/pg_waldump/pg_waldump.c +++ b/src/bin/pg_waldump/pg_waldump.c @@ -296,7 +296,7 @@ WALDumpOpenSegment(XLogReaderState *state, XLogSegNo nextSegNo, TimeLineID *tli_p) { TimeLineID tli = *tli_p; - char fname[MAXPGPATH]; + char fname[MAXFNAMELEN]; int tries; XLogFileName(fname, tli, nextSegNo, state->segcxt.ws_segsize); @@ -367,7 +367,7 @@ WALDumpReadPage(XLogReaderState *state, XLogRecPtr targetPagePtr, int reqLen, &errinfo)) { WALOpenSegment *seg = &errinfo.wre_seg; - char fname[MAXPGPATH]; + char fname[MAXFNAMELEN]; XLogFileName(fname, seg->ws_tli, seg->ws_segno, state->segcxt.ws_segsize); -- 2.34.1