Commit ac44367e authored by Robert Haas's avatar Robert Haas

pg_waldump: Add a --quiet option.

The primary motivation for this change is that it will be used by the
upcoming patch to add backup manifests, but it also seems to have some
potential more general use.

Andres Freund and Robert Haas

Discussion: http://postgr.es/m/20200330020814.nspra4mvby42yoa4@alap3.anarazel.de
parent 7cb0a423
......@@ -125,6 +125,18 @@ PostgreSQL documentation
</listitem>
</varlistentry>
<varlistentry>
<term><option>-q</option></term>
<term><option>--quiet</option></term>
<listitem>
<para>
Do not print any output, except for errors. This option can be useful
when you want to know whether a range of WAL records can be
successfully parsed but don't care about the record contents.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-r <replaceable>rmgr</replaceable></option></term>
<term><option>--rmgr=<replaceable>rmgr</replaceable></option></term>
......
......@@ -40,6 +40,7 @@ typedef struct XLogDumpPrivate
typedef struct XLogDumpConfig
{
/* display options */
bool quiet;
bool bkp_details;
int stop_after_records;
int already_displayed_records;
......@@ -720,6 +721,7 @@ usage(void)
printf(_(" -p, --path=PATH directory in which to find log segment files or a\n"
" directory with a ./pg_wal that contains such files\n"
" (default: current directory, ./pg_wal, $PGDATA/pg_wal)\n"));
printf(_(" -q, --quiet do not print any output, except for errors\n"));
printf(_(" -r, --rmgr=RMGR only show records generated by resource manager RMGR;\n"
" use --rmgr=list to list valid resource manager names\n"));
printf(_(" -s, --start=RECPTR start reading at WAL location RECPTR\n"));
......@@ -755,6 +757,7 @@ main(int argc, char **argv)
{"help", no_argument, NULL, '?'},
{"limit", required_argument, NULL, 'n'},
{"path", required_argument, NULL, 'p'},
{"quiet", no_argument, NULL, 'q'},
{"rmgr", required_argument, NULL, 'r'},
{"start", required_argument, NULL, 's'},
{"timeline", required_argument, NULL, 't'},
......@@ -794,6 +797,7 @@ main(int argc, char **argv)
private.endptr = InvalidXLogRecPtr;
private.endptr_reached = false;
config.quiet = false;
config.bkp_details = false;
config.stop_after_records = -1;
config.already_displayed_records = 0;
......@@ -810,7 +814,7 @@ main(int argc, char **argv)
goto bad_argument;
}
while ((option = getopt_long(argc, argv, "be:fn:p:r:s:t:x:z",
while ((option = getopt_long(argc, argv, "be:fn:p:qr:s:t:x:z",
long_options, &optindex)) != -1)
{
switch (option)
......@@ -840,6 +844,9 @@ main(int argc, char **argv)
case 'p':
waldir = pg_strdup(optarg);
break;
case 'q':
config.quiet = true;
break;
case 'r':
{
int i;
......@@ -1075,11 +1082,14 @@ main(int argc, char **argv)
config.filter_by_xid != record->xl_xid)
continue;
/* process the record */
if (config.stats == true)
XLogDumpCountRecord(&config, &stats, xlogreader_state);
else
XLogDumpDisplayRecord(&config, xlogreader_state);
/* perform any per-record work */
if (!config.quiet)
{
if (config.stats == true)
XLogDumpCountRecord(&config, &stats, xlogreader_state);
else
XLogDumpDisplayRecord(&config, xlogreader_state);
}
/* check whether we printed enough */
config.already_displayed_records++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment