Commit cae2bb19 authored by Tom Lane's avatar Tom Lane

Make pg_dump behave more sanely when built without HAVE_LIBZ.

For some reason the code to emit a warning and switch to uncompressed
output was placed down in the guts of pg_backup_archiver.c.  This is
definitely too late in the case of parallel operation (and I rather
wonder if it wasn't too late for other purposes as well).  Put it in
pg_dump.c's option-processing logic, which seems a much saner place.

Also, the default behavior with custom or directory output format was
to emit the warning telling you the output would be uncompressed.  This
seems unhelpful, so silence that case.

Back-patch to 9.3 where parallel dump was introduced.

Kyotaro Horiguchi, adjusted a bit by me

Report: <20160526.185551.242041780.horiguchi.kyotaro@lab.ntt.co.jp>
parent df8d2d8c
...@@ -3475,17 +3475,7 @@ WriteHead(ArchiveHandle *AH) ...@@ -3475,17 +3475,7 @@ WriteHead(ArchiveHandle *AH)
(*AH->WriteBytePtr) (AH, AH->intSize); (*AH->WriteBytePtr) (AH, AH->intSize);
(*AH->WriteBytePtr) (AH, AH->offSize); (*AH->WriteBytePtr) (AH, AH->offSize);
(*AH->WriteBytePtr) (AH, AH->format); (*AH->WriteBytePtr) (AH, AH->format);
#ifndef HAVE_LIBZ
if (AH->compression != 0)
write_msg(modulename, "WARNING: requested compression not available in this "
"installation -- archive will be uncompressed\n");
AH->compression = 0;
#endif
WriteInt(AH, AH->compression); WriteInt(AH, AH->compression);
crtm = *localtime(&AH->createDate); crtm = *localtime(&AH->createDate);
WriteInt(AH, crtm.tm_sec); WriteInt(AH, crtm.tm_sec);
WriteInt(AH, crtm.tm_min); WriteInt(AH, crtm.tm_min);
......
...@@ -589,12 +589,21 @@ main(int argc, char **argv) ...@@ -589,12 +589,21 @@ main(int argc, char **argv)
/* Custom and directory formats are compressed by default, others not */ /* Custom and directory formats are compressed by default, others not */
if (compressLevel == -1) if (compressLevel == -1)
{ {
#ifdef HAVE_LIBZ
if (archiveFormat == archCustom || archiveFormat == archDirectory) if (archiveFormat == archCustom || archiveFormat == archDirectory)
compressLevel = Z_DEFAULT_COMPRESSION; compressLevel = Z_DEFAULT_COMPRESSION;
else else
#endif
compressLevel = 0; compressLevel = 0;
} }
#ifndef HAVE_LIBZ
if (compressLevel != 0)
write_msg(NULL, "WARNING: requested compression not available in this "
"installation -- archive will be uncompressed\n");
compressLevel = 0;
#endif
/* /*
* On Windows we can only have at most MAXIMUM_WAIT_OBJECTS (= 64 usually) * On Windows we can only have at most MAXIMUM_WAIT_OBJECTS (= 64 usually)
* parallel jobs because that's the maximum limit for the * parallel jobs because that's the maximum limit for the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment