mirror of
https://github.com/postgres/postgres.git
synced 2025-05-02 11:44:50 +03:00
Fix line end mishandling in pg_upgrade on Windows.
pg_upgrade opened the output from pg_dumpall in text mode and wrote the split files in text mode. This caused unwanted eating of intended carriage returns on input and production of spurious carriage returns on output. To avoid this, open all these files in binary mode. On non-Windows platforms, this change has no effect. Backpatch to 9.0. On 9.0 and 9.1, we also switch from redirecting pg_dumpall's output to using pg_dumpall's -f switch, for the same reason.
This commit is contained in:
parent
8e6f6b8ef2
commit
5654fd1771
@ -58,14 +58,20 @@ split_old_dump(void)
|
||||
char filename[MAXPGPATH];
|
||||
bool suppressed_username = false;
|
||||
|
||||
|
||||
/*
|
||||
* Open all files in binary mode to avoid line end translation on Windows,
|
||||
* boths for input and output.
|
||||
*/
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s", ALL_DUMP_FILE);
|
||||
if ((all_dump = fopen(filename, "r")) == NULL)
|
||||
if ((all_dump = fopen(filename, PG_BINARY_R)) == NULL)
|
||||
pg_log(PG_FATAL, "Could not open dump file \"%s\": %s\n", filename, getErrorText(errno));
|
||||
snprintf(filename, sizeof(filename), "%s", GLOBALS_DUMP_FILE);
|
||||
if ((globals_dump = fopen_priv(filename, "w")) == NULL)
|
||||
if ((globals_dump = fopen_priv(filename, PG_BINARY_W)) == NULL)
|
||||
pg_log(PG_FATAL, "Could not write to dump file \"%s\": %s\n", filename, getErrorText(errno));
|
||||
snprintf(filename, sizeof(filename), "%s", DB_DUMP_FILE);
|
||||
if ((db_dump = fopen_priv(filename, "w")) == NULL)
|
||||
if ((db_dump = fopen_priv(filename, PG_BINARY_W)) == NULL)
|
||||
pg_log(PG_FATAL, "Could not write to dump file \"%s\": %s\n", filename, getErrorText(errno));
|
||||
|
||||
current_output = globals_dump;
|
||||
|
Loading…
x
Reference in New Issue
Block a user