postgres.git / summary / log / commit / refs

commit    c10cbf77aef264495e1b78fe39181ea573bd6656
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Mon Jun 19 15:02:45 2017 +0000

    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 fcbcca22135..71974ed0f94 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -2135,12 +2135,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: ac93a78b0e51]