Skip to content

Commit 022cd22

Browse files
committed
In pg_upgrade, document why we can't issue \n\n in the command logfile
on Windows. Slightly cleanup log output on Windows given this restriction. Backpatch to 9.2.
1 parent c4c2274 commit 022cd22

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

contrib/pg_upgrade/exec.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,11 @@ exec_prog(const char *log_file, const char *opt_log_file,
6363
if (written >= MAXCMDLEN)
6464
pg_log(PG_FATAL, "command too long\n");
6565

66-
if ((log = fopen_priv(log_file, "a+")) == NULL)
66+
if ((log = fopen_priv(log_file, "a")) == NULL)
6767
pg_log(PG_FATAL, "cannot write to log file %s\n", log_file);
68+
#ifdef WIN32
69+
fprintf(log, "\n\n");
70+
#endif
6871
pg_log(PG_VERBOSE, "%s\n", cmd);
6972
fprintf(log, "command: %s\n", cmd);
7073

@@ -97,10 +100,13 @@ exec_prog(const char *log_file, const char *opt_log_file,
97100

98101
#ifndef WIN32
99102
/*
100-
* Can't do this on Windows, postmaster will still hold the log file
101-
* open if the command was "pg_ctl start".
103+
* We can't do this on Windows because it will keep the "pg_ctl start"
104+
* output filename open until the server stops, so we do the \n\n above
105+
* on that platform. We use a unique filename for "pg_ctl start" that is
106+
* never reused while the server is running, so it works fine. We could
107+
* log these commands to a third file, but that just adds complexity.
102108
*/
103-
if ((log = fopen_priv(log_file, "a+")) == NULL)
109+
if ((log = fopen_priv(log_file, "a")) == NULL)
104110
pg_log(PG_FATAL, "cannot write to log file %s\n", log_file);
105111
fprintf(log, "\n\n");
106112
fclose(log);

contrib/pg_upgrade/pg_upgrade.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ extern char *output_files[];
6363
#define SERVER_STOP_LOG_FILE SERVER_LOG_FILE
6464
#else
6565
#define SERVER_START_LOG_FILE "pg_upgrade_server_start.log"
66-
/* pg_ctl stop doesn't keep the log file open, so reuse UTILITY_LOG_FILE */
66+
/*
67+
* "pg_ctl start" keeps SERVER_START_LOG_FILE and SERVER_LOG_FILE open
68+
* while the server is running, so we use UTILITY_LOG_FILE for "pg_ctl
69+
* stop".
70+
*/
6771
#define SERVER_STOP_LOG_FILE UTILITY_LOG_FILE
6872
#endif
6973

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy