git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c080b22)
Forbid invalid combination of options in pg_basebackup.
2016年12月21日 11:27:37 +0000 (20:27 +0900)
2016年12月21日 11:27:37 +0000 (20:27 +0900)
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.


diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c
index f7ba9a95cf728ddebcb73921986c60488a9b6c4c..79b899a343b81539b51936e22b7368e084012d63 100644 (file)
--- 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,
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /