pg_controldata_walfilename_v4.patch

application/octet-stream

Filename: pg_controldata_walfilename_v4.patch
Type: application/octet-stream
Part: 0
Message: Re: Reporting WAL file containing checkpoint's REDO record in pg_controldata's result

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: context
Series: patch v4
File+
src/bin/pg_controldata/pg_controldata.c 12 0
*** a/src/bin/pg_controldata/pg_controldata.c
--- b/src/bin/pg_controldata/pg_controldata.c
***************
*** 24,29 ****
--- 24,30 ----
  #include <fcntl.h>
  
  #include "access/xlog.h"
+ #include "access/xlog_internal.h"
  #include "catalog/pg_control.h"
  
  
***************
*** 95,100 **** main(int argc, char *argv[])
--- 96,103 ----
  	char		sysident_str[32];
  	const char *strftime_fmt = "%c";
  	const char *progname;
+ 	XLogSegNo	segno;
+ 	char		xlogfilename[MAXFNAMELEN];
  
  	set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_controldata"));
  
***************
*** 171,176 **** main(int argc, char *argv[])
--- 174,186 ----
  			 localtime(&time_tmp));
  
  	/*
+ 	 * Calculate the WAL file name containing the latest checkpoint's REDO
+ 	 * record.
+ 	 */
+ 	XLByteToSeg(ControlFile.checkPointCopy.redo, segno);
+ 	XLogFileName(xlogfilename, ControlFile.checkPointCopy.ThisTimeLineID, segno);
+ 
+ 	/*
  	 * Format system_identifier separately to keep platform-dependent format
  	 * code out of the translatable message string.
  	 */
***************
*** 201,206 **** main(int argc, char *argv[])
--- 211,218 ----
  	printf(_("Latest checkpoint's REDO location:    %X/%X\n"),
  		   (uint32) (ControlFile.checkPointCopy.redo >> 32),
  		   (uint32) ControlFile.checkPointCopy.redo);
+ 	printf(_("Latest checkpoint's REDO WAL file:    %s\n"),
+ 		   xlogfilename);
  	printf(_("Latest checkpoint's TimeLineID:       %u\n"),
  		   ControlFile.checkPointCopy.ThisTimeLineID);
  	printf(_("Latest checkpoint's full_page_writes: %s\n"),