Skip to content

Commit d063f97

Browse files
committed
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
1 parent a27c566 commit d063f97

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/bin/pg_dump/pg_backup_archiver.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2215,12 +2215,12 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
22152215
AH->OF = stdout;
22162216

22172217
/*
2218-
* On Windows, we need to use binary mode to read/write non-text archive
2219-
* formats. Force stdin/stdout into binary mode if that is what we are
2220-
* using.
2218+
* On Windows, we need to use binary mode to read/write non-text files,
2219+
* which include all archive formats as well as compressed plain text.
2220+
* Force stdin/stdout into binary mode if that is what we are using.
22212221
*/
22222222
#ifdef WIN32
2223-
if (fmt != archNull &&
2223+
if ((fmt != archNull || compression != 0) &&
22242224
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
22252225
{
22262226
if (mode == archModeWrite)

0 commit comments

Comments
 (0)