aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2012-07-14 14:17:43 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2012-07-14 14:22:57 +0300
commit6c349a565abf1e5ddf68971c62afff14947bcfa2 (patch)
tree9bcdbca5a4211fa9d3e0ad32c95964e9dff30de6
parent8e708e5e36d8a0295780a9aa1d99f01f5acb6182 (diff)
downloadpostgresql-6c349a565abf1e5ddf68971c62afff14947bcfa2.tar.gz
postgresql-6c349a565abf1e5ddf68971c62afff14947bcfa2.zip
Print the name of the WAL file containing latest REDO ptr in pg_controldata.
This makes it easier to determine how far back you need to keep archived WAL files, to restore from a backup. Fujii Masao
-rw-r--r--src/bin/pg_controldata/pg_controldata.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c
index 298f836504f..129c4d0dda3 100644
--- a/src/bin/pg_controldata/pg_controldata.c
+++ b/src/bin/pg_controldata/pg_controldata.c
@@ -24,6 +24,7 @@
#include <fcntl.h>
#include "access/xlog.h"
+#include "access/xlog_internal.h"
#include "catalog/pg_control.h"
@@ -95,6 +96,8 @@ main(int argc, char *argv[])
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,6 +174,13 @@ main(int argc, char *argv[])
localtime(&time_tmp));
/*
+ * Calculate name of the WAL file containing the latest checkpoint's REDO
+ * start point.
+ */
+ 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,6 +211,8 @@ main(int argc, char *argv[])
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"),