]> granicus.if.org Git - postgresql/commitdiff
FATAL errors should cause exit with nonzero status if we are not running
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 10 Mar 2001 04:21:51 +0000 (04:21 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 10 Mar 2001 04:21:51 +0000 (04:21 +0000)
under the postmaster --- specifically, if we are a standalone backend
running under the initdb script, this is critical!

src/backend/utils/error/elog.c

index c19ad44d63b20d3d2623b2344144060a3fabe3ea..a8b6215930e2aa0bca11d9384743760d16a0641a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.81 2001/02/21 06:05:23 ishii Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.82 2001/03/10 04:21:51 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -451,7 +451,10 @@ elog(int lev, const char *fmt, ...)
                 * after proc_exit has begun to run.  (It's proc_exit's
                 * responsibility to see that this doesn't turn into infinite
                 * recursion!)  But in the latter case, we exit with nonzero exit
-                * code to indicate that something's pretty wrong.
+                * code to indicate that something's pretty wrong.  We also want
+                * to exit with nonzero exit code if not running under the postmaster
+                * (for example, if we are being run from the initdb script, we'd
+                * better return an error status).
                 */
                if (lev == FATAL || !Warn_restart_ready || proc_exit_inprogress)
                {
@@ -463,7 +466,7 @@ elog(int lev, const char *fmt, ...)
                         */
                        fflush(stdout);
                        fflush(stderr);
-                       proc_exit((int) proc_exit_inprogress);
+                       proc_exit((int) (proc_exit_inprogress || !IsUnderPostmaster));
                }
 
                /*