*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.155 2000/05/21 02:23:30 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.155.2.1 2000/08/30 21:19:32 tgl Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface ");
- puts("$Revision: 1.155 $ $Date: 2000/05/21 02:23:30 $\n");
+ puts("$Revision: 1.155.2.1 $ $Date: 2000/08/30 21:19:32 $\n");
}
/*
* Initialize the deferred trigger manager
*/
if (DeferredTriggerInit() != 0)
- proc_exit(0);
+ goto normalexit;
SetProcessingMode(NormalProcessing);
TPRINTF(TRACE_VERBOSE, "AbortCurrentTransaction");
AbortCurrentTransaction();
- InError = false;
+
if (ExitAfterAbort)
- {
- ProcReleaseLocks(); /* Just to be sure... */
- proc_exit(0);
- }
+ goto errorexit;
+
+ InError = false;
}
Warn_restart_ready = true; /* we can now handle elog(ERROR) */
if (HandleFunctionRequest() == EOF)
{
/* lost frontend connection during F message input */
- pq_close();
- proc_exit(0);
+ goto normalexit;
}
break;
*/
case 'X':
case EOF:
- if (!IsUnderPostmaster)
- ShutdownXLOG();
- pq_close();
- proc_exit(0);
- break;
+ goto normalexit;
default:
elog(ERROR, "unknown frontend message was received");
if (IsUnderPostmaster)
NullCommand(Remote);
}
- } /* infinite for-loop */
+ } /* end of main loop */
+
+normalexit:
+ ExitAfterAbort = true; /* ensure we will exit if elog during abort */
+ AbortOutOfAnyTransaction();
+ if (!IsUnderPostmaster)
+ ShutdownXLOG();
+
+errorexit:
+ pq_close();
+ ProcReleaseLocks(); /* Just to be sure... */
+ proc_exit(0);
- proc_exit(0); /* shouldn't get here... */
- return 1;
+ return 1; /* keep compiler quiet */
}
#ifndef HAVE_GETRUSAGE