aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2016-12-21 20:27:37 +0900
committerFujii Masao <fujii@postgresql.org>2016-12-21 20:27:37 +0900
commitecbdc4c555f43b1ac284c734752b00c2ea6f277b (patch)
tree55f85dc5084489c96fdc489b0bcf5cbfe3a6e572 /src
parentc080b223a7a3991524a5287416a0ad756c15a098 (diff)
downloadpostgresql-ecbdc4c555f43b1ac284c734752b00c2ea6f277b.tar.gz
postgresql-ecbdc4c555f43b1ac284c734752b00c2ea6f277b.zip
Forbid invalid combination of options in pg_basebackup.
Commit 56c7d8d4552180fd66fe48423bb2a9bb767c2d87 allowed pg_basebackup to stream WAL in tar mode. But there is the restriction that WAL streaming in tar mode works only when the value - (dash) is not specified as output directory. This means that the combination of three options "-D -", "-F t" and "-X stream" is invalid. However, previously, even when those options were specified at the same time, pg_basebackup background process unexpectedly started streaming WAL. And then it exited with an error. This commit changes pg_basebackup so that it errors out on such invalid combination of options at the beginning. Reviewed by Magnus Hagander, and patch by me.
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_basebackup/pg_basebackup.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c
index f7ba9a95cf7..79b899a343b 100644
--- a/src/bin/pg_basebackup/pg_basebackup.c
+++ b/src/bin/pg_basebackup/pg_basebackup.c
@@ -2268,6 +2268,16 @@ main(int argc, char **argv)
exit(1);
}
+ if (format == 't' && streamwal && strcmp(basedir, "-") == 0)
+ {
+ fprintf(stderr,
+ _("%s: cannot stream transaction logs in tar mode to stdout\n"),
+ progname);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
+ progname);
+ exit(1);
+ }
+
if (replication_slot && !streamwal)
{
fprintf(stderr,