postgres.git / summary / log / commit / refs

commit    3ef40dcec621672fb5e4f0c1893b95811044bf6a
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Mon Jun 19 15:02:45 2017 +0000
First released in: 10.0, 9.2.22, 9.3.18, 9.4.13, 9.5.8, 9.6.4

    On Windows, make pg_dump use binary mode for compressed plain text output.
    
    The combination of -Z -Fp and output to stdout resulted in corrupted
    output data, because we left stdout in text mode, resulting in newline
    conversion being done on the compressed stream.  Switch stdout to binary
    mode for this case, at the same place where we do it for non-text output
    formats.
    
    Report and patch by Kuntal Ghosh, tested by Ashutosh Sharma and Neha
    Sharma.  Back-patch to all supported branches.
    
    Discussion: https://postgr.es/m/CAGz5QCJPvbBjXAmJuGx1B_41yVCetAJhp7rtaDf7XQGWuB1GSw@mail.gmail.com


src/bin/pg_dump/pg_backup_archiver.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index c360b92dd6a..a23b070c0e8 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -2328,12 +2328,12 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt, AH->OF = stdout; /* - * On Windows, we need to use binary mode to read/write non-text archive - * formats. Force stdin/stdout into binary mode if that is what we are - * using. + * On Windows, we need to use binary mode to read/write non-text files, + * which include all archive formats as well as compressed plain text. + * Force stdin/stdout into binary mode if that is what we are using. */ #ifdef WIN32 - if (fmt != archNull && + if ((fmt != archNull || compression != 0) && (AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0)) { if (mode == archModeWrite) [parent: 810344436db6]