postgres.git / summary / log / commit / refs

commit    cae2bb1986bc8fd409424562638434d588d0201f
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Thu May 26 15:51:04 2016 +0000

    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>


src/bin/pg_dump/pg_backup_archiver.c | 10 ---------- src/bin/pg_dump/pg_dump.c | 9 +++++++++ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 9390a6b837e..8ffd8f7cad1 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -3475,17 +3475,7 @@ WriteHead(ArchiveHandle *AH) (*AH->WriteBytePtr) (AH, AH->intSize); (*AH->WriteBytePtr) (AH, AH->offSize); (*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); - crtm = *localtime(&AH->createDate); WriteInt(AH, crtm.tm_sec); WriteInt(AH, crtm.tm_min); diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 2848fa995f1..a958225f1f8 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -589,12 +589,21 @@ main(int argc, char **argv) /* Custom and directory formats are compressed by default, others not */ if (compressLevel == -1) { +#ifdef HAVE_LIBZ if (archiveFormat == archCustom || archiveFormat == archDirectory) compressLevel = Z_DEFAULT_COMPRESSION; else +#endif 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) * parallel jobs because that's the maximum limit for the [parent: df8d2d8c42c5]