summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2020-04-02 20:25:04 -0400
committerRobert Haas <rhaas@postgresql.org>2020-04-02 20:25:04 -0400
commitac44367efbef198c57a18b96dbc6a39191720994 (patch)
tree9aeca1fa70395e45856d730cb2b60546cb15479b
parent7cb0a423f914af6936d13a8c7f2e35c0a4e4bd14 (diff)
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
-rw-r--r--doc/src/sgml/ref/pg_waldump.sgml12
-rw-r--r--src/bin/pg_waldump/pg_waldump.c22
2 files changed, 28 insertions, 6 deletions
diff --git a/doc/src/sgml/ref/pg_waldump.sgml b/doc/src/sgml/ref/pg_waldump.sgml
index 667093f0601..5fcdfe210ac 100644
--- a/doc/src/sgml/ref/pg_waldump.sgml
+++ b/doc/src/sgml/ref/pg_waldump.sgml
@@ -126,6 +126,18 @@ PostgreSQL documentation
</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>
<listitem>
diff --git a/src/bin/pg_waldump/pg_waldump.c b/src/bin/pg_waldump/pg_waldump.c
index 279acfa0440..7c80b5288f1 100644
--- a/src/bin/pg_waldump/pg_waldump.c
+++ b/src/bin/pg_waldump/pg_waldump.c
@@ -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++;