agora inbox for [email protected]
help / color / mirror / Atom feedFrom: Alvaro Herrera <[email protected]>
Subject: [PATCH] Change pg_restore -f- to dump to stdout instead of to ./-
Date: Mon, 4 Nov 2019 15:50:57 -0300
Starting with PostgreSQL 12, pg_restore refuses to run when neither -d
nor -f are specified (c.f. commit 413ccaa74d9a), and it also makes "-f -"
mean the old implicit behavior of dumping to stdout. However, older
branches write to a file called ./- when invoked like that, making it
impossible to write pg_restore scripts that work across versions. This
is a partial backpatch of the aforementioned commit to all older
supported branches, providing an upgrade path.
Discussion: https://postgr.es/m/[email protected]
---
doc/src/sgml/ref/pg_restore.sgml | 4 ++--
src/bin/pg_dump/pg_backup_archiver.c | 7 ++++++-
src/bin/pg_dump/pg_restore.c | 2 +-
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml
index 725acb192c..18c9257ae9 100644
--- a/doc/src/sgml/ref/pg_restore.sgml
+++ b/doc/src/sgml/ref/pg_restore.sgml
@@ -176,8 +176,8 @@
<listitem>
<para>
Specify output file for generated script, or for the listing
- when used with <option>-l</option>. Default is the standard
- output.
+ when used with <option>-l</option>. Use <literal>-</literal>
+ for <systemitem>stdout</systemitem>.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index 01b4af64f6..1ebbe852bc 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -1511,7 +1511,12 @@ SetOutput(ArchiveHandle *AH, const char *filename, int compression)
int fn;
if (filename)
- fn = -1;
+ {
+ if (strcmp(filename, "-") == 0)
+ fn = fileno(stdout);
+ else
+ fn = -1;
+ }
else if (AH->FH)
fn = fileno(AH->FH);
else if (AH->fSpec)
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index 34d93ab472..f5df4e63d7 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -454,7 +454,7 @@ usage(const char *progname)
printf(_("\nGeneral options:\n"));
printf(_(" -d, --dbname=NAME connect to database name\n"));
- printf(_(" -f, --file=FILENAME output file name\n"));
+ printf(_(" -f, --file=FILENAME output file name (- for stdout)\n"));
printf(_(" -F, --format=c|d|t backup file format (should be automatic)\n"));
printf(_(" -l, --list print summarized TOC of the archive\n"));
printf(_(" -v, --verbose verbose mode\n"));
--
2.20.1
--EVF5PPMfhYS0aIcm--
view thread (110+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCH] Change pg_restore -f- to dump to stdout instead of to ./-
In-Reply-To: <no-message-id-1883322@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox