Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3ef40dc

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 8103444 commit 3ef40dc

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
@@ -2328,12 +2328,12 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
23282328
AH->OF = stdout;
23292329

23302330
/*
2331-
* On Windows, we need to use binary mode to read/write non-text archive
2332-
* formats. Force stdin/stdout into binary mode if that is what we are
2333-
* using.
2331+
* On Windows, we need to use binary mode to read/write non-text files,
2332+
* which include all archive formats as well as compressed plain text.
2333+
* Force stdin/stdout into binary mode if that is what we are using.
23342334
*/
23352335
#ifdef WIN32
2336-
if (fmt != archNull &&
2336+
if ((fmt != archNull || compression != 0) &&
23372337
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
23382338
{
23392339
if (mode == archModeWrite)

0 commit comments

Comments
 (0)