|
24 | 24 | #include<fcntl.h> |
25 | 25 |
|
26 | 26 | #include"access/xlog.h" |
| 27 | +#include"access/xlog_internal.h" |
27 | 28 | #include"catalog/pg_control.h" |
28 | 29 |
|
29 | 30 |
|
@@ -95,6 +96,8 @@ main(int argc, char *argv[]) |
95 | 96 | charsysident_str[32]; |
96 | 97 | constchar*strftime_fmt="%c"; |
97 | 98 | constchar*progname; |
| 99 | +XLogSegNosegno; |
| 100 | +charxlogfilename[MAXFNAMELEN]; |
98 | 101 |
|
99 | 102 | set_pglocale_pgservice(argv[0],PG_TEXTDOMAIN("pg_controldata")); |
100 | 103 |
|
@@ -170,6 +173,13 @@ main(int argc, char *argv[]) |
170 | 173 | strftime(ckpttime_str,sizeof(ckpttime_str),strftime_fmt, |
171 | 174 | localtime(&time_tmp)); |
172 | 175 |
|
| 176 | +/* |
| 177 | + * Calculate name of the WAL file containing the latest checkpoint's REDO |
| 178 | + * start point. |
| 179 | + */ |
| 180 | +XLByteToSeg(ControlFile.checkPointCopy.redo,segno); |
| 181 | +XLogFileName(xlogfilename,ControlFile.checkPointCopy.ThisTimeLineID,segno); |
| 182 | + |
173 | 183 | /* |
174 | 184 | * Format system_identifier separately to keep platform-dependent format |
175 | 185 | * code out of the translatable message string. |
@@ -201,6 +211,8 @@ main(int argc, char *argv[]) |
201 | 211 | printf(_("Latest checkpoint's REDO location: %X/%X\n"), |
202 | 212 | (uint32) (ControlFile.checkPointCopy.redo >>32), |
203 | 213 | (uint32)ControlFile.checkPointCopy.redo); |
| 214 | +printf(_("Latest checkpoint's REDO WAL file: %s\n"), |
| 215 | +xlogfilename); |
204 | 216 | printf(_("Latest checkpoint's TimeLineID: %u\n"), |
205 | 217 | ControlFile.checkPointCopy.ThisTimeLineID); |
206 | 218 | printf(_("Latest checkpoint's full_page_writes: %s\n"), |
|