Remove fork()/exec() and only do fork(). Small cleanups.
This commit is contained in:
parent
2d4c6cab96
commit
212c905e2c
|
@ -7,7 +7,7 @@
|
|||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.41 1998/05/19 18:05:44 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.42 1998/05/29 17:00:05 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -382,7 +382,7 @@ BootstrapMain(int argc, char *argv[])
|
|||
* initialize input fd
|
||||
* ----------------
|
||||
*/
|
||||
if (IsUnderPostmaster == true && portFd < 0)
|
||||
if (IsUnderPostmaster && portFd < 0)
|
||||
{
|
||||
fputs("backend: failed, no -P option with -postmaster opt.\n", stderr);
|
||||
exitpg(1);
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.31 1998/04/27 04:05:35 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.32 1998/05/29 17:00:06 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -671,7 +671,7 @@ ExecMakeFunctionResult(Node *node,
|
|||
bool *isNull,
|
||||
bool *isDone)
|
||||
{
|
||||
Datum argv[MAXFMGRARGS];
|
||||
Datum argV[MAXFMGRARGS];
|
||||
FunctionCachePtr fcache;
|
||||
Func *funcNode = NULL;
|
||||
Oper *operNode = NULL;
|
||||
|
@ -699,7 +699,7 @@ ExecMakeFunctionResult(Node *node,
|
|||
* arguments is a list of expressions to evaluate
|
||||
* before passing to the function manager.
|
||||
* We collect the results of evaluating the expressions
|
||||
* into a datum array (argv) and pass this array to arrayFmgr()
|
||||
* into a datum array (argV) and pass this array to arrayFmgr()
|
||||
* ----------------
|
||||
*/
|
||||
if (fcache->nargs != 0)
|
||||
|
@ -718,11 +718,11 @@ ExecMakeFunctionResult(Node *node,
|
|||
*/
|
||||
if ((fcache->hasSetArg) && fcache->setArg != NULL)
|
||||
{
|
||||
argv[0] = (Datum) fcache->setArg;
|
||||
argV[0] = (Datum) fcache->setArg;
|
||||
argDone = false;
|
||||
}
|
||||
else
|
||||
ExecEvalFuncArgs(fcache, econtext, arguments, argv, &argDone);
|
||||
ExecEvalFuncArgs(fcache, econtext, arguments, argV, &argDone);
|
||||
|
||||
if ((fcache->hasSetArg) && (argDone))
|
||||
{
|
||||
|
@ -745,7 +745,7 @@ ExecMakeFunctionResult(Node *node,
|
|||
* which defines this set. So replace the existing funcid in the
|
||||
* funcnode with the set's OID. Also, we want a new fcache which
|
||||
* points to the right function, so get that, now that we have the
|
||||
* right OID. Also zero out the argv, since the real set doesn't take
|
||||
* right OID. Also zero out the argV, since the real set doesn't take
|
||||
* any arguments.
|
||||
*/
|
||||
if (((Func *) node)->funcid == F_SETEVAL)
|
||||
|
@ -753,18 +753,18 @@ ExecMakeFunctionResult(Node *node,
|
|||
funcisset = true;
|
||||
if (fcache->setArg)
|
||||
{
|
||||
argv[0] = 0;
|
||||
argV[0] = 0;
|
||||
|
||||
((Func *) node)->funcid = (Oid) PointerGetDatum(fcache->setArg);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
((Func *) node)->funcid = (Oid) argv[0];
|
||||
setFcache(node, argv[0], NIL, econtext);
|
||||
((Func *) node)->funcid = (Oid) argV[0];
|
||||
setFcache(node, argV[0], NIL, econtext);
|
||||
fcache = ((Func *) node)->func_fcache;
|
||||
fcache->setArg = (char *) argv[0];
|
||||
argv[0] = (Datum) 0;
|
||||
fcache->setArg = (char *) argV[0];
|
||||
argV[0] = (Datum) 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -778,7 +778,7 @@ ExecMakeFunctionResult(Node *node,
|
|||
Datum result;
|
||||
|
||||
Assert(funcNode);
|
||||
result = postquel_function(funcNode, (char **) argv, isNull, isDone);
|
||||
result = postquel_function(funcNode, (char **) argV, isNull, isDone);
|
||||
|
||||
/*
|
||||
* finagle the situation where we are iterating through all
|
||||
|
@ -791,7 +791,7 @@ ExecMakeFunctionResult(Node *node,
|
|||
{
|
||||
bool argDone;
|
||||
|
||||
ExecEvalFuncArgs(fcache, econtext, arguments, argv, &argDone);
|
||||
ExecEvalFuncArgs(fcache, econtext, arguments, argV, &argDone);
|
||||
|
||||
if (argDone)
|
||||
{
|
||||
|
@ -801,7 +801,7 @@ ExecMakeFunctionResult(Node *node,
|
|||
}
|
||||
else
|
||||
result = postquel_function(funcNode,
|
||||
(char **) argv,
|
||||
(char **) argV,
|
||||
isNull,
|
||||
isDone);
|
||||
}
|
||||
|
@ -837,7 +837,7 @@ ExecMakeFunctionResult(Node *node,
|
|||
if (fcache->nullVect[i] == true)
|
||||
*isNull = true;
|
||||
|
||||
return ((Datum) fmgr_c(&fcache->func, (FmgrValues *) argv, isNull));
|
||||
return ((Datum) fmgr_c(&fcache->func, (FmgrValues *) argV, isNull));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.42 1998/05/27 18:32:01 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.43 1998/05/29 17:00:07 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -564,8 +564,8 @@ static char sock_path[MAXPGPATH + 1] = "";
|
|||
void
|
||||
StreamDoUnlink()
|
||||
{
|
||||
if (sock_path[0])
|
||||
unlink(sock_path);
|
||||
Assert(sock_path[0]);
|
||||
unlink(sock_path);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -628,6 +628,9 @@ StreamServerPort(char *hostName, short portName, int *fdP)
|
|||
return (STATUS_ERROR);
|
||||
}
|
||||
|
||||
if (family == AF_UNIX)
|
||||
on_exitpg(StreamDoUnlink, NULL);
|
||||
|
||||
listen(fd, SOMAXCONN);
|
||||
|
||||
/*
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#ifndef PRE_BSDI_2_1
|
||||
#include <dlfcn.h>
|
||||
#define pg_dlopen(f) dlopen(f, 1)
|
||||
#define pg_dlopen(f) dlopen(f, RTLD_LAZY)
|
||||
#define pg_dlsym dlsym
|
||||
#define pg_dlclose dlclose
|
||||
#define pg_dlerror dlerror
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.77 1998/05/27 18:32:02 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.78 1998/05/29 17:00:09 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
*
|
||||
|
@ -82,6 +82,8 @@
|
|||
#include "miscadmin.h"
|
||||
#include "version.h"
|
||||
#include "lib/dllist.h"
|
||||
#include "tcop/tcopprot.h"
|
||||
#include "commands/async.h"
|
||||
#include "nodes/nodes.h"
|
||||
#include "utils/mcxt.h"
|
||||
#include "storage/proc.h"
|
||||
|
@ -91,16 +93,6 @@
|
|||
#endif
|
||||
#include "storage/fd.h"
|
||||
|
||||
#if defined(DBX_VERSION)
|
||||
#define FORK() (0)
|
||||
#else
|
||||
#ifndef HAVE_VFORK
|
||||
#define FORK() fork()
|
||||
#else
|
||||
#define FORK() vfork()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(MAXINT)
|
||||
#define MAXINT INT_MAX
|
||||
#endif
|
||||
|
@ -165,6 +157,7 @@ static IpcMemoryKey ipc_key;
|
|||
|
||||
static int NextBackendId = MAXINT; /* XXX why? */
|
||||
static char *progname = (char *) NULL;
|
||||
static char **argv_name;
|
||||
|
||||
/*
|
||||
* Default Values
|
||||
|
@ -192,6 +185,19 @@ static int SendStop = false;
|
|||
static bool NetServer = false; /* if not zero, postmaster listen for
|
||||
* non-local connections */
|
||||
|
||||
|
||||
/*
|
||||
* GH: For !HAVE_SIGPROCMASK (NEXTSTEP), TRH implemented an
|
||||
* alternative interface.
|
||||
*/
|
||||
#ifdef HAVE_SIGPROCMASK
|
||||
static sigset_t oldsigmask,
|
||||
newsigmask;
|
||||
#else
|
||||
static int orgsigmask = sigblock(0);
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* postmaster.c - function prototypes
|
||||
*/
|
||||
|
@ -202,7 +208,7 @@ static void pmdie(SIGNAL_ARGS);
|
|||
static void reaper(SIGNAL_ARGS);
|
||||
static void dumpstatus(SIGNAL_ARGS);
|
||||
static void CleanupProc(int pid, int exitstatus);
|
||||
static int DoExec(Port *port);
|
||||
static int DoBackend(Port *port);
|
||||
static void ExitPostmaster(int status);
|
||||
static void usage(const char *);
|
||||
static int ServerLoop(void);
|
||||
|
@ -284,7 +290,6 @@ int
|
|||
PostmasterMain(int argc, char *argv[])
|
||||
{
|
||||
extern int NBuffers; /* from buffer/bufmgr.c */
|
||||
extern bool IsPostmaster; /* from smgr/mm.c */
|
||||
int opt;
|
||||
char *hostName;
|
||||
int status;
|
||||
|
@ -293,9 +298,8 @@ PostmasterMain(int argc, char *argv[])
|
|||
char hostbuf[MAXHOSTNAMELEN];
|
||||
|
||||
progname = argv[0];
|
||||
|
||||
IsPostmaster = true;
|
||||
|
||||
argv_name = &argv[0];
|
||||
|
||||
/*
|
||||
* for security, no dir or file created can be group or other
|
||||
* accessible
|
||||
|
@ -531,26 +535,14 @@ ServerLoop(void)
|
|||
int nSockets;
|
||||
Dlelem *curr;
|
||||
|
||||
/*
|
||||
* GH: For !HAVE_SIGPROCMASK (NEXTSTEP), TRH implemented an
|
||||
* alternative interface.
|
||||
*/
|
||||
#ifdef HAVE_SIGPROCMASK
|
||||
sigset_t oldsigmask,
|
||||
newsigmask;
|
||||
|
||||
#else
|
||||
int orgsigmask = sigblock(0);
|
||||
|
||||
#endif
|
||||
|
||||
nSockets = initMasks(&readmask, &writemask);
|
||||
|
||||
#ifdef HAVE_SIGPROCMASK
|
||||
sigprocmask(0, 0, &oldsigmask);
|
||||
sigprocmask(0, NULL, &oldsigmask);
|
||||
sigemptyset(&newsigmask);
|
||||
sigaddset(&newsigmask, SIGCHLD);
|
||||
#endif
|
||||
|
||||
for (;;)
|
||||
{
|
||||
Port *port;
|
||||
|
@ -1048,13 +1040,17 @@ BackendStartup(Port *port)
|
|||
fprintf(stderr, "-----------------------------------------\n");
|
||||
}
|
||||
|
||||
if ((pid = FORK()) == 0)
|
||||
{ /* child */
|
||||
if (DoExec(port))
|
||||
fprintf(stderr, "%s child[%d]: BackendStartup: execv failed\n",
|
||||
progname, pid);
|
||||
/* use _exit to keep from double-flushing stdio */
|
||||
_exit(1);
|
||||
if ((pid = fork()) == 0)
|
||||
{ /* child */
|
||||
if (DoBackend(port))
|
||||
{
|
||||
fprintf(stderr, "%s child[%d]: BackendStartup: backend startup failed\n",
|
||||
progname, pid);
|
||||
/* use _exit to keep from double-flushing stdio */
|
||||
_exit(1);
|
||||
}
|
||||
else
|
||||
_exit(0);
|
||||
}
|
||||
|
||||
/* in parent */
|
||||
|
@ -1123,19 +1119,14 @@ split_opts(char **argv, int *argcp, char *s)
|
|||
}
|
||||
|
||||
/*
|
||||
* DoExec -- set up the argument list and perform an execv system call
|
||||
* DoBackend -- set up the argument list and perform an execv system call
|
||||
*
|
||||
* Tries fairly hard not to dork with anything that isn't automatically
|
||||
* allocated so we don't do anything weird to the postmaster when it gets
|
||||
* its thread back. (This is vfork() we're talking about. If we're using
|
||||
* fork() because we don't have vfork(), then we don't really care.)
|
||||
*
|
||||
* returns:
|
||||
* Shouldn't return at all.
|
||||
* If execv() fails, return status.
|
||||
* returns:
|
||||
* Shouldn't return at all.
|
||||
* If execv() fails, return status.
|
||||
*/
|
||||
static int
|
||||
DoExec(Port *port)
|
||||
DoBackend(Port *port)
|
||||
{
|
||||
char execbuf[MAXPATHLEN];
|
||||
char portbuf[ARGV_SIZE];
|
||||
|
@ -1154,9 +1145,58 @@ DoExec(Port *port)
|
|||
int ac = 0;
|
||||
int i;
|
||||
|
||||
/*
|
||||
* Let's clean up ourselves as the postmaster child
|
||||
*/
|
||||
|
||||
clear_exitpg(); /* we don't want the postmaster's exitpg() handlers */
|
||||
|
||||
/* ----------------
|
||||
* register signal handlers.
|
||||
* Thanks to the postmaster, these are currently blocked.
|
||||
* ----------------
|
||||
*/
|
||||
pqsignal(SIGINT, die);
|
||||
|
||||
pqsignal(SIGHUP, die);
|
||||
pqsignal(SIGTERM, die);
|
||||
pqsignal(SIGPIPE, die);
|
||||
pqsignal(SIGUSR1, quickdie);
|
||||
pqsignal(SIGUSR2, Async_NotifyHandler);
|
||||
pqsignal(SIGFPE, FloatExceptionHandler);
|
||||
|
||||
pqsignal(SIGCHLD, SIG_DFL);
|
||||
pqsignal(SIGTTIN, SIG_DFL);
|
||||
pqsignal(SIGTTOU, SIG_DFL);
|
||||
pqsignal(SIGCONT, SIG_DFL);
|
||||
|
||||
/* OK, let's unblock our signals, all together now... */
|
||||
sigprocmask(SIG_SETMASK, &oldsigmask, 0);
|
||||
|
||||
/* Close the postmater sockets */
|
||||
if (NetServer)
|
||||
StreamClose(ServerSock_INET);
|
||||
StreamClose(ServerSock_UNIX);
|
||||
|
||||
/* Now, on to standard postgres stuff */
|
||||
|
||||
MyProcPid = getpid();
|
||||
|
||||
strncpy(execbuf, Execfile, MAXPATHLEN - 1);
|
||||
av[ac++] = execbuf;
|
||||
|
||||
/*
|
||||
* We need to set our argv[0] to an absolute path name because
|
||||
* some OS's use this for dynamic loading, like BSDI. Without it,
|
||||
* when we change directories to the database dir, the dynamic
|
||||
* loader can't find the base executable and fails.
|
||||
* Another advantage is that this changes the 'ps' displayed
|
||||
* process name on some platforms. It does on BSDI. That's
|
||||
* a big win.
|
||||
*/
|
||||
|
||||
*argv_name = Execfile;
|
||||
|
||||
/* Tell the backend it is being called from the postmaster */
|
||||
av[ac++] = "-p";
|
||||
|
||||
|
@ -1195,7 +1235,7 @@ DoExec(Port *port)
|
|||
|
||||
/* Tell the backend what protocol the frontend is using. */
|
||||
|
||||
sprintf(protobuf, "-v %u", port->proto);
|
||||
sprintf(protobuf, "-v%u", port->proto);
|
||||
av[ac++] = protobuf;
|
||||
|
||||
StrNCpy(dbbuf, port->database, ARGV_SIZE);
|
||||
|
@ -1205,14 +1245,14 @@ DoExec(Port *port)
|
|||
|
||||
if (DebugLvl > 1)
|
||||
{
|
||||
fprintf(stderr, "%s child[%ld]: execv(",
|
||||
progname, (long) MyProcPid);
|
||||
fprintf(stderr, "%s child[%d]: starting with (",
|
||||
progname, MyProcPid);
|
||||
for (i = 0; i < ac; ++i)
|
||||
fprintf(stderr, "%s, ", av[i]);
|
||||
fprintf(stderr, ")\n");
|
||||
}
|
||||
|
||||
return (execv(av[0], av));
|
||||
return(PostgresMain(ac, av));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1228,9 +1268,9 @@ ExitPostmaster(int status)
|
|||
* the backends all be killed? probably not.
|
||||
*/
|
||||
if (ServerSock_INET != INVALID_SOCK)
|
||||
close(ServerSock_INET);
|
||||
StreamClose(ServerSock_INET);
|
||||
if (ServerSock_UNIX != INVALID_SOCK)
|
||||
close(ServerSock_UNIX);
|
||||
StreamClose(ServerSock_UNIX);
|
||||
exitpg(status);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.20 1998/03/02 05:41:55 scrappy Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.21 1998/05/29 17:00:10 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
*
|
||||
|
@ -137,7 +137,6 @@ exitpg(int code)
|
|||
for (i = onexit_index - 1; i >= 0; --i)
|
||||
(*onexit_list[i].function) (code, onexit_list[i].arg);
|
||||
|
||||
StreamDoUnlink();
|
||||
exit(code);
|
||||
}
|
||||
|
||||
|
@ -168,7 +167,9 @@ quasi_exitpg()
|
|||
* ----------------
|
||||
*/
|
||||
for (i = onexit_index - 1; i >= 0; --i)
|
||||
(*onexit_list[i].function) (0, onexit_list[i].arg);
|
||||
/* Don't do StreamDoUnlink on quasi_exit */
|
||||
if (onexit_list[i].function != StreamDoUnlink)
|
||||
(*onexit_list[i].function) (0, onexit_list[i].arg);
|
||||
|
||||
onexit_index = 0;
|
||||
exitpg_inprogress = 0;
|
||||
|
@ -182,7 +183,7 @@ quasi_exitpg()
|
|||
* ----------------------------------------------------------------
|
||||
*/
|
||||
int
|
||||
on_exitpg(void (*function) (), caddr_t arg)
|
||||
on_exitpg(void (*function) (), caddr_t arg)
|
||||
{
|
||||
if (onexit_index >= MAX_ON_EXITS)
|
||||
return (-1);
|
||||
|
@ -195,6 +196,18 @@ int
|
|||
return (0);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
* clear_exitpg
|
||||
*
|
||||
* this function clears all exitpg() registered functions.
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
void
|
||||
clear_exitpg(void)
|
||||
{
|
||||
onexit_index = 0;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* IPCPrivateSemaphoreKill(status, semId) */
|
||||
/* */
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipci.c,v 1.7 1997/09/08 02:28:48 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipci.c,v 1.8 1998/05/29 17:00:12 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -101,7 +101,7 @@ CreateSharedMemoryAndSemaphores(IPCKey key)
|
|||
* ----------------
|
||||
*/
|
||||
InitProcGlobal(key);
|
||||
on_exitpg(ProcFreeAllSemaphores, 0);
|
||||
on_exitpg(ProcFreeAllSemaphores, NULL);
|
||||
|
||||
CreateSharedInvalidationState(key);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/Attic/mm.c,v 1.7 1997/09/18 20:21:53 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/Attic/mm.c,v 1.8 1998/05/29 17:00:13 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -79,7 +79,6 @@ typedef struct MMRelHashEntry
|
|||
#define MMNRELATIONS 2
|
||||
|
||||
SPINLOCK MMCacheLock;
|
||||
extern bool IsPostmaster;
|
||||
extern Oid MyDatabaseId;
|
||||
|
||||
static int *MMCurTop;
|
||||
|
@ -139,7 +138,7 @@ mminit()
|
|||
return (SM_FAIL);
|
||||
}
|
||||
|
||||
if (IsPostmaster)
|
||||
if (IsUnderPostmaster) /* was IsPostmaster bjm */
|
||||
{
|
||||
MemSet(mmcacheblk, 0, mmsize);
|
||||
SpinRelease(MMCacheLock);
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.14 1998/04/01 15:35:33 scrappy Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/smgr.c,v 1.15 1998/05/29 17:00:14 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -100,7 +100,7 @@ smgrinit()
|
|||
}
|
||||
|
||||
/* register the shutdown proc */
|
||||
on_exitpg(smgrshutdown, 0);
|
||||
on_exitpg(smgrshutdown, NULL);
|
||||
|
||||
return (SM_SUCCESS);
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.71 1998/05/27 18:32:03 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.72 1998/05/29 17:00:15 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
* this is the "main" module of the postgres backend and
|
||||
|
@ -83,8 +83,6 @@
|
|||
#include "nodes/memnodes.h"
|
||||
#endif
|
||||
|
||||
static void quickdie(SIGNAL_ARGS);
|
||||
|
||||
/* ----------------
|
||||
* global variables
|
||||
* ----------------
|
||||
|
@ -743,7 +741,7 @@ handle_warn(SIGNAL_ARGS)
|
|||
siglongjmp(Warn_restart, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
quickdie(SIGNAL_ARGS)
|
||||
{
|
||||
elog(NOTICE, "Message from PostgreSQL backend:"
|
||||
|
@ -770,7 +768,7 @@ die(SIGNAL_ARGS)
|
|||
}
|
||||
|
||||
/* signal handler for floating point exception */
|
||||
static void
|
||||
void
|
||||
FloatExceptionHandler(SIGNAL_ARGS)
|
||||
{
|
||||
elog(ERROR, "floating point exception!"
|
||||
|
@ -849,26 +847,6 @@ PostgresMain(int argc, char *argv[])
|
|||
extern char *optarg;
|
||||
extern short DebugLvl;
|
||||
|
||||
/* ----------------
|
||||
* register signal handlers.
|
||||
* ----------------
|
||||
*/
|
||||
pqsignal(SIGINT, die);
|
||||
|
||||
pqsignal(SIGHUP, die);
|
||||
pqsignal(SIGTERM, die);
|
||||
pqsignal(SIGPIPE, die);
|
||||
pqsignal(SIGUSR1, quickdie);
|
||||
pqsignal(SIGUSR2, Async_NotifyHandler);
|
||||
pqsignal(SIGFPE, FloatExceptionHandler);
|
||||
|
||||
/* --------------------
|
||||
* initialize globals
|
||||
* -------------------
|
||||
*/
|
||||
|
||||
MyProcPid = getpid();
|
||||
|
||||
/* ----------------
|
||||
* parse command line arguments
|
||||
* ----------------
|
||||
|
@ -915,6 +893,8 @@ PostgresMain(int argc, char *argv[])
|
|||
EuroDates = TRUE;
|
||||
}
|
||||
|
||||
optind = 1; /* reset after postmaster usage */
|
||||
|
||||
while ((flag = getopt(argc, argv, "B:bCD:d:Eef:iK:Lm:MNo:P:pQS:st:v:x:F"))
|
||||
!= EOF)
|
||||
switch (flag)
|
||||
|
@ -1254,7 +1234,7 @@ PostgresMain(int argc, char *argv[])
|
|||
* initialize portal file descriptors
|
||||
* ----------------
|
||||
*/
|
||||
if (IsUnderPostmaster == true)
|
||||
if (IsUnderPostmaster)
|
||||
{
|
||||
if (Portfd < 0)
|
||||
{
|
||||
|
@ -1314,10 +1294,10 @@ PostgresMain(int argc, char *argv[])
|
|||
* POSTGRES main processing loop begins here
|
||||
* ----------------
|
||||
*/
|
||||
if (IsUnderPostmaster == false)
|
||||
if (!IsUnderPostmaster)
|
||||
{
|
||||
puts("\nPOSTGRES backend interactive interface");
|
||||
puts("$Revision: 1.71 $ $Date: 1998/05/27 18:32:03 $");
|
||||
puts("$Revision: 1.72 $ $Date: 1998/05/29 17:00:15 $");
|
||||
}
|
||||
|
||||
/* ----------------
|
||||
|
@ -1327,7 +1307,7 @@ PostgresMain(int argc, char *argv[])
|
|||
* ----------------
|
||||
*/
|
||||
if (!TransactionFlushEnabled())
|
||||
on_exitpg(FlushBufferPool, (caddr_t) 0);
|
||||
on_exitpg(FlushBufferPool, NULL);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/excabort.c,v 1.4 1997/09/08 21:49:03 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/excabort.c,v 1.5 1998/05/29 17:00:16 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -22,10 +22,6 @@ ExcAbort(const Exception *excP,
|
|||
ExcData data,
|
||||
ExcMessage message)
|
||||
{
|
||||
#ifdef __SABER__
|
||||
saber_stop();
|
||||
#else
|
||||
/* dump core */
|
||||
abort();
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.22 1998/05/19 18:05:51 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.23 1998/05/29 17:00:18 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
* Globals used all over the place should be declared here and not
|
||||
|
@ -66,7 +66,6 @@ Oid MyDatabaseId = InvalidOid;
|
|||
bool TransactionInitWasProcessed = false;
|
||||
|
||||
bool IsUnderPostmaster = false;
|
||||
bool IsPostmaster = false;
|
||||
|
||||
short DebugLvl = 0;
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.14 1998/04/05 21:04:36 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.15 1998/05/29 17:00:19 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -84,9 +84,6 @@ unsigned char RecodeBackTable[128];
|
|||
void
|
||||
ExitPostgres(ExitStatus status)
|
||||
{
|
||||
#ifdef __SABER__
|
||||
saber_stop();
|
||||
#endif
|
||||
exitpg(status);
|
||||
}
|
||||
|
||||
|
@ -111,10 +108,6 @@ AbortPostgres()
|
|||
{
|
||||
char *abortValue = getenv(EnableAbortEnvVarName);
|
||||
|
||||
#ifdef __SABER__
|
||||
saber_stop();
|
||||
#endif
|
||||
|
||||
if (PointerIsValid(abortValue) && abortValue[0] != '\0')
|
||||
abort();
|
||||
else
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.27 1998/04/05 21:04:43 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.28 1998/05/29 17:00:21 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
* InitPostgres() is the function called from PostgresMain
|
||||
|
@ -384,8 +384,11 @@ forcesharedmemory:
|
|||
|
||||
#endif
|
||||
|
||||
PostgresIpcKey = key;
|
||||
AttachSharedMemoryAndSemaphores(key);
|
||||
if (!IsUnderPostmaster) /* postmaster already did this */
|
||||
{
|
||||
PostgresIpcKey = key;
|
||||
AttachSharedMemoryAndSemaphores(key);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: libpq.h,v 1.14 1998/05/19 18:05:55 momjian Exp $
|
||||
* $Id: libpq.h,v 1.15 1998/05/29 17:00:24 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -279,9 +279,9 @@ extern int StreamOpen(char *hostName, short portName, Port *port);
|
|||
extern void pq_regoob(void (*fptr) ());
|
||||
extern void pq_unregoob(void);
|
||||
extern void pq_async_notify(void);
|
||||
extern int StreamServerPort(char *hostName, short portName, int *fdP);
|
||||
extern int StreamConnection(int server_fd, Port *port);
|
||||
extern void StreamDoUnlink();
|
||||
extern int StreamServerPort(char *hostName, short portName, int *fdP);
|
||||
extern int StreamConnection(int server_fd, Port *port);
|
||||
extern void StreamClose(int sock);
|
||||
extern void StreamDoUnlink(void);
|
||||
|
||||
#endif /* LIBPQ_H */
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: miscadmin.h,v 1.23 1998/05/19 18:05:52 momjian Exp $
|
||||
* $Id: miscadmin.h,v 1.24 1998/05/29 17:00:22 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
* some of the information in this file will be moved to
|
||||
|
@ -55,7 +55,6 @@ extern Oid MyDatabaseId;
|
|||
extern bool TransactionInitWasProcessed;
|
||||
|
||||
extern bool IsUnderPostmaster;
|
||||
extern bool IsPostmaster;
|
||||
|
||||
extern short DebugLvl;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: ipc.h,v 1.24 1998/02/26 04:43:26 momjian Exp $
|
||||
* $Id: ipc.h,v 1.25 1998/05/29 17:00:26 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
* This file is very architecture-specific. This stuff should actually
|
||||
|
@ -73,7 +73,8 @@ typedef int IpcMemoryId;
|
|||
/* ipc.c */
|
||||
extern void exitpg(int code);
|
||||
extern void quasi_exitpg(void);
|
||||
extern int on_exitpg(void (*function) (), caddr_t arg);
|
||||
extern int on_exitpg(void (*function) (), caddr_t arg);
|
||||
extern void clear_exitpg(void);
|
||||
|
||||
extern IpcSemaphoreId
|
||||
IpcSemaphoreCreate(IpcSemaphoreKey semKey,
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: tcopprot.h,v 1.12 1998/05/19 18:05:58 momjian Exp $
|
||||
* $Id: tcopprot.h,v 1.13 1998/05/29 17:00:28 momjian Exp $
|
||||
*
|
||||
* OLD COMMENTS
|
||||
* This file was created so that other c files could get the two
|
||||
|
@ -33,9 +33,11 @@ pg_exec_query_dest(char *query_string, char **argv, Oid *typev,
|
|||
#endif /* BOOTSTRAP_HEADER */
|
||||
|
||||
extern void handle_warn(SIGNAL_ARGS);
|
||||
extern void quickdie(SIGNAL_ARGS);
|
||||
extern void die(SIGNAL_ARGS);
|
||||
extern void FloatExceptionHandler(SIGNAL_ARGS);
|
||||
extern void CancelQuery(void);
|
||||
extern int PostgresMain(int argc, char *argv[]);
|
||||
extern int PostgresMain(int argc, char *argv[]);
|
||||
extern void ResetUsage(void);
|
||||
extern void ShowUsage(void);
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#
|
||||
#
|
||||
# IDENTIFICATION
|
||||
# $Header: /cvsroot/pgsql/src/interfaces/Makefile,v 1.9 1998/03/05 13:18:51 scrappy Exp $
|
||||
# $Header: /cvsroot/pgsql/src/interfaces/Makefile,v 1.10 1998/05/29 17:00:29 momjian Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
|
@ -16,7 +16,7 @@ include $(SRCDIR)/Makefile.global
|
|||
|
||||
.DEFAULT all:
|
||||
$(MAKE) -C libpq $@
|
||||
$(MAKE) -C ecpg $@
|
||||
# $(MAKE) -C ecpg $@
|
||||
ifeq ($(HAVE_Cplusplus), true)
|
||||
$(MAKE) -C libpq++ $@
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue