Updated patch with documentation of the new option.
-- Martín Marqués http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
>From ede201ed96d41d799dc3c83dfab1cdcc03e5ced4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Marqu=C3=A9s?= <martin.marq...@2ndquadrant.com> Date: Sun, 1 Oct 2017 16:39:41 -0300 Subject: [PATCH] Adding an option to pg_basebackup to output messages as if it were running in batch-mode, as opossed to running in a tty. This is usefull when using --progress and redirecting the output to a file for later inspection with tail. New option --batch-mode with the short option -b added. --- doc/src/sgml/ref/pg_basebackup.sgml | 16 ++++++++++++++++ src/bin/pg_basebackup/pg_basebackup.c | 19 +++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/ref/pg_basebackup.sgml b/doc/src/sgml/ref/pg_basebackup.sgml index f790c56..db5160f 100644 --- a/doc/src/sgml/ref/pg_basebackup.sgml +++ b/doc/src/sgml/ref/pg_basebackup.sgml @@ -461,6 +461,22 @@ PostgreSQL documentation </varlistentry> <varlistentry> + <term><option>-b</option></term> + <term><option>--batch-mode</option></term> + <listitem> + <para> + Runs <command>pg_basebackup</command> in batch mode. This is useful if + the output is to be pipped so the other end of the pipe reads each line. + </para> + <para> + Using this option with <option>--progress</option> will result in + printing each progress output with a newline at the end, instead of a + carrige return. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-S <replaceable>slotname</replaceable></option></term> <term><option>--slot=<replaceable class="parameter">slotname</replaceable></option></term> <listitem> diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index dac7299..cf97ea3 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -82,6 +82,7 @@ static char format = 'p'; /* p(lain)/t(ar) */ static char *label = "pg_basebackup base backup"; static bool noclean = false; static bool showprogress = false; +static bool batchmode = false; static int verbose = 0; static int compresslevel = 0; static IncludeWal includewal = STREAM_WAL; @@ -355,6 +356,7 @@ usage(void) printf(_(" -P, --progress show progress information\n")); printf(_(" -S, --slot=SLOTNAME replication slot to use\n")); printf(_(" --no-slot prevent creation of temporary replication slot\n")); + printf(_(" -b, --batch-mode run in batch mode\n")); printf(_(" -v, --verbose output verbose messages\n")); printf(_(" -V, --version output version information, then exit\n")); printf(_(" -?, --help show this help, then exit\n")); @@ -806,7 +808,10 @@ progress_report(int tablespacenum, const char *filename, bool force) totaldone_str, totalsize_str, percent, tablespacenum, tablespacecount); - fprintf(stderr, "\r"); + if (batchmode) + fprintf(stderr, "\n"); + else + fprintf(stderr, "\r"); } static int32 @@ -1786,7 +1791,13 @@ BaseBackup(void) progname); if (showprogress && !verbose) + { fprintf(stderr, "waiting for checkpoint\r"); + if (batchmode) + fprintf(stderr, "\n"); + else + fprintf(stderr, "\r"); + } basebkp = psprintf("BASE_BACKUP LABEL '%s' %s %s %s %s %s %s", @@ -2118,6 +2129,7 @@ main(int argc, char **argv) {"status-interval", required_argument, NULL, 's'}, {"verbose", no_argument, NULL, 'v'}, {"progress", no_argument, NULL, 'P'}, + {"batch-mode", no_argument, NULL, 'b'}, {"waldir", required_argument, NULL, 1}, {"no-slot", no_argument, NULL, 2}, {NULL, 0, NULL, 0} @@ -2146,7 +2158,7 @@ main(int argc, char **argv) atexit(cleanup_directories_atexit); - while ((c = getopt_long(argc, argv, "CD:F:r:RS:T:X:l:nNzZ:d:c:h:p:U:s:wWvP", + while ((c = getopt_long(argc, argv, "CD:F:r:RS:T:X:l:nNzZ:d:c:h:p:U:s:wWvPb", long_options, &option_index)) != -1) { switch (c) @@ -2288,6 +2300,9 @@ main(int argc, char **argv) case 'P': showprogress = true; break; + case 'b': + batchmode = true; + break; default: /* -- 2.9.5
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers