]> granicus.if.org Git - postgresql/commitdiff
In pg_upgrade, document why we can't issue \n\n in the command logfile
authorBruce Momjian <bruce@momjian.us>
Wed, 5 Sep 2012 04:01:13 +0000 (00:01 -0400)
committerBruce Momjian <bruce@momjian.us>
Wed, 5 Sep 2012 04:01:13 +0000 (00:01 -0400)
on Windows.  Slightly cleanup log output on Windows given this
restriction.

Backpatch to 9.2.

contrib/pg_upgrade/exec.c
contrib/pg_upgrade/pg_upgrade.h

index ac46a9b93693534b07b077350c0abfcc308a616f..99f500645ef69d55b72dd6457244319ef4ec45e3 100644 (file)
@@ -63,8 +63,11 @@ exec_prog(const char *log_file, const char *opt_log_file,
        if (written >= MAXCMDLEN)
                pg_log(PG_FATAL, "command too long\n");
 
-       if ((log = fopen_priv(log_file, "a+")) == NULL)
+       if ((log = fopen_priv(log_file, "a")) == NULL)
                pg_log(PG_FATAL, "cannot write to log file %s\n", log_file);
+#ifdef WIN32
+       fprintf(log, "\n\n");
+#endif
        pg_log(PG_VERBOSE, "%s\n", cmd);
        fprintf(log, "command: %s\n", cmd);
 
@@ -97,10 +100,13 @@ exec_prog(const char *log_file, const char *opt_log_file,
 
 #ifndef WIN32
        /* 
-        * Can't do this on Windows, postmaster will still hold the log file
-        * open if the command was "pg_ctl start".
+        *      We can't do this on Windows because it will keep the "pg_ctl start"
+        *      output filename open until the server stops, so we do the \n\n above
+        *      on that platform.  We use a unique filename for "pg_ctl start" that is
+        *      never reused while the server is running, so it works fine.  We could
+        *      log these commands to a third file, but that just adds complexity.
         */
-       if ((log = fopen_priv(log_file, "a+")) == NULL)
+       if ((log = fopen_priv(log_file, "a")) == NULL)
                pg_log(PG_FATAL, "cannot write to log file %s\n", log_file);
        fprintf(log, "\n\n");
        fclose(log);
index 195b927cf5b24acebcd091584ff76746c12d8ccf..305834375ff907d268585f3b6c2410b0cdbfd8cf 100644 (file)
@@ -63,7 +63,11 @@ extern char *output_files[];
 #define SERVER_STOP_LOG_FILE   SERVER_LOG_FILE
 #else
 #define SERVER_START_LOG_FILE  "pg_upgrade_server_start.log"
-/* pg_ctl stop doesn't keep the log file open, so reuse UTILITY_LOG_FILE */
+/*
+ *     "pg_ctl start" keeps SERVER_START_LOG_FILE and SERVER_LOG_FILE open
+ *     while the server is running, so we use UTILITY_LOG_FILE for "pg_ctl
+ *     stop".
+ */
 #define SERVER_STOP_LOG_FILE   UTILITY_LOG_FILE
 #endif