*** a/src/bin/pg_controldata/pg_controldata.c --- b/src/bin/pg_controldata/pg_controldata.c *************** *** 24,29 **** --- 24,30 ---- #include #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. */ *************** *** 207,212 **** main(int argc, char *argv[]) --- 218,225 ---- printf(_("Latest checkpoint's REDO location: %X/%X\n"), ControlFile.checkPointCopy.redo.xlogid, ControlFile.checkPointCopy.redo.xrecoff); + printf(_("Latest checkpoint's REDO WAL segment: %s\n"), + xlogfilename); printf(_("Latest checkpoint's TimeLineID: %u\n"), ControlFile.checkPointCopy.ThisTimeLineID); printf(_("Latest checkpoint's full_page_writes: %s\n"),