pg_controldata_walfilename_v1.patch

text/x-diff

Filename: pg_controldata_walfilename_v1.patch
Type: text/x-diff
Part: 0
Message: 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 v1
File+
src/bin/pg_controldata/pg_controldata.c 14 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"
  
  
***************
*** 101,106 **** main(int argc, char *argv[])
--- 102,110 ----
  	char		sysident_str[32];
  	const char *strftime_fmt = "%c";
  	const char *progname;
+ 	uint32	log;
+ 	uint32	seg;
+ 	char		xlogfilename[MAXFNAMELEN];
  
  	set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_controldata"));
  
***************
*** 177,182 **** main(int argc, char *argv[])
--- 181,193 ----
  			 localtime(&time_tmp));
  
  	/*
+ 	 * Calculate the WAL file name containing the latest checkpoint's REDO
+ 	 * record.
+ 	 */
+ 	XLByteToSeg(ControlFile.checkPointCopy.redo, log, seg);
+ 	XLogFileName(xlogfilename, ControlFile.checkPointCopy.ThisTimeLineID, log, seg);
+ 
+ 	/*
  	 * Format system_identifier separately to keep platform-dependent format
  	 * code out of the translatable message string.
  	 */
***************
*** 204,212 **** main(int argc, char *argv[])
  	printf(_("Prior checkpoint location:            %X/%X\n"),
  		   ControlFile.prevCheckPoint.xlogid,
  		   ControlFile.prevCheckPoint.xrecoff);
! 	printf(_("Latest checkpoint's REDO location:    %X/%X\n"),
  		   ControlFile.checkPointCopy.redo.xlogid,
! 		   ControlFile.checkPointCopy.redo.xrecoff);
  	printf(_("Latest checkpoint's TimeLineID:       %u\n"),
  		   ControlFile.checkPointCopy.ThisTimeLineID);
  	printf(_("Latest checkpoint's full_page_writes: %s\n"),
--- 215,224 ----
  	printf(_("Prior checkpoint location:            %X/%X\n"),
  		   ControlFile.prevCheckPoint.xlogid,
  		   ControlFile.prevCheckPoint.xrecoff);
! 	printf(_("Latest checkpoint's REDO location:    %X/%X (file %s)\n"),
  		   ControlFile.checkPointCopy.redo.xlogid,
! 		   ControlFile.checkPointCopy.redo.xrecoff,
! 		   xlogfilename);
  	printf(_("Latest checkpoint's TimeLineID:       %u\n"),
  		   ControlFile.checkPointCopy.ThisTimeLineID);
  	printf(_("Latest checkpoint's full_page_writes: %s\n"),