|
|
@ -10,7 +10,7 @@ |
|
|
|
* |
|
|
|
* |
|
|
|
* |
|
|
|
* |
|
|
|
* IDENTIFICATION |
|
|
|
* IDENTIFICATION |
|
|
|
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.98 1998/11/29 01:51:56 tgl Exp $ |
|
|
|
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.99 1999/01/17 06:18:34 momjian Exp $ |
|
|
|
* |
|
|
|
* |
|
|
|
* NOTES |
|
|
|
* NOTES |
|
|
|
* |
|
|
|
* |
|
|
@ -73,6 +73,10 @@ |
|
|
|
#include <sys/select.h> |
|
|
|
#include <sys/select.h> |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __CYGWIN32__ |
|
|
|
|
|
|
|
#include <getopt.h> |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#include "storage/ipc.h" |
|
|
|
#include "storage/ipc.h" |
|
|
|
#include "libpq/libpq.h" |
|
|
|
#include "libpq/libpq.h" |
|
|
|
#include "libpq/auth.h" |
|
|
|
#include "libpq/auth.h" |
|
|
@ -170,7 +174,9 @@ static int real_argc; |
|
|
|
static char Execfile[MAXPATHLEN] = ""; |
|
|
|
static char Execfile[MAXPATHLEN] = ""; |
|
|
|
|
|
|
|
|
|
|
|
static int ServerSock_INET = INVALID_SOCK; /* stream socket server */ |
|
|
|
static int ServerSock_INET = INVALID_SOCK; /* stream socket server */ |
|
|
|
|
|
|
|
#ifndef __CYGWIN32__ |
|
|
|
static int ServerSock_UNIX = INVALID_SOCK; /* stream socket server */ |
|
|
|
static int ServerSock_UNIX = INVALID_SOCK; /* stream socket server */ |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* Set by the -o option |
|
|
|
* Set by the -o option |
|
|
@ -268,7 +274,11 @@ checkDataDir(const char *DataDir, bool *DataDirOK) |
|
|
|
|
|
|
|
|
|
|
|
sprintf(path, "%s%cbase%ctemplate1%cpg_class", |
|
|
|
sprintf(path, "%s%cbase%ctemplate1%cpg_class", |
|
|
|
DataDir, SEP_CHAR, SEP_CHAR, SEP_CHAR); |
|
|
|
DataDir, SEP_CHAR, SEP_CHAR, SEP_CHAR); |
|
|
|
|
|
|
|
#ifndef __CYGWIN32__ |
|
|
|
fp = AllocateFile(path, "r"); |
|
|
|
fp = AllocateFile(path, "r"); |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
fp = AllocateFile(path, "rb"); |
|
|
|
|
|
|
|
#endif |
|
|
|
if (fp == NULL) |
|
|
|
if (fp == NULL) |
|
|
|
{ |
|
|
|
{ |
|
|
|
fprintf(stderr, "%s does not find the database system. " |
|
|
|
fprintf(stderr, "%s does not find the database system. " |
|
|
@ -522,6 +532,7 @@ PostmasterMain(int argc, char *argv[]) |
|
|
|
exit(1); |
|
|
|
exit(1); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#ifndef __CYGWIN32__ |
|
|
|
status = StreamServerPort(NULL, PostPortName, &ServerSock_UNIX); |
|
|
|
status = StreamServerPort(NULL, PostPortName, &ServerSock_UNIX); |
|
|
|
if (status != STATUS_OK) |
|
|
|
if (status != STATUS_OK) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -529,7 +540,7 @@ PostmasterMain(int argc, char *argv[]) |
|
|
|
progname); |
|
|
|
progname); |
|
|
|
exit(1); |
|
|
|
exit(1); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
/* set up shared memory and semaphores */ |
|
|
|
/* set up shared memory and semaphores */ |
|
|
|
EnableMemoryContext(TRUE); |
|
|
|
EnableMemoryContext(TRUE); |
|
|
|
reset_shared(PostPortName); |
|
|
|
reset_shared(PostPortName); |
|
|
@ -584,7 +595,11 @@ pmdaemonize(void) |
|
|
|
exit(1); |
|
|
|
exit(1); |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifndef __CYGWIN32__ |
|
|
|
i = open(NULL_DEV, O_RDWR); |
|
|
|
i = open(NULL_DEV, O_RDWR); |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
i = open(NULL_DEV, O_RDWR | O_BINARY); |
|
|
|
|
|
|
|
#endif |
|
|
|
dup2(i, 0); |
|
|
|
dup2(i, 0); |
|
|
|
dup2(i, 1); |
|
|
|
dup2(i, 1); |
|
|
|
dup2(i, 2); |
|
|
|
dup2(i, 2); |
|
|
@ -688,12 +703,14 @@ ServerLoop(void) |
|
|
|
|
|
|
|
|
|
|
|
/* new connection pending on our well-known port's socket */ |
|
|
|
/* new connection pending on our well-known port's socket */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __CYGWIN32__ |
|
|
|
if (ServerSock_UNIX != INVALID_SOCK && |
|
|
|
if (ServerSock_UNIX != INVALID_SOCK && |
|
|
|
FD_ISSET(ServerSock_UNIX, &rmask) && |
|
|
|
FD_ISSET(ServerSock_UNIX, &rmask) && |
|
|
|
(port = ConnCreate(ServerSock_UNIX)) != NULL) |
|
|
|
(port = ConnCreate(ServerSock_UNIX)) != NULL) |
|
|
|
PacketReceiveSetup(&port->pktInfo, |
|
|
|
PacketReceiveSetup(&port->pktInfo, |
|
|
|
readStartupPacket, |
|
|
|
readStartupPacket, |
|
|
|
(void *) port); |
|
|
|
(void *) port); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
if (ServerSock_INET != INVALID_SOCK && |
|
|
|
if (ServerSock_INET != INVALID_SOCK && |
|
|
|
FD_ISSET(ServerSock_INET, &rmask) && |
|
|
|
FD_ISSET(ServerSock_INET, &rmask) && |
|
|
@ -802,6 +819,7 @@ initMasks(fd_set *rmask, fd_set *wmask) |
|
|
|
FD_ZERO(rmask); |
|
|
|
FD_ZERO(rmask); |
|
|
|
FD_ZERO(wmask); |
|
|
|
FD_ZERO(wmask); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __CYGWIN32__ |
|
|
|
if (ServerSock_UNIX != INVALID_SOCK) |
|
|
|
if (ServerSock_UNIX != INVALID_SOCK) |
|
|
|
{ |
|
|
|
{ |
|
|
|
FD_SET(ServerSock_UNIX, rmask); |
|
|
|
FD_SET(ServerSock_UNIX, rmask); |
|
|
@ -809,6 +827,7 @@ initMasks(fd_set *rmask, fd_set *wmask) |
|
|
|
if (ServerSock_UNIX > nsocks) |
|
|
|
if (ServerSock_UNIX > nsocks) |
|
|
|
nsocks = ServerSock_UNIX; |
|
|
|
nsocks = ServerSock_UNIX; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
if (ServerSock_INET != INVALID_SOCK) |
|
|
|
if (ServerSock_INET != INVALID_SOCK) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1437,7 +1456,9 @@ DoBackend(Port *port) |
|
|
|
/* Close the postmater sockets */ |
|
|
|
/* Close the postmater sockets */ |
|
|
|
if (NetServer) |
|
|
|
if (NetServer) |
|
|
|
StreamClose(ServerSock_INET); |
|
|
|
StreamClose(ServerSock_INET); |
|
|
|
|
|
|
|
#ifndef __CYGWIN32__ |
|
|
|
StreamClose(ServerSock_UNIX); |
|
|
|
StreamClose(ServerSock_UNIX); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
/* Save port for ps status */ |
|
|
|
/* Save port for ps status */ |
|
|
|
MyProcPort = port; |
|
|
|
MyProcPort = port; |
|
|
@ -1546,8 +1567,10 @@ ExitPostmaster(int status) |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
if (ServerSock_INET != INVALID_SOCK) |
|
|
|
if (ServerSock_INET != INVALID_SOCK) |
|
|
|
StreamClose(ServerSock_INET); |
|
|
|
StreamClose(ServerSock_INET); |
|
|
|
|
|
|
|
#ifndef __CYGWIN32__ |
|
|
|
if (ServerSock_UNIX != INVALID_SOCK) |
|
|
|
if (ServerSock_UNIX != INVALID_SOCK) |
|
|
|
StreamClose(ServerSock_UNIX); |
|
|
|
StreamClose(ServerSock_UNIX); |
|
|
|
|
|
|
|
#endif |
|
|
|
proc_exit(status); |
|
|
|
proc_exit(status); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|