Allow pg_basebackup compressed tar output to stdout
This commit is contained in:
parent
1b6dabc452
commit
d68714b29c
@ -174,8 +174,7 @@ PostgreSQL documentation
|
||||
<listitem>
|
||||
<para>
|
||||
Enables gzip compression of tar file output. Compression is only
|
||||
available when generating tar files, and is not available when sending
|
||||
output to standard output.
|
||||
available when using the tar format.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
@ -261,7 +261,22 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
|
||||
* Base tablespaces
|
||||
*/
|
||||
if (strcmp(basedir, "-") == 0)
|
||||
tarfile = stdout;
|
||||
{
|
||||
#ifdef HAVE_LIBZ
|
||||
if (compresslevel > 0)
|
||||
{
|
||||
ztarfile = gzdopen(dup(fileno(stdout)), "wb");
|
||||
if (gzsetparams(ztarfile, compresslevel, Z_DEFAULT_STRATEGY) != Z_OK)
|
||||
{
|
||||
fprintf(stderr, _("%s: could not set compression level %i: %s\n"),
|
||||
progname, compresslevel, get_gz_error(ztarfile));
|
||||
disconnect_and_exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
tarfile = stdout;
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef HAVE_LIBZ
|
||||
@ -384,7 +399,14 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
|
||||
}
|
||||
}
|
||||
|
||||
if (strcmp(basedir, "-") != 0)
|
||||
if (strcmp(basedir, "-") == 0)
|
||||
{
|
||||
#ifdef HAVE_LIBZ
|
||||
if (ztarfile)
|
||||
gzclose(ztarfile);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef HAVE_LIBZ
|
||||
if (ztarfile != NULL)
|
||||
@ -1076,14 +1098,6 @@ main(int argc, char **argv)
|
||||
progname);
|
||||
exit(1);
|
||||
}
|
||||
#else
|
||||
if (compresslevel > 0 && strcmp(basedir, "-") == 0)
|
||||
{
|
||||
fprintf(stderr,
|
||||
_("%s: compression is not supported on standard output\n"),
|
||||
progname);
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user