mirror of https://github.com/postgres/postgres
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
This commit is contained in:
parent
ac93a78b0e
commit
c10cbf77ae
|
@ -2135,12 +2135,12 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
|
||||||
AH->OF = stdout;
|
AH->OF = stdout;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* On Windows, we need to use binary mode to read/write non-text archive
|
* On Windows, we need to use binary mode to read/write non-text files,
|
||||||
* formats. Force stdin/stdout into binary mode if that is what we are
|
* which include all archive formats as well as compressed plain text.
|
||||||
* using.
|
* Force stdin/stdout into binary mode if that is what we are using.
|
||||||
*/
|
*/
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
if (fmt != archNull &&
|
if ((fmt != archNull || compression != 0) &&
|
||||||
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
|
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
|
||||||
{
|
{
|
||||||
if (mode == archModeWrite)
|
if (mode == archModeWrite)
|
||||||
|
|
Loading…
Reference in New Issue