mirror of
https://github.com/postgres/postgres.git
synced 2025-04-21 12:05:57 +03:00
New ps display code, works on more platforms.
Install a default configuration file. Clean up some funny business in the config file code.
This commit is contained in:
parent
2ea370a3ce
commit
209aa77d98
@ -34,7 +34,7 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
# IDENTIFICATION
|
# IDENTIFICATION
|
||||||
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.52 2000/05/31 00:28:13 petere Exp $
|
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.53 2000/06/04 01:44:28 petere Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -205,7 +205,8 @@ endif
|
|||||||
install-templates: $(TEMPLATEDIR) \
|
install-templates: $(TEMPLATEDIR) \
|
||||||
global1.bki.source local1_template1.bki.source \
|
global1.bki.source local1_template1.bki.source \
|
||||||
global1.description local1_template1.description \
|
global1.description local1_template1.description \
|
||||||
libpq/pg_hba.conf.sample libpq/pg_ident.conf.sample
|
libpq/pg_hba.conf.sample libpq/pg_ident.conf.sample \
|
||||||
|
utils/misc/postgresql.conf.sample
|
||||||
$(INSTALL) $(INSTLOPTS) global1.bki.source \
|
$(INSTALL) $(INSTLOPTS) global1.bki.source \
|
||||||
$(TEMPLATEDIR)/global1.bki.source
|
$(TEMPLATEDIR)/global1.bki.source
|
||||||
$(INSTALL) $(INSTLOPTS) global1.description \
|
$(INSTALL) $(INSTLOPTS) global1.description \
|
||||||
@ -218,6 +219,8 @@ install-templates: $(TEMPLATEDIR) \
|
|||||||
$(TEMPLATEDIR)/pg_hba.conf.sample
|
$(TEMPLATEDIR)/pg_hba.conf.sample
|
||||||
$(INSTALL) $(INSTLOPTS) libpq/pg_ident.conf.sample \
|
$(INSTALL) $(INSTLOPTS) libpq/pg_ident.conf.sample \
|
||||||
$(TEMPLATEDIR)/pg_ident.conf.sample
|
$(TEMPLATEDIR)/pg_ident.conf.sample
|
||||||
|
$(INSTALL) $(INSTLOPTS) utils/misc/postgresql.conf.sample \
|
||||||
|
$(TEMPLATEDIR)/postgresql.conf.sample
|
||||||
|
|
||||||
install-headers: prebuildheaders $(SRCDIR)/include/config.h
|
install-headers: prebuildheaders $(SRCDIR)/include/config.h
|
||||||
-@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
|
-@if [ ! -d $(HEADERDIR) ]; then mkdir $(HEADERDIR); fi
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.62 2000/05/31 00:28:15 petere Exp $
|
* $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.63 2000/06/04 01:44:29 petere Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -771,7 +771,7 @@ ProcessIncomingNotify(void)
|
|||||||
if (Trace_notify)
|
if (Trace_notify)
|
||||||
elog(DEBUG, "ProcessIncomingNotify");
|
elog(DEBUG, "ProcessIncomingNotify");
|
||||||
|
|
||||||
PS_SET_STATUS("async_notify");
|
set_ps_display("async_notify");
|
||||||
|
|
||||||
notifyInterruptOccurred = 0;
|
notifyInterruptOccurred = 0;
|
||||||
|
|
||||||
@ -841,7 +841,7 @@ ProcessIncomingNotify(void)
|
|||||||
*/
|
*/
|
||||||
pq_flush();
|
pq_flush();
|
||||||
|
|
||||||
PS_SET_STATUS("idle");
|
set_ps_display("idle");
|
||||||
|
|
||||||
if (Trace_notify)
|
if (Trace_notify)
|
||||||
elog(DEBUG, "ProcessIncomingNotify: done");
|
elog(DEBUG, "ProcessIncomingNotify: done");
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: pqcomm.c,v 1.94 2000/06/02 15:57:21 momjian Exp $
|
* $Id: pqcomm.c,v 1.95 2000/06/04 01:44:30 petere Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -182,12 +182,11 @@ StreamDoUnlink()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
StreamServerPort(char *hostName, unsigned short portName, int *fdP)
|
StreamServerPort(int family, unsigned short portName, int *fdP)
|
||||||
{
|
{
|
||||||
SockAddr saddr;
|
SockAddr saddr;
|
||||||
int fd,
|
int fd,
|
||||||
err,
|
err;
|
||||||
family;
|
|
||||||
size_t len;
|
size_t len;
|
||||||
int one = 1;
|
int one = 1;
|
||||||
|
|
||||||
@ -196,7 +195,7 @@ StreamServerPort(char *hostName, unsigned short portName, int *fdP)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
family = ((hostName != NULL) ? AF_INET : AF_UNIX);
|
Assert(family == AF_INET || family == AF_UNIX);
|
||||||
|
|
||||||
if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
|
if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
|
||||||
{
|
{
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.145 2000/06/02 15:57:22 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.146 2000/06/04 01:44:31 petere Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
*
|
*
|
||||||
@ -33,6 +33,8 @@
|
|||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
#include "postgres.h"
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
@ -46,16 +48,11 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
|
||||||
#include "postgres.h"
|
|
||||||
/* moved here to prevent double define */
|
/* moved here to prevent double define */
|
||||||
#ifdef HAVE_NETDB_H
|
#ifdef HAVE_NETDB_H
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MAXHOSTNAMELEN
|
|
||||||
#define MAXHOSTNAMELEN 256
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_LIMITS_H
|
#ifdef HAVE_LIMITS_H
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#else
|
#else
|
||||||
@ -72,10 +69,6 @@
|
|||||||
#include "getopt.h"
|
#include "getopt.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_GETHOSTNAME
|
|
||||||
#include "port-protos.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "commands/async.h"
|
#include "commands/async.h"
|
||||||
#include "lib/dllist.h"
|
#include "lib/dllist.h"
|
||||||
#include "libpq/auth.h"
|
#include "libpq/auth.h"
|
||||||
@ -191,8 +184,6 @@ static volatile bool got_SIGHUP = false;
|
|||||||
/*
|
/*
|
||||||
* Default Values
|
* Default Values
|
||||||
*/
|
*/
|
||||||
static char Execfile[MAXPGPATH];
|
|
||||||
|
|
||||||
static int ServerSock_INET = INVALID_SOCK; /* stream socket server */
|
static int ServerSock_INET = INVALID_SOCK; /* stream socket server */
|
||||||
|
|
||||||
#if !defined(__CYGWIN32__) && !defined(__QNX__)
|
#if !defined(__CYGWIN32__) && !defined(__QNX__)
|
||||||
@ -278,7 +269,7 @@ static void SignalChildren(SIGNAL_ARGS);
|
|||||||
static int CountChildren(void);
|
static int CountChildren(void);
|
||||||
static int
|
static int
|
||||||
SetOptsFile(char *progname, int port, char *datadir,
|
SetOptsFile(char *progname, int port, char *datadir,
|
||||||
int assert, int nbuf, char *execfile,
|
int assert, int nbuf,
|
||||||
int debuglvl, int netserver,
|
int debuglvl, int netserver,
|
||||||
#ifdef USE_SSL
|
#ifdef USE_SSL
|
||||||
int securenetserver,
|
int securenetserver,
|
||||||
@ -368,61 +359,17 @@ int
|
|||||||
PostmasterMain(int argc, char *argv[])
|
PostmasterMain(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int opt;
|
int opt;
|
||||||
char *hostName;
|
|
||||||
int status;
|
int status;
|
||||||
int silentflag = 0;
|
int silentflag = 0;
|
||||||
bool DataDirOK; /* We have a usable PGDATA value */
|
bool DataDirOK; /* We have a usable PGDATA value */
|
||||||
char hostbuf[MAXHOSTNAMELEN];
|
|
||||||
int nonblank_argc;
|
|
||||||
char original_extraoptions[MAXPGPATH];
|
char original_extraoptions[MAXPGPATH];
|
||||||
|
|
||||||
*original_extraoptions = '\0';
|
*original_extraoptions = '\0';
|
||||||
|
|
||||||
#ifndef HAVE_SETPROCTITLE
|
|
||||||
/*
|
|
||||||
* We need four params so we can display status. If we don't get
|
|
||||||
* them from the user, let's make them ourselves.
|
|
||||||
*/
|
|
||||||
if (argc < 5)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
char *new_argv[6];
|
|
||||||
|
|
||||||
for (i = 0; i < argc; i++)
|
|
||||||
new_argv[i] = argv[i];
|
|
||||||
for (; i < 5; i++)
|
|
||||||
new_argv[i] = "";
|
|
||||||
new_argv[5] = NULL;
|
|
||||||
|
|
||||||
if (!Execfile[0] && FindExec(Execfile, argv[0], "postmaster") < 0)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s: could not find postmaster to execute...\n",
|
|
||||||
argv[0]);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
new_argv[0] = Execfile;
|
|
||||||
|
|
||||||
execv(new_argv[0], new_argv);
|
|
||||||
|
|
||||||
/* How did we get here? Error! */
|
|
||||||
perror(new_argv[0]);
|
|
||||||
fprintf(stderr, "PostmasterMain execv failed on %s\n", argv[0]);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
progname = argv[0];
|
progname = argv[0];
|
||||||
real_argv = argv;
|
real_argv = argv;
|
||||||
real_argc = argc;
|
real_argc = argc;
|
||||||
|
|
||||||
/*
|
|
||||||
* don't process any dummy args we placed at the end for status
|
|
||||||
* display
|
|
||||||
*/
|
|
||||||
for (nonblank_argc = argc; nonblank_argc > 0; nonblank_argc--)
|
|
||||||
if (argv[nonblank_argc - 1] != NULL && argv[nonblank_argc - 1][0] != '\0')
|
|
||||||
break;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* for security, no dir or file created can be group or other
|
* for security, no dir or file created can be group or other
|
||||||
* accessible
|
* accessible
|
||||||
@ -431,13 +378,6 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
|
|
||||||
ResetAllOptions();
|
ResetAllOptions();
|
||||||
|
|
||||||
if (!(hostName = getenv("PGHOST")))
|
|
||||||
{
|
|
||||||
if (gethostname(hostbuf, MAXHOSTNAMELEN) < 0)
|
|
||||||
strcpy(hostbuf, "localhost");
|
|
||||||
hostName = hostbuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
MyProcPid = getpid();
|
MyProcPid = getpid();
|
||||||
DataDir = getenv("PGDATA"); /* default value */
|
DataDir = getenv("PGDATA"); /* default value */
|
||||||
|
|
||||||
@ -455,7 +395,7 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
* will occur.
|
* will occur.
|
||||||
*/
|
*/
|
||||||
opterr = 1;
|
opterr = 1;
|
||||||
while ((opt = getopt(nonblank_argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
|
while ((opt = getopt(argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
|
||||||
{
|
{
|
||||||
if (opt == 'D')
|
if (opt == 'D')
|
||||||
DataDir = optarg;
|
DataDir = optarg;
|
||||||
@ -472,7 +412,7 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
ProcessConfigFile(PGC_POSTMASTER);
|
ProcessConfigFile(PGC_POSTMASTER);
|
||||||
|
|
||||||
IgnoreSystemIndexes(false);
|
IgnoreSystemIndexes(false);
|
||||||
while ((opt = getopt(nonblank_argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
|
while ((opt = getopt(argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
|
||||||
{
|
{
|
||||||
switch (opt)
|
switch (opt)
|
||||||
{
|
{
|
||||||
@ -496,15 +436,7 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
NBuffers = atoi(optarg);
|
NBuffers = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
/* Set the backend executable file to use. */
|
/* Can no longer set the backend executable file to use. */
|
||||||
if (!ValidateBinary(optarg))
|
|
||||||
StrNCpy(Execfile, optarg, MAXPGPATH);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s: invalid backend \"%s\"\n",
|
|
||||||
progname, optarg);
|
|
||||||
exit(2);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
/* already done above */
|
/* already done above */
|
||||||
@ -630,13 +562,6 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Execfile[0] && FindExec(Execfile, argv[0], "postgres") < 0)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s: could not find backend to execute...\n",
|
|
||||||
argv[0]);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef USE_SSL
|
#ifdef USE_SSL
|
||||||
if (!NetServer && SecureNetServer)
|
if (!NetServer && SecureNetServer)
|
||||||
{
|
{
|
||||||
@ -649,7 +574,7 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
|
|
||||||
if (NetServer)
|
if (NetServer)
|
||||||
{
|
{
|
||||||
status = StreamServerPort(hostName, (unsigned short)PostPortName, &ServerSock_INET);
|
status = StreamServerPort(AF_INET, (unsigned short)PostPortName, &ServerSock_INET);
|
||||||
if (status != STATUS_OK)
|
if (status != STATUS_OK)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: cannot create INET stream port\n",
|
fprintf(stderr, "%s: cannot create INET stream port\n",
|
||||||
@ -659,7 +584,7 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(__CYGWIN32__) && !defined(__QNX__)
|
#if !defined(__CYGWIN32__) && !defined(__QNX__)
|
||||||
status = StreamServerPort(NULL, (unsigned short)PostPortName, &ServerSock_UNIX);
|
status = StreamServerPort(AF_UNIX, (unsigned short)PostPortName, &ServerSock_UNIX);
|
||||||
if (status != STATUS_OK)
|
if (status != STATUS_OK)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: cannot create UNIX stream port\n",
|
fprintf(stderr, "%s: cannot create UNIX stream port\n",
|
||||||
@ -696,7 +621,6 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
assert_enabled, /* whether -A is specified
|
assert_enabled, /* whether -A is specified
|
||||||
* or not */
|
* or not */
|
||||||
NBuffers, /* -B: number of shared buffers */
|
NBuffers, /* -B: number of shared buffers */
|
||||||
Execfile, /* -b: postgres executable file */
|
|
||||||
DebugLvl, /* -d: debug level */
|
DebugLvl, /* -d: debug level */
|
||||||
NetServer, /* -i: accept connection from INET */
|
NetServer, /* -i: accept connection from INET */
|
||||||
#ifdef USE_SSL
|
#ifdef USE_SSL
|
||||||
@ -785,7 +709,6 @@ pmdaemonize(char *extraoptions)
|
|||||||
assert_enabled, /* whether -A is specified
|
assert_enabled, /* whether -A is specified
|
||||||
* or not */
|
* or not */
|
||||||
NBuffers, /* -B: number of shared buffers */
|
NBuffers, /* -B: number of shared buffers */
|
||||||
Execfile, /* -b: postgres executable file */
|
|
||||||
DebugLvl, /* -d: debug level */
|
DebugLvl, /* -d: debug level */
|
||||||
NetServer, /* -i: accept connection from INET */
|
NetServer, /* -i: accept connection from INET */
|
||||||
#ifdef USE_SSL
|
#ifdef USE_SSL
|
||||||
@ -1905,7 +1828,6 @@ DoBackend(Port *port)
|
|||||||
{
|
{
|
||||||
char *av[ARGV_SIZE * 2];
|
char *av[ARGV_SIZE * 2];
|
||||||
int ac = 0;
|
int ac = 0;
|
||||||
char execbuf[MAXPGPATH];
|
|
||||||
char debugbuf[ARGV_SIZE];
|
char debugbuf[ARGV_SIZE];
|
||||||
char protobuf[ARGV_SIZE];
|
char protobuf[ARGV_SIZE];
|
||||||
char dbbuf[ARGV_SIZE];
|
char dbbuf[ARGV_SIZE];
|
||||||
@ -1958,26 +1880,7 @@ DoBackend(Port *port)
|
|||||||
* ----------------
|
* ----------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
StrNCpy(execbuf, Execfile, MAXPGPATH);
|
av[ac++] = "postgres";
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef linux
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This doesn't work on linux and overwrites the only valid pointer to
|
|
||||||
* the argv buffer. See PS_INIT_STATUS macro.
|
|
||||||
*/
|
|
||||||
real_argv[0] = Execfile;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pass the requested debugging level along to the backend. Level one
|
* Pass the requested debugging level along to the backend. Level one
|
||||||
@ -2229,7 +2132,6 @@ SSDataBase(bool startup)
|
|||||||
{
|
{
|
||||||
char *av[ARGV_SIZE * 2];
|
char *av[ARGV_SIZE * 2];
|
||||||
int ac = 0;
|
int ac = 0;
|
||||||
char execbuf[MAXPGPATH];
|
|
||||||
char nbbuf[ARGV_SIZE];
|
char nbbuf[ARGV_SIZE];
|
||||||
char dbbuf[ARGV_SIZE];
|
char dbbuf[ARGV_SIZE];
|
||||||
|
|
||||||
@ -2244,8 +2146,7 @@ SSDataBase(bool startup)
|
|||||||
ServerSock_UNIX = INVALID_SOCK;
|
ServerSock_UNIX = INVALID_SOCK;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
StrNCpy(execbuf, Execfile, MAXPGPATH);
|
av[ac++] = "postgres";
|
||||||
av[ac++] = execbuf;
|
|
||||||
|
|
||||||
av[ac++] = "-d";
|
av[ac++] = "-d";
|
||||||
|
|
||||||
@ -2294,7 +2195,7 @@ SSDataBase(bool startup)
|
|||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
SetOptsFile(char *progname, int port, char *datadir,
|
SetOptsFile(char *progname, int port, char *datadir,
|
||||||
int assert, int nbuf, char *execfile,
|
int assert, int nbuf,
|
||||||
int debuglvl, int netserver,
|
int debuglvl, int netserver,
|
||||||
#ifdef USE_SSL
|
#ifdef USE_SSL
|
||||||
int securenetserver,
|
int securenetserver,
|
||||||
@ -2324,7 +2225,7 @@ SetOptsFile(char *progname, int port, char *datadir,
|
|||||||
strcat(opts, buf);
|
strcat(opts, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "-B %d\n-b %s\n", nbuf, execfile);
|
snprintf(buf, sizeof(buf), "-B %d\n", nbuf);
|
||||||
strcat(opts, buf);
|
strcat(opts, buf);
|
||||||
|
|
||||||
if (debuglvl)
|
if (debuglvl)
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.68 2000/05/31 00:28:30 petere Exp $
|
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.69 2000/06/04 01:44:32 petere Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* Outside modules can create a lock table and acquire/release
|
* Outside modules can create a lock table and acquire/release
|
||||||
@ -895,8 +895,7 @@ WaitOnLock(LOCKMETHOD lockmethod, LOCK *lock, LOCKMODE lockmode)
|
|||||||
{
|
{
|
||||||
PROC_QUEUE *waitQueue = &(lock->waitProcs);
|
PROC_QUEUE *waitQueue = &(lock->waitProcs);
|
||||||
LOCKMETHODTABLE *lockMethodTable = LockMethodTable[lockmethod];
|
LOCKMETHODTABLE *lockMethodTable = LockMethodTable[lockmethod];
|
||||||
char old_status[64],
|
char *new_status, *old_status;
|
||||||
new_status[64];
|
|
||||||
|
|
||||||
Assert(lockmethod < NumLockMethods);
|
Assert(lockmethod < NumLockMethods);
|
||||||
|
|
||||||
@ -909,10 +908,13 @@ WaitOnLock(LOCKMETHOD lockmethod, LOCK *lock, LOCKMODE lockmode)
|
|||||||
* people can be deleted from the queue by a SIGINT or something.
|
* people can be deleted from the queue by a SIGINT or something.
|
||||||
*/
|
*/
|
||||||
LOCK_PRINT("WaitOnLock: sleeping on lock", lock, lockmode);
|
LOCK_PRINT("WaitOnLock: sleeping on lock", lock, lockmode);
|
||||||
strcpy(old_status, PS_STATUS);
|
|
||||||
strcpy(new_status, PS_STATUS);
|
old_status = pstrdup(get_ps_display());
|
||||||
|
new_status = palloc(strlen(get_ps_display()) + 10);
|
||||||
|
strcpy(new_status, get_ps_display());
|
||||||
strcat(new_status, " waiting");
|
strcat(new_status, " waiting");
|
||||||
PS_SET_STATUS(new_status);
|
set_ps_display(new_status);
|
||||||
|
|
||||||
if (ProcSleep(waitQueue,
|
if (ProcSleep(waitQueue,
|
||||||
lockMethodTable->ctl,
|
lockMethodTable->ctl,
|
||||||
lockmode,
|
lockmode,
|
||||||
@ -940,7 +942,11 @@ WaitOnLock(LOCKMETHOD lockmethod, LOCK *lock, LOCKMODE lockmode)
|
|||||||
|
|
||||||
if (lock->activeHolders[lockmode] == lock->holders[lockmode])
|
if (lock->activeHolders[lockmode] == lock->holders[lockmode])
|
||||||
lock->waitMask &= BITS_OFF[lockmode];
|
lock->waitMask &= BITS_OFF[lockmode];
|
||||||
PS_SET_STATUS(old_status);
|
|
||||||
|
set_ps_display(old_status);
|
||||||
|
pfree(old_status);
|
||||||
|
pfree(new_status);
|
||||||
|
|
||||||
LOCK_PRINT("WaitOnLock: wakeup on lock", lock, lockmode);
|
LOCK_PRINT("WaitOnLock: wakeup on lock", lock, lockmode);
|
||||||
return STATUS_OK;
|
return STATUS_OK;
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.157 2000/05/31 00:28:31 petere Exp $
|
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.158 2000/06/04 01:44:33 petere Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* this is the "main" module of the postgres backend and
|
* this is the "main" module of the postgres backend and
|
||||||
@ -79,10 +79,6 @@ bool Log_connections = false;
|
|||||||
|
|
||||||
CommandDest whereToSendOutput = Debug;
|
CommandDest whereToSendOutput = Debug;
|
||||||
|
|
||||||
/* Define status buffer needed by PS_SET_STATUS */
|
|
||||||
#ifdef PS_DEFINE_BUFFER
|
|
||||||
PS_DEFINE_BUFFER;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern void BaseInit(void);
|
extern void BaseInit(void);
|
||||||
extern void StartupXLOG(void);
|
extern void StartupXLOG(void);
|
||||||
@ -815,10 +811,8 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
|
|||||||
StringInfo parser_input;
|
StringInfo parser_input;
|
||||||
char *userName;
|
char *userName;
|
||||||
|
|
||||||
/* Used if verbose is set, must be initialized */
|
char *remote_host;
|
||||||
char *remote_info = "interactive";
|
unsigned short remote_port;
|
||||||
char *remote_host = "";
|
|
||||||
unsigned short remote_port = 0;
|
|
||||||
|
|
||||||
extern int optind;
|
extern int optind;
|
||||||
extern char *optarg;
|
extern char *optarg;
|
||||||
@ -1173,6 +1167,12 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
|
|||||||
proc_exit(1);
|
proc_exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make a copy of DataDir because the arguments and environment
|
||||||
|
* might be moved around later on.
|
||||||
|
*/
|
||||||
|
DataDir = strdup(DataDir);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 1. Set BlockSig and UnBlockSig masks. 2. Set up signal handlers. 3.
|
* 1. Set BlockSig and UnBlockSig masks. 2. Set up signal handlers. 3.
|
||||||
* Allow only SIGUSR1 signal (we never block it) during
|
* Allow only SIGUSR1 signal (we never block it) during
|
||||||
@ -1281,55 +1281,56 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* On some systems our dynloader code needs the executable's pathname */
|
/* On some systems our dynloader code needs the executable's pathname */
|
||||||
if (FindExec(pg_pathname, argv[0], "postgres") < 0)
|
if (FindExec(pg_pathname, real_argv[0], "postgres") < 0)
|
||||||
elog(FATAL, "%s: could not locate executable, bailing out...",
|
elog(FATAL, "%s: could not locate executable, bailing out...",
|
||||||
argv[0]);
|
real_argv[0]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find remote host name or address.
|
* Find remote host name or address.
|
||||||
*/
|
*/
|
||||||
|
remote_host = NULL;
|
||||||
|
|
||||||
if (IsUnderPostmaster)
|
if (IsUnderPostmaster)
|
||||||
{
|
{
|
||||||
switch (MyProcPort->raddr.sa.sa_family)
|
if (MyProcPort->raddr.sa.sa_family == AF_INET)
|
||||||
{
|
{
|
||||||
struct hostent *host_ent;
|
struct hostent *host_ent;
|
||||||
|
char * host_addr;
|
||||||
|
|
||||||
case AF_INET:
|
|
||||||
remote_info = remote_host = malloc(48);
|
|
||||||
remote_port = ntohs(MyProcPort->raddr.in.sin_port);
|
remote_port = ntohs(MyProcPort->raddr.in.sin_port);
|
||||||
strcpy(remote_host, inet_ntoa(MyProcPort->raddr.in.sin_addr));
|
host_addr = inet_ntoa(MyProcPort->raddr.in.sin_addr);
|
||||||
|
|
||||||
if (HostnameLookup)
|
if (HostnameLookup)
|
||||||
{
|
{
|
||||||
host_ent = \
|
host_ent = gethostbyaddr((char *) &MyProcPort->raddr.in.sin_addr, sizeof(MyProcPort->raddr.in.sin_addr), AF_INET);
|
||||||
gethostbyaddr((char *) &MyProcPort->raddr.in.sin_addr,
|
|
||||||
sizeof(MyProcPort->raddr.in.sin_addr),
|
|
||||||
AF_INET);
|
|
||||||
if (host_ent)
|
if (host_ent)
|
||||||
{
|
{
|
||||||
strncpy(remote_host, host_ent->h_name, 48);
|
remote_host = palloc(strlen(host_addr) + strlen(host_ent->h_name) + 3);
|
||||||
*(remote_host + 47) = '\0';
|
sprintf(remote_host, "%s[%s]", host_ent->h_name, host_addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (remote_host == NULL)
|
||||||
|
remote_host = pstrdup(host_addr);
|
||||||
|
|
||||||
if (ShowPortNumber)
|
if (ShowPortNumber)
|
||||||
{
|
{
|
||||||
remote_info = malloc(strlen(remote_host) + 6);
|
char * str = palloc(strlen(remote_host) + 7);
|
||||||
sprintf(remote_info, "%s:%d", remote_host, remote_port);
|
sprintf(str, "%s:%hu", remote_host, remote_port);
|
||||||
|
pfree(remote_host);
|
||||||
|
remote_host = str;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case AF_UNIX:
|
|
||||||
remote_info = remote_host = "localhost";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
remote_info = remote_host = "unknown";
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else /* not AF_INET */
|
||||||
|
remote_host = "[local]";
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set process params for ps
|
* Set process params for ps
|
||||||
*/
|
*/
|
||||||
PS_INIT_STATUS(real_argc, real_argv, argv[0],
|
init_ps_display(real_argc, real_argv, userName, DBName, remote_host);
|
||||||
remote_info, userName, DBName);
|
set_ps_display("startup");
|
||||||
PS_SET_STATUS("startup");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Log_connections)
|
if (Log_connections)
|
||||||
@ -1378,7 +1379,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
|
|||||||
if (!IsUnderPostmaster)
|
if (!IsUnderPostmaster)
|
||||||
{
|
{
|
||||||
puts("\nPOSTGRES backend interactive interface ");
|
puts("\nPOSTGRES backend interactive interface ");
|
||||||
puts("$Revision: 1.157 $ $Date: 2000/05/31 00:28:31 $\n");
|
puts("$Revision: 1.158 $ $Date: 2000/06/04 01:44:33 $\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1422,7 +1423,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
PS_SET_STATUS("idle");
|
set_ps_display("idle");
|
||||||
|
|
||||||
/* XXX this could be moved after ReadCommand below to get more
|
/* XXX this could be moved after ReadCommand below to get more
|
||||||
* sensical behaviour */
|
* sensical behaviour */
|
||||||
@ -1565,7 +1566,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
|
|||||||
{
|
{
|
||||||
if (DebugLvl >= 1)
|
if (DebugLvl >= 1)
|
||||||
elog(DEBUG, "CommitTransactionCommand");
|
elog(DEBUG, "CommitTransactionCommand");
|
||||||
PS_SET_STATUS("commit");
|
set_ps_display("commit");
|
||||||
CommitTransactionCommand();
|
CommitTransactionCommand();
|
||||||
#ifdef SHOW_MEMORY_STATS
|
#ifdef SHOW_MEMORY_STATS
|
||||||
/* print global-context stats at each commit for leak tracking */
|
/* print global-context stats at each commit for leak tracking */
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.30 2000/01/26 05:57:07 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.31 2000/06/04 01:44:33 petere Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -204,7 +204,7 @@ ProcessQueryDesc(QueryDesc *queryDesc, Node *limoffset, Node *limcount)
|
|||||||
plan = queryDesc->plantree;
|
plan = queryDesc->plantree;
|
||||||
|
|
||||||
operation = queryDesc->operation;
|
operation = queryDesc->operation;
|
||||||
PS_SET_STATUS(tag = CreateOperationTag(operation));
|
set_ps_display(tag = CreateOperationTag(operation));
|
||||||
dest = queryDesc->dest;
|
dest = queryDesc->dest;
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.88 2000/05/11 03:54:18 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.89 2000/06/04 01:44:33 petere Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -92,18 +92,18 @@ ProcessUtility(Node *parsetree,
|
|||||||
switch (stmt->command)
|
switch (stmt->command)
|
||||||
{
|
{
|
||||||
case BEGIN_TRANS:
|
case BEGIN_TRANS:
|
||||||
PS_SET_STATUS(commandTag = "BEGIN");
|
set_ps_display(commandTag = "BEGIN");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
BeginTransactionBlock();
|
BeginTransactionBlock();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case COMMIT:
|
case COMMIT:
|
||||||
PS_SET_STATUS(commandTag = "COMMIT");
|
set_ps_display(commandTag = "COMMIT");
|
||||||
EndTransactionBlock();
|
EndTransactionBlock();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ROLLBACK:
|
case ROLLBACK:
|
||||||
PS_SET_STATUS(commandTag = "ROLLBACK");
|
set_ps_display(commandTag = "ROLLBACK");
|
||||||
UserAbortTransactionBlock();
|
UserAbortTransactionBlock();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -118,7 +118,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
ClosePortalStmt *stmt = (ClosePortalStmt *) parsetree;
|
ClosePortalStmt *stmt = (ClosePortalStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "CLOSE");
|
set_ps_display(commandTag = "CLOSE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
PerformPortalClose(stmt->portalname, dest);
|
PerformPortalClose(stmt->portalname, dest);
|
||||||
@ -132,7 +132,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
bool forward;
|
bool forward;
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = (stmt->ismove) ? "MOVE" : "FETCH");
|
set_ps_display(commandTag = (stmt->ismove) ? "MOVE" : "FETCH");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
SetQuerySnapshot();
|
SetQuerySnapshot();
|
||||||
@ -155,7 +155,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
case T_CreateStmt:
|
case T_CreateStmt:
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
DefineRelation((CreateStmt *) parsetree, RELKIND_RELATION);
|
DefineRelation((CreateStmt *) parsetree, RELKIND_RELATION);
|
||||||
@ -167,7 +167,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
List *args = stmt->relNames;
|
List *args = stmt->relNames;
|
||||||
List *arg;
|
List *arg;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "DROP");
|
set_ps_display(commandTag = "DROP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
/* check as much as we can before we start dropping ... */
|
/* check as much as we can before we start dropping ... */
|
||||||
@ -209,7 +209,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
Relation rel;
|
Relation rel;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "TRUNCATE");
|
set_ps_display(commandTag = "TRUNCATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
relname = ((TruncateStmt *) parsetree)->relName;
|
relname = ((TruncateStmt *) parsetree)->relName;
|
||||||
@ -239,7 +239,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
|
|
||||||
statement = ((CommentStmt *) parsetree);
|
statement = ((CommentStmt *) parsetree);
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "COMMENT");
|
set_ps_display(commandTag = "COMMENT");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
CommentObject(statement->objtype, statement->objname,
|
CommentObject(statement->objtype, statement->objname,
|
||||||
statement->objproperty, statement->objlist,
|
statement->objproperty, statement->objlist,
|
||||||
@ -253,7 +253,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
CopyStmt *stmt = (CopyStmt *) parsetree;
|
CopyStmt *stmt = (CopyStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "COPY");
|
set_ps_display(commandTag = "COPY");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
if (stmt->direction != FROM)
|
if (stmt->direction != FROM)
|
||||||
@ -282,7 +282,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
RenameStmt *stmt = (RenameStmt *) parsetree;
|
RenameStmt *stmt = (RenameStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "ALTER");
|
set_ps_display(commandTag = "ALTER");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
relname = stmt->relname;
|
relname = stmt->relname;
|
||||||
@ -336,7 +336,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
AlterTableStmt *stmt = (AlterTableStmt *) parsetree;
|
AlterTableStmt *stmt = (AlterTableStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "ALTER");
|
set_ps_display(commandTag = "ALTER");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -375,7 +375,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
AclItem *aip;
|
AclItem *aip;
|
||||||
unsigned modechg;
|
unsigned modechg;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "CHANGE");
|
set_ps_display(commandTag = "CHANGE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
aip = stmt->aclitem;
|
aip = stmt->aclitem;
|
||||||
@ -411,7 +411,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
DefineStmt *stmt = (DefineStmt *) parsetree;
|
DefineStmt *stmt = (DefineStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
switch (stmt->defType)
|
switch (stmt->defType)
|
||||||
@ -435,14 +435,14 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
ViewStmt *stmt = (ViewStmt *) parsetree;
|
ViewStmt *stmt = (ViewStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
DefineView(stmt->viewname, stmt->query); /* retrieve parsetree */
|
DefineView(stmt->viewname, stmt->query); /* retrieve parsetree */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_ProcedureStmt: /* CREATE FUNCTION */
|
case T_ProcedureStmt: /* CREATE FUNCTION */
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
CreateFunction((ProcedureStmt *) parsetree, dest); /* everything */
|
CreateFunction((ProcedureStmt *) parsetree, dest); /* everything */
|
||||||
break;
|
break;
|
||||||
@ -451,7 +451,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
IndexStmt *stmt = (IndexStmt *) parsetree;
|
IndexStmt *stmt = (IndexStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
DefineIndex(stmt->relname, /* relation name */
|
DefineIndex(stmt->relname, /* relation name */
|
||||||
stmt->idxname, /* index name */
|
stmt->idxname, /* index name */
|
||||||
@ -476,14 +476,14 @@ ProcessUtility(Node *parsetree,
|
|||||||
if (aclcheck_result != ACLCHECK_OK)
|
if (aclcheck_result != ACLCHECK_OK)
|
||||||
elog(ERROR, "%s: %s", relname, aclcheck_error_strings[aclcheck_result]);
|
elog(ERROR, "%s: %s", relname, aclcheck_error_strings[aclcheck_result]);
|
||||||
#endif
|
#endif
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
DefineQueryRewrite(stmt);
|
DefineQueryRewrite(stmt);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_CreateSeqStmt:
|
case T_CreateSeqStmt:
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
DefineSequence((CreateSeqStmt *) parsetree);
|
DefineSequence((CreateSeqStmt *) parsetree);
|
||||||
@ -493,7 +493,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
ExtendStmt *stmt = (ExtendStmt *) parsetree;
|
ExtendStmt *stmt = (ExtendStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "EXTEND");
|
set_ps_display(commandTag = "EXTEND");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
ExtendIndex(stmt->idxname, /* index name */
|
ExtendIndex(stmt->idxname, /* index name */
|
||||||
@ -506,7 +506,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
RemoveStmt *stmt = (RemoveStmt *) parsetree;
|
RemoveStmt *stmt = (RemoveStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "DROP");
|
set_ps_display(commandTag = "DROP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
switch (stmt->removeType)
|
switch (stmt->removeType)
|
||||||
@ -568,7 +568,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
RemoveAggrStmt *stmt = (RemoveAggrStmt *) parsetree;
|
RemoveAggrStmt *stmt = (RemoveAggrStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "DROP");
|
set_ps_display(commandTag = "DROP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
RemoveAggregate(stmt->aggname, stmt->aggtype);
|
RemoveAggregate(stmt->aggname, stmt->aggtype);
|
||||||
}
|
}
|
||||||
@ -578,7 +578,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
RemoveFuncStmt *stmt = (RemoveFuncStmt *) parsetree;
|
RemoveFuncStmt *stmt = (RemoveFuncStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "DROP");
|
set_ps_display(commandTag = "DROP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
RemoveFunction(stmt->funcname,
|
RemoveFunction(stmt->funcname,
|
||||||
length(stmt->args),
|
length(stmt->args),
|
||||||
@ -592,7 +592,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
char *type1 = (char *) NULL;
|
char *type1 = (char *) NULL;
|
||||||
char *type2 = (char *) NULL;
|
char *type2 = (char *) NULL;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "DROP");
|
set_ps_display(commandTag = "DROP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
if (lfirst(stmt->args) != NULL)
|
if (lfirst(stmt->args) != NULL)
|
||||||
@ -611,7 +611,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
CreatedbStmt *stmt = (CreatedbStmt *) parsetree;
|
CreatedbStmt *stmt = (CreatedbStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "CREATE DATABASE");
|
set_ps_display(commandTag = "CREATE DATABASE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
createdb(stmt->dbname, stmt->dbpath, stmt->encoding);
|
createdb(stmt->dbname, stmt->dbpath, stmt->encoding);
|
||||||
}
|
}
|
||||||
@ -621,7 +621,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
DropdbStmt *stmt = (DropdbStmt *) parsetree;
|
DropdbStmt *stmt = (DropdbStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "DROP DATABASE");
|
set_ps_display(commandTag = "DROP DATABASE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
dropdb(stmt->dbname);
|
dropdb(stmt->dbname);
|
||||||
}
|
}
|
||||||
@ -632,7 +632,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
NotifyStmt *stmt = (NotifyStmt *) parsetree;
|
NotifyStmt *stmt = (NotifyStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "NOTIFY");
|
set_ps_display(commandTag = "NOTIFY");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
Async_Notify(stmt->relname);
|
Async_Notify(stmt->relname);
|
||||||
@ -643,7 +643,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
ListenStmt *stmt = (ListenStmt *) parsetree;
|
ListenStmt *stmt = (ListenStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "LISTEN");
|
set_ps_display(commandTag = "LISTEN");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
Async_Listen(stmt->relname, MyProcPid);
|
Async_Listen(stmt->relname, MyProcPid);
|
||||||
@ -654,7 +654,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
UnlistenStmt *stmt = (UnlistenStmt *) parsetree;
|
UnlistenStmt *stmt = (UnlistenStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "UNLISTEN");
|
set_ps_display(commandTag = "UNLISTEN");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
Async_Unlisten(stmt->relname, MyProcPid);
|
Async_Unlisten(stmt->relname, MyProcPid);
|
||||||
@ -669,7 +669,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
LoadStmt *stmt = (LoadStmt *) parsetree;
|
LoadStmt *stmt = (LoadStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "LOAD");
|
set_ps_display(commandTag = "LOAD");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
closeAllVfds(); /* probably not necessary... */
|
closeAllVfds(); /* probably not necessary... */
|
||||||
@ -681,7 +681,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
ClusterStmt *stmt = (ClusterStmt *) parsetree;
|
ClusterStmt *stmt = (ClusterStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "CLUSTER");
|
set_ps_display(commandTag = "CLUSTER");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
cluster(stmt->relname, stmt->indexname);
|
cluster(stmt->relname, stmt->indexname);
|
||||||
@ -689,7 +689,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case T_VacuumStmt:
|
case T_VacuumStmt:
|
||||||
PS_SET_STATUS(commandTag = "VACUUM");
|
set_ps_display(commandTag = "VACUUM");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
vacuum(((VacuumStmt *) parsetree)->vacrel,
|
vacuum(((VacuumStmt *) parsetree)->vacrel,
|
||||||
((VacuumStmt *) parsetree)->verbose,
|
((VacuumStmt *) parsetree)->verbose,
|
||||||
@ -701,7 +701,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
ExplainStmt *stmt = (ExplainStmt *) parsetree;
|
ExplainStmt *stmt = (ExplainStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "EXPLAIN");
|
set_ps_display(commandTag = "EXPLAIN");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
ExplainQuery(stmt->query, stmt->verbose, dest);
|
ExplainQuery(stmt->query, stmt->verbose, dest);
|
||||||
@ -717,7 +717,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
RecipeStmt *stmt = (RecipeStmt *) parsetree;
|
RecipeStmt *stmt = (RecipeStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "EXECUTE RECIPE");
|
set_ps_display(commandTag = "EXECUTE RECIPE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
beginRecipe(stmt);
|
beginRecipe(stmt);
|
||||||
}
|
}
|
||||||
@ -732,7 +732,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
VariableSetStmt *n = (VariableSetStmt *) parsetree;
|
VariableSetStmt *n = (VariableSetStmt *) parsetree;
|
||||||
|
|
||||||
SetPGVariable(n->name, n->value);
|
SetPGVariable(n->name, n->value);
|
||||||
PS_SET_STATUS(commandTag = "SET VARIABLE");
|
set_ps_display(commandTag = "SET VARIABLE");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -741,7 +741,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
VariableShowStmt *n = (VariableShowStmt *) parsetree;
|
VariableShowStmt *n = (VariableShowStmt *) parsetree;
|
||||||
|
|
||||||
GetPGVariable(n->name);
|
GetPGVariable(n->name);
|
||||||
PS_SET_STATUS(commandTag = "SHOW VARIABLE");
|
set_ps_display(commandTag = "SHOW VARIABLE");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -750,7 +750,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
VariableResetStmt *n = (VariableResetStmt *) parsetree;
|
VariableResetStmt *n = (VariableResetStmt *) parsetree;
|
||||||
|
|
||||||
ResetPGVariable(n->name);
|
ResetPGVariable(n->name);
|
||||||
PS_SET_STATUS(commandTag = "RESET VARIABLE");
|
set_ps_display(commandTag = "RESET VARIABLE");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -758,14 +758,14 @@ ProcessUtility(Node *parsetree,
|
|||||||
* ******************************** TRIGGER statements *******************************
|
* ******************************** TRIGGER statements *******************************
|
||||||
*/
|
*/
|
||||||
case T_CreateTrigStmt:
|
case T_CreateTrigStmt:
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
CreateTrigger((CreateTrigStmt *) parsetree);
|
CreateTrigger((CreateTrigStmt *) parsetree);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_DropTrigStmt:
|
case T_DropTrigStmt:
|
||||||
PS_SET_STATUS(commandTag = "DROP");
|
set_ps_display(commandTag = "DROP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
DropTrigger((DropTrigStmt *) parsetree);
|
DropTrigger((DropTrigStmt *) parsetree);
|
||||||
@ -775,14 +775,14 @@ ProcessUtility(Node *parsetree,
|
|||||||
* ************* PROCEDURAL LANGUAGE statements *****************
|
* ************* PROCEDURAL LANGUAGE statements *****************
|
||||||
*/
|
*/
|
||||||
case T_CreatePLangStmt:
|
case T_CreatePLangStmt:
|
||||||
PS_SET_STATUS(commandTag = "CREATE");
|
set_ps_display(commandTag = "CREATE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
CreateProceduralLanguage((CreatePLangStmt *) parsetree);
|
CreateProceduralLanguage((CreatePLangStmt *) parsetree);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_DropPLangStmt:
|
case T_DropPLangStmt:
|
||||||
PS_SET_STATUS(commandTag = "DROP");
|
set_ps_display(commandTag = "DROP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
DropProceduralLanguage((DropPLangStmt *) parsetree);
|
DropProceduralLanguage((DropPLangStmt *) parsetree);
|
||||||
@ -793,56 +793,56 @@ ProcessUtility(Node *parsetree,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
case T_CreateUserStmt:
|
case T_CreateUserStmt:
|
||||||
PS_SET_STATUS(commandTag = "CREATE USER");
|
set_ps_display(commandTag = "CREATE USER");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
CreateUser((CreateUserStmt *) parsetree);
|
CreateUser((CreateUserStmt *) parsetree);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_AlterUserStmt:
|
case T_AlterUserStmt:
|
||||||
PS_SET_STATUS(commandTag = "ALTER USER");
|
set_ps_display(commandTag = "ALTER USER");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
AlterUser((AlterUserStmt *) parsetree);
|
AlterUser((AlterUserStmt *) parsetree);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_DropUserStmt:
|
case T_DropUserStmt:
|
||||||
PS_SET_STATUS(commandTag = "DROP USER");
|
set_ps_display(commandTag = "DROP USER");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
DropUser((DropUserStmt *) parsetree);
|
DropUser((DropUserStmt *) parsetree);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_LockStmt:
|
case T_LockStmt:
|
||||||
PS_SET_STATUS(commandTag = "LOCK TABLE");
|
set_ps_display(commandTag = "LOCK TABLE");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
LockTableCommand((LockStmt *) parsetree);
|
LockTableCommand((LockStmt *) parsetree);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_ConstraintsSetStmt:
|
case T_ConstraintsSetStmt:
|
||||||
PS_SET_STATUS(commandTag = "SET CONSTRAINTS");
|
set_ps_display(commandTag = "SET CONSTRAINTS");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
DeferredTriggerSetState((ConstraintsSetStmt *) parsetree);
|
DeferredTriggerSetState((ConstraintsSetStmt *) parsetree);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_CreateGroupStmt:
|
case T_CreateGroupStmt:
|
||||||
PS_SET_STATUS(commandTag = "CREATE GROUP");
|
set_ps_display(commandTag = "CREATE GROUP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
CreateGroup((CreateGroupStmt *) parsetree);
|
CreateGroup((CreateGroupStmt *) parsetree);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_AlterGroupStmt:
|
case T_AlterGroupStmt:
|
||||||
PS_SET_STATUS(commandTag = "ALTER GROUP");
|
set_ps_display(commandTag = "ALTER GROUP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
AlterGroup((AlterGroupStmt *) parsetree, "ALTER GROUP");
|
AlterGroup((AlterGroupStmt *) parsetree, "ALTER GROUP");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_DropGroupStmt:
|
case T_DropGroupStmt:
|
||||||
PS_SET_STATUS(commandTag = "DROP GROUP");
|
set_ps_display(commandTag = "DROP GROUP");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
DropGroup((DropGroupStmt *) parsetree);
|
DropGroup((DropGroupStmt *) parsetree);
|
||||||
@ -852,7 +852,7 @@ ProcessUtility(Node *parsetree,
|
|||||||
{
|
{
|
||||||
ReindexStmt *stmt = (ReindexStmt *) parsetree;
|
ReindexStmt *stmt = (ReindexStmt *) parsetree;
|
||||||
|
|
||||||
PS_SET_STATUS(commandTag = "REINDEX");
|
set_ps_display(commandTag = "REINDEX");
|
||||||
CHECK_IF_ABORTED();
|
CHECK_IF_ABORTED();
|
||||||
|
|
||||||
switch (stmt->reindexType)
|
switch (stmt->reindexType)
|
||||||
|
@ -4,14 +4,14 @@
|
|||||||
# Makefile for utils/misc
|
# Makefile for utils/misc
|
||||||
#
|
#
|
||||||
# IDENTIFICATION
|
# IDENTIFICATION
|
||||||
# $Header: /cvsroot/pgsql/src/backend/utils/misc/Makefile,v 1.15 2000/06/01 14:52:25 tgl Exp $
|
# $Header: /cvsroot/pgsql/src/backend/utils/misc/Makefile,v 1.16 2000/06/04 01:44:34 petere Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
SRCDIR = ../../..
|
SRCDIR = ../../..
|
||||||
include $(SRCDIR)/Makefile.global
|
include $(SRCDIR)/Makefile.global
|
||||||
|
|
||||||
OBJS = database.o superuser.o guc.o guc-file.o
|
OBJS = database.o superuser.o guc.o guc-file.o ps_status.o
|
||||||
|
|
||||||
all: SUBSYS.o
|
all: SUBSYS.o
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright 2000 by PostgreSQL Global Development Group
|
* Copyright 2000 by PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/misc/guc-file.l,v 1.2 2000/06/01 16:46:50 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/misc/guc-file.l,v 1.3 2000/06/04 01:44:34 petere Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%{
|
%{
|
||||||
@ -22,6 +22,8 @@
|
|||||||
#include "utils/elog.h"
|
#include "utils/elog.h"
|
||||||
#include "utils/guc.h"
|
#include "utils/guc.h"
|
||||||
|
|
||||||
|
#define CONFIG_FILENAME "postgresql.conf"
|
||||||
|
|
||||||
static unsigned ConfigFileLineno;
|
static unsigned ConfigFileLineno;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -41,6 +43,9 @@ enum {
|
|||||||
#define YY_USER_INIT (ConfigFileLineno = 1)
|
#define YY_USER_INIT (ConfigFileLineno = 1)
|
||||||
#define YY_NO_UNPUT
|
#define YY_NO_UNPUT
|
||||||
|
|
||||||
|
/* prototype, so compiler is happy with our high warnings setting */
|
||||||
|
int GUC_yylex(void);
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
SIGN ("-"|"+")
|
SIGN ("-"|"+")
|
||||||
@ -141,13 +146,13 @@ ProcessConfigFile(GucContext context)
|
|||||||
/*
|
/*
|
||||||
* Open file
|
* Open file
|
||||||
*/
|
*/
|
||||||
filename = malloc(strlen(DataDir) + 16);
|
filename = malloc(strlen(DataDir) + strlen(CONFIG_FILENAME) + 2);
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
{
|
{
|
||||||
elog(elevel, "out of memory");
|
elog(elevel, "out of memory");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sprintf(filename, "%s/configuration", DataDir);
|
sprintf(filename, "%s/" CONFIG_FILENAME, DataDir);
|
||||||
|
|
||||||
fp = AllocateFile(filename, "r");
|
fp = AllocateFile(filename, "r");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
@ -155,7 +160,7 @@ ProcessConfigFile(GucContext context)
|
|||||||
free(filename);
|
free(filename);
|
||||||
/* File not found is fine */
|
/* File not found is fine */
|
||||||
if (errno != ENOENT)
|
if (errno != ENOENT)
|
||||||
elog(elevel, "could not read configuration: %s", strerror(errno));
|
elog(elevel, "could not read configuration file `" CONFIG_FILENAME "': %s", strerror(errno));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,7 +171,7 @@ ProcessConfigFile(GucContext context)
|
|||||||
{
|
{
|
||||||
FreeFile(fp);
|
FreeFile(fp);
|
||||||
free(filename);
|
free(filename);
|
||||||
elog(elevel, "could not stat configuration file: %s", strerror(errno));
|
elog(elevel, "could not stat configuration file `" CONFIG_FILENAME "': %s", strerror(errno));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +179,7 @@ ProcessConfigFile(GucContext context)
|
|||||||
{
|
{
|
||||||
FreeFile(fp);
|
FreeFile(fp);
|
||||||
free(filename);
|
free(filename);
|
||||||
elog(elevel, "configuration file has wrong permissions");
|
elog(elevel, "configuration file `" CONFIG_FILENAME "' has wrong permissions");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,8 +266,7 @@ ProcessConfigFile(GucContext context)
|
|||||||
FreeFile(fp);
|
FreeFile(fp);
|
||||||
free(filename);
|
free(filename);
|
||||||
free_name_value_list(head);
|
free_name_value_list(head);
|
||||||
elog(elevel, "%s:%u: syntax error (ps:%d, t:%d)", filename,
|
elog(elevel, CONFIG_FILENAME ":%u: syntax error", ConfigFileLineno);
|
||||||
ConfigFileLineno, parse_state, token);
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
out_of_memory:
|
out_of_memory:
|
||||||
|
20
src/backend/utils/misc/postgresql.conf.sample
Normal file
20
src/backend/utils/misc/postgresql.conf.sample
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# PostgreSQL configuration file
|
||||||
|
# -----------------------------
|
||||||
|
#
|
||||||
|
# This file consists of lines of the form
|
||||||
|
#
|
||||||
|
# name = value
|
||||||
|
#
|
||||||
|
# (The `=' is optional.) White space is collapsed, comments are
|
||||||
|
# introduced by `#' anywhere on a line. The complete list of option
|
||||||
|
# names and allowed values can be found in the PostgreSQL
|
||||||
|
# documentation. Examples are:
|
||||||
|
|
||||||
|
#log_connections = on
|
||||||
|
#fsync = off
|
||||||
|
#max_backends = 64
|
||||||
|
|
||||||
|
# Any option can also be given as a command line switch to the
|
||||||
|
# postmaster, e.g., `postmaster --log-connections=on'. Some options
|
||||||
|
# can be set at run-time with the `SET' SQL command.
|
254
src/backend/utils/misc/ps_status.c
Normal file
254
src/backend/utils/misc/ps_status.c
Normal file
@ -0,0 +1,254 @@
|
|||||||
|
/*--------------------------------------------------------------------
|
||||||
|
* ps_status.c
|
||||||
|
*
|
||||||
|
* Routines to support changing the ps display of PostgreSQL backends
|
||||||
|
* to contain some useful information. Differs wildly across
|
||||||
|
* platforms.
|
||||||
|
*
|
||||||
|
* $Header: /cvsroot/pgsql/src/backend/utils/misc/ps_status.c,v 1.1 2000/06/04 01:44:34 petere Exp $
|
||||||
|
*
|
||||||
|
* Copyright 2000 by PostgreSQL Global Development Group
|
||||||
|
* various details abducted from various places
|
||||||
|
*--------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "postgres.h"
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_SYS_PSTAT_H
|
||||||
|
# include <sys/pstat.h> /* for HP-UX */
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_MACHINE_VMPARAM_H
|
||||||
|
# include <machine/vmparam.h> /* for old BSD */
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_EXEC_H
|
||||||
|
# include <sys/exec.h> /* for old BSD */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "miscadmin.h"
|
||||||
|
|
||||||
|
#include "utils/ps_status.h"
|
||||||
|
|
||||||
|
extern char **environ;
|
||||||
|
|
||||||
|
|
||||||
|
/*------
|
||||||
|
* Alternative ways of updating ps display:
|
||||||
|
*
|
||||||
|
* PS_USE_SETPROCTITLE
|
||||||
|
* use the function setproctitle(const char *, ...)
|
||||||
|
* (newer BSD systems)
|
||||||
|
* PS_USE_PSTAT
|
||||||
|
* use the pstat(PSTAT_SETCMD, )
|
||||||
|
* (HPUX)
|
||||||
|
* PS_USE_PS_STRINGS
|
||||||
|
* assign PS_STRINGS->ps_argvstr = "string"
|
||||||
|
* (some BSD systems)
|
||||||
|
* PS_USE_CHANCE_ARGV
|
||||||
|
* assign argv[0] = "string"
|
||||||
|
* (some other BSD systems)
|
||||||
|
* PS_USE_CLOBBER_ARGV
|
||||||
|
* write over the argv and environment area
|
||||||
|
* (most SysV-like systems)
|
||||||
|
* PS_USE_NONE
|
||||||
|
* don't update ps display
|
||||||
|
* (This is the default, as it is safest.)
|
||||||
|
*/
|
||||||
|
#if defined(HAVE_SETPROCTITLE)
|
||||||
|
# define PS_USE_SETPROCTITLE
|
||||||
|
#elif defined(HAVE_PSTAT) && defined(PSTAT_SETCMD)
|
||||||
|
# define PS_USE_PSTAT
|
||||||
|
#elif defined(HAVE_PS_STRINGS)
|
||||||
|
# define PS_USE_PS_STRINGS
|
||||||
|
#elif defined(BSD) || defined(__bsdi__) || defined(__hurd__)
|
||||||
|
# define PS_USE_CHANGE_ARGV
|
||||||
|
#elif defined(__linux__) || defined(_AIX4) || defined(_AIX3) || defined(__sgi) || (defined(sun) && !defined(BSD)) || defined(ultrix) || defined(__ksr__) || defined(__osf__) || defined(__QNX__) || defined(__svr4__) || defined(__svr5__)
|
||||||
|
# define PS_USE_CLOBBER_ARGV
|
||||||
|
#else
|
||||||
|
# define PS_USE_NONE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Different systems want the buffer padded differently */
|
||||||
|
#if defined(_AIX3) || defined(__linux__) || defined(__QNX__) || defined(__svr4__)
|
||||||
|
# define PS_PADDING '\0'
|
||||||
|
#else
|
||||||
|
# define PS_PADDING ' '
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PS_USE_CLOBBER_ARGV
|
||||||
|
/* all but one options need a buffer to write their ps line in */
|
||||||
|
#define PS_BUFFER_SIZE 256
|
||||||
|
static char ps_buffer[PS_BUFFER_SIZE];
|
||||||
|
static const size_t ps_buffer_size = PS_BUFFER_SIZE;
|
||||||
|
|
||||||
|
#else /* PS_USE_CLOBBER_ARGV */
|
||||||
|
static char * ps_buffer; /* will point to argv area */
|
||||||
|
static size_t ps_buffer_size; /* space determined at run time */
|
||||||
|
#endif /* PS_USE_CLOBBER_ARGV */
|
||||||
|
|
||||||
|
static size_t ps_buffer_fixed_size; /* size of the constant prefix */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Call this once at backend start.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
init_ps_display(int argc, char *argv[],
|
||||||
|
const char * username, const char * dbname,
|
||||||
|
const char * host_info)
|
||||||
|
{
|
||||||
|
#ifndef PS_USE_NONE
|
||||||
|
Assert(username);
|
||||||
|
Assert(dbname);
|
||||||
|
|
||||||
|
/* no ps display for stand-alone backend */
|
||||||
|
if (!IsUnderPostmaster)
|
||||||
|
return;
|
||||||
|
|
||||||
|
# ifdef PS_USE_CHANGE_ARGV
|
||||||
|
argv[0] = ps_buffer;
|
||||||
|
argv[1] = NULL;
|
||||||
|
# endif /* PS_USE_CHANGE_ARGV */
|
||||||
|
|
||||||
|
# ifdef PS_USE_CLOBBER_ARGV
|
||||||
|
/*
|
||||||
|
* If we're going to overwrite the argv area, count the space.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
char * end_of_area = NULL;
|
||||||
|
char **new_environ;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* check for contiguous argv strings
|
||||||
|
*/
|
||||||
|
for (i = 0; i < argc; i++)
|
||||||
|
if (i == 0 || end_of_area + 1 == argv[i])
|
||||||
|
end_of_area = argv[i] + strlen(argv[i]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* check for contiguous environ strings following argv
|
||||||
|
*/
|
||||||
|
for (i = 0; end_of_area != NULL && environ[i] != NULL; i++)
|
||||||
|
if (end_of_area + 1 == environ[i])
|
||||||
|
end_of_area = environ[i] + strlen(environ[i]);
|
||||||
|
|
||||||
|
if (end_of_area == NULL)
|
||||||
|
{
|
||||||
|
ps_buffer = NULL;
|
||||||
|
ps_buffer_size = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ps_buffer = argv[0];
|
||||||
|
ps_buffer_size = end_of_area - argv[0] - 1;
|
||||||
|
}
|
||||||
|
argv[1] = NULL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* move the environment out of the way
|
||||||
|
*/
|
||||||
|
for (i = 0; environ[i] != NULL; i++)
|
||||||
|
;
|
||||||
|
new_environ = malloc(sizeof (char *) * (i + 1));
|
||||||
|
for (i = 0; environ[i] != NULL; i++)
|
||||||
|
new_environ[i] = strdup(environ[i]);
|
||||||
|
new_environ[i] = NULL;
|
||||||
|
environ = new_environ;
|
||||||
|
}
|
||||||
|
# endif /* PS_USE_CLOBBER_ARGV */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make fixed prefix
|
||||||
|
*/
|
||||||
|
# ifdef PS_USE_SETPROCTITLE
|
||||||
|
/* apparently setproctitle() already adds a `progname:' prefix to
|
||||||
|
* the ps line */
|
||||||
|
snprintf(ps_buffer, ps_buffer_size,
|
||||||
|
"%s %s %s ",
|
||||||
|
username, dbname, host_info);
|
||||||
|
# else
|
||||||
|
snprintf(ps_buffer, ps_buffer_size,
|
||||||
|
"postgres: %s %s %s ",
|
||||||
|
username, dbname, host_info);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
ps_buffer_fixed_size = strlen(ps_buffer);
|
||||||
|
#endif /* not PS_USE_NONE */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Call this to update the ps status display to a fixed prefix plus an
|
||||||
|
* indication of what you're currently doing passed in the argument.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
set_ps_display(const char * value)
|
||||||
|
{
|
||||||
|
/* no ps display for stand-alone backend */
|
||||||
|
if (!IsUnderPostmaster)
|
||||||
|
return;
|
||||||
|
|
||||||
|
#ifndef PS_USE_NONE
|
||||||
|
if (!ps_buffer)
|
||||||
|
return;
|
||||||
|
# ifdef PS_USE_SETPROCTITLE
|
||||||
|
setproctitle("%s%s", ps_buffer, value);
|
||||||
|
|
||||||
|
# else /* not PS_USE_SETPROCTITLE */
|
||||||
|
{
|
||||||
|
size_t vallen = strlen(value);
|
||||||
|
|
||||||
|
strncpy(ps_buffer + ps_buffer_fixed_size, value,
|
||||||
|
ps_buffer_size - ps_buffer_fixed_size);
|
||||||
|
|
||||||
|
if (ps_buffer_fixed_size + vallen >= ps_buffer_size)
|
||||||
|
ps_buffer[ps_buffer_size - 1] = 0;
|
||||||
|
else
|
||||||
|
ps_buffer[ps_buffer_fixed_size + vallen] = 0;
|
||||||
|
|
||||||
|
# ifdef PS_USE_PSTAT
|
||||||
|
{
|
||||||
|
union pstun pst;
|
||||||
|
|
||||||
|
pst.pst_command = ps_buffer;
|
||||||
|
pstat(PSTAT_SETCMD, pst, strlen(ps_buffer), 0, 0);
|
||||||
|
}
|
||||||
|
# endif /* PS_USE_PSTAT */
|
||||||
|
|
||||||
|
# ifdef PS_USE_PS_STRINGS
|
||||||
|
PS_STRINGS->ps_nargvstr = 1;
|
||||||
|
PS_STRINGS->ps_argvstr = ps_buffer;
|
||||||
|
# endif /* PS_USE_PS_STRINGS */
|
||||||
|
|
||||||
|
# ifdef PS_USE_CLOBBER_ARGV
|
||||||
|
{
|
||||||
|
char * cp;
|
||||||
|
/* pad unused memory */
|
||||||
|
for(cp = ps_buffer + ps_buffer_fixed_size + vallen;
|
||||||
|
cp < ps_buffer + ps_buffer_size;
|
||||||
|
cp++)
|
||||||
|
*cp = PS_PADDING;
|
||||||
|
}
|
||||||
|
# endif /* PS_USE_CLOBBER_ARGV */
|
||||||
|
}
|
||||||
|
# endif /* not USE_SETPROCTITLE */
|
||||||
|
#endif /* not PS_USE_NONE */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns what's currently in the ps display, in case someone needs
|
||||||
|
* it.
|
||||||
|
*/
|
||||||
|
const char *
|
||||||
|
get_ps_display(void)
|
||||||
|
{
|
||||||
|
return ps_buffer + ps_buffer_fixed_size;
|
||||||
|
}
|
@ -26,7 +26,7 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
# IDENTIFICATION
|
# IDENTIFICATION
|
||||||
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.92 2000/05/31 00:28:35 petere Exp $
|
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.93 2000/06/04 01:44:35 petere Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -318,10 +318,10 @@ fi
|
|||||||
TEMPLATE="$PGLIB"/local1_template1.bki.source
|
TEMPLATE="$PGLIB"/local1_template1.bki.source
|
||||||
GLOBAL="$PGLIB"/global1.bki.source
|
GLOBAL="$PGLIB"/global1.bki.source
|
||||||
PG_HBA_SAMPLE="$PGLIB"/pg_hba.conf.sample
|
PG_HBA_SAMPLE="$PGLIB"/pg_hba.conf.sample
|
||||||
|
POSTGRESQL_CONF_SAMPLE="$PGLIB"/postgresql.conf.sample
|
||||||
|
|
||||||
TEMPLATE_DESCR="$PGLIB"/local1_template1.description
|
TEMPLATE_DESCR="$PGLIB"/local1_template1.description
|
||||||
GLOBAL_DESCR="$PGLIB"/global1.description
|
GLOBAL_DESCR="$PGLIB"/global1.description
|
||||||
PG_POSTMASTER_OPTS_DEFAULT_SAMPLE="$PGLIB"/postmaster.opts.default.sample
|
|
||||||
|
|
||||||
if [ "$show_setting" -eq 1 ]
|
if [ "$show_setting" -eq 1 ]
|
||||||
then
|
then
|
||||||
@ -339,9 +339,9 @@ then
|
|||||||
echo " TEMPLATE: $TEMPLATE"
|
echo " TEMPLATE: $TEMPLATE"
|
||||||
echo " GLOBAL: $GLOBAL"
|
echo " GLOBAL: $GLOBAL"
|
||||||
echo " PG_HBA_SAMPLE: $PG_HBA_SAMPLE"
|
echo " PG_HBA_SAMPLE: $PG_HBA_SAMPLE"
|
||||||
|
echo " POSTGRESQL_CONF_SAMPLE: $POSTGRESQL_CONF_SAMPLE"
|
||||||
echo " TEMPLATE_DESCR: $TEMPLATE_DESCR"
|
echo " TEMPLATE_DESCR: $TEMPLATE_DESCR"
|
||||||
echo " GLOBAL_DESCR: $GLOBAL_DESCR"
|
echo " GLOBAL_DESCR: $GLOBAL_DESCR"
|
||||||
echo " PG_POSTMASTER_OPTS_DEFAULT_SAMPLE: $PG_POSTMASTER_OPTS_DEFAULT_SAMPLE"
|
|
||||||
echo
|
echo
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
@ -459,7 +459,7 @@ then
|
|||||||
"$PGPATH"/pg_version "$PGDATA" || exit_nicely
|
"$PGPATH"/pg_version "$PGDATA" || exit_nicely
|
||||||
|
|
||||||
cp "$PG_HBA_SAMPLE" "$PGDATA"/pg_hba.conf || exit_nicely
|
cp "$PG_HBA_SAMPLE" "$PGDATA"/pg_hba.conf || exit_nicely
|
||||||
cp "$PG_POSTMASTER_OPTS_DEFAULT_SAMPLE" "$PGDATA"/postmaster.opts.default || exit_nicely
|
cp "$POSTGRESQL_CONF_SAMPLE" "$PGDATA"/postgresql.conf || exit_nicely
|
||||||
|
|
||||||
echo "Adding template1 database to pg_database"
|
echo "Adding template1 database to pg_database"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
# IDENTIFICATION
|
# IDENTIFICATION
|
||||||
# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Makefile,v 1.4 2000/03/08 01:58:18 momjian Exp $
|
# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Makefile,v 1.5 2000/06/04 01:44:36 petere Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -21,7 +21,6 @@ pg_ctl: pg_ctl.sh
|
|||||||
|
|
||||||
install: pg_ctl
|
install: pg_ctl
|
||||||
$(INSTALL) $(INSTL_EXE_OPTS) $+ $(BINDIR)
|
$(INSTALL) $(INSTL_EXE_OPTS) $+ $(BINDIR)
|
||||||
$(INSTALL) $(INSTLOPTS) postmaster.opts.default.sample $(TEMPLATEDIR)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f pg_ctl
|
rm -f pg_ctl
|
||||||
|
@ -1 +0,0 @@
|
|||||||
|
|
965
src/configure
vendored
965
src/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -373,19 +373,6 @@ AC_ARG_WITH(
|
|||||||
)
|
)
|
||||||
export USE_ODBC
|
export USE_ODBC
|
||||||
|
|
||||||
AC_MSG_CHECKING(setproctitle)
|
|
||||||
AC_ARG_WITH(
|
|
||||||
setproctitle,
|
|
||||||
[ --with-setproctitle use setproctitle() (EXPERIMENTAL) ],
|
|
||||||
[
|
|
||||||
case "$withval" in
|
|
||||||
y | ye | yes) USE_SETPROCTITLE=true; AC_MSG_RESULT(enabled) ;;
|
|
||||||
*) USE_SETPROCTITLE=false; AC_MSG_RESULT(disabled) ;;
|
|
||||||
esac
|
|
||||||
],
|
|
||||||
[ USE_SETPROCTITLE=false; AC_MSG_RESULT(disabled) ]
|
|
||||||
)
|
|
||||||
export USE_SETPROCTITLE
|
|
||||||
|
|
||||||
dnl Allow for overriding the default location of the odbcinst.ini
|
dnl Allow for overriding the default location of the odbcinst.ini
|
||||||
dnl file which is normally ${prefix}/share or ${prefix} if this is
|
dnl file which is normally ${prefix}/share or ${prefix} if this is
|
||||||
@ -732,6 +719,7 @@ AC_CHECK_HEADERS(sys/select.h)
|
|||||||
AC_CHECK_HEADERS(termios.h)
|
AC_CHECK_HEADERS(termios.h)
|
||||||
AC_CHECK_HEADERS(unistd.h)
|
AC_CHECK_HEADERS(unistd.h)
|
||||||
AC_CHECK_HEADERS(values.h)
|
AC_CHECK_HEADERS(values.h)
|
||||||
|
AC_CHECK_HEADERS(sys/exec.h sys/pstat.h machine/vmparam.h)
|
||||||
dnl ODBC headers...
|
dnl ODBC headers...
|
||||||
AC_CHECK_HEADERS(sys/param.h pwd.h)
|
AC_CHECK_HEADERS(sys/param.h pwd.h)
|
||||||
dnl
|
dnl
|
||||||
@ -805,11 +793,20 @@ AC_TYPE_SIGNAL
|
|||||||
AC_FUNC_VPRINTF
|
AC_FUNC_VPRINTF
|
||||||
AC_CHECK_FUNCS(memmove sysconf)
|
AC_CHECK_FUNCS(memmove sysconf)
|
||||||
AC_CHECK_FUNCS(sigprocmask waitpid setsid fcvt)
|
AC_CHECK_FUNCS(sigprocmask waitpid setsid fcvt)
|
||||||
|
AC_CHECK_FUNCS(setproctitle pstat)
|
||||||
|
|
||||||
if test "X$USE_SETPROCTITLE" = "Xtrue"
|
AC_MSG_CHECKING(for PS_STRINGS)
|
||||||
then
|
AC_TRY_LINK(
|
||||||
AC_CHECK_FUNCS(setproctitle)
|
[#ifdef HAVE_MACHINE_VMPARAM_H
|
||||||
fi
|
# include <machine/vmparam.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_EXEC_H
|
||||||
|
# include <sys/exec.h>
|
||||||
|
#endif],
|
||||||
|
[PS_STRINGS->ps_nargvstr = 1;
|
||||||
|
PS_STRINGS->ps_argvstr = "foo";],
|
||||||
|
[AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PS_STRINGS)],
|
||||||
|
AC_MSG_RESULT(no))
|
||||||
|
|
||||||
AC_CHECK_FUNCS(fpclass fp_class fp_class_d class)
|
AC_CHECK_FUNCS(fpclass fp_class fp_class_d class)
|
||||||
dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
|
dnl We use our snprintf.c emulation if either snprintf() or vsnprintf()
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* or in config.h afterwards. Of course, if you edit config.h, then your
|
* or in config.h afterwards. Of course, if you edit config.h, then your
|
||||||
* changes will be overwritten the next time you run configure.
|
* changes will be overwritten the next time you run configure.
|
||||||
*
|
*
|
||||||
* $Id: config.h.in,v 1.114 2000/05/31 00:28:36 petere Exp $
|
* $Id: config.h.in,v 1.115 2000/06/04 01:44:36 petere Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
#ifndef CONFIG_H
|
||||||
@ -276,6 +276,15 @@
|
|||||||
/* Set to 1 if you have <values.h> */
|
/* Set to 1 if you have <values.h> */
|
||||||
#undef HAVE_VALUES_H
|
#undef HAVE_VALUES_H
|
||||||
|
|
||||||
|
/* Set to 1 if you have <sys/exec.h> */
|
||||||
|
#undef HAVE_SYS_EXEC_H
|
||||||
|
|
||||||
|
/* Set to 1 if you have <sys/pstat.h> */
|
||||||
|
#undef HAVE_SYS_PSTAT_H
|
||||||
|
|
||||||
|
/* Set to 1 if you have <machine/vmparam.h> */
|
||||||
|
#undef HAVE_MACHINE_VMPARAM_H
|
||||||
|
|
||||||
/* Define if you have the ANSI C header files. */
|
/* Define if you have the ANSI C header files. */
|
||||||
#undef STDC_HEADERS
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
@ -285,6 +294,12 @@
|
|||||||
/* Define if you have the setproctitle function. */
|
/* Define if you have the setproctitle function. */
|
||||||
#undef HAVE_SETPROCTITLE
|
#undef HAVE_SETPROCTITLE
|
||||||
|
|
||||||
|
/* Define if you have the pstat function. */
|
||||||
|
#undef HAVE_PSTAT
|
||||||
|
|
||||||
|
/* Define if the PS_STRINGS thing exists. */
|
||||||
|
#undef HAVE_PS_STRINGS
|
||||||
|
|
||||||
/* Define if you have the stricmp function. */
|
/* Define if you have the stricmp function. */
|
||||||
#undef HAVE_STRICMP
|
#undef HAVE_STRICMP
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: libpq.h,v 1.36 2000/04/12 17:16:36 momjian Exp $
|
* $Id: libpq.h,v 1.37 2000/06/04 01:44:37 petere Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -236,7 +236,7 @@ extern int32 pqtest(struct varlena * vlena);
|
|||||||
/*
|
/*
|
||||||
* prototypes for functions in pqcomm.c
|
* prototypes for functions in pqcomm.c
|
||||||
*/
|
*/
|
||||||
extern int StreamServerPort(char *hostName, unsigned short portName, int *fdP);
|
extern int StreamServerPort(int family, unsigned short portName, int *fdP);
|
||||||
extern int StreamConnection(int server_fd, Port *port);
|
extern int StreamConnection(int server_fd, Port *port);
|
||||||
extern void StreamClose(int sock);
|
extern void StreamClose(int sock);
|
||||||
extern void pq_init(void);
|
extern void pq_init(void);
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
*
|
*
|
||||||
* ps_status.h
|
* ps_status.h
|
||||||
*
|
*
|
||||||
* Defines macros to show backend status on the ps status line.
|
* Declarations for backend/utils/misc/ps_status.c
|
||||||
* Unfortunately this is system dpendent.
|
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -11,98 +10,17 @@
|
|||||||
#ifndef PS_STATUS_H
|
#ifndef PS_STATUS_H
|
||||||
#define PS_STATUS_H
|
#define PS_STATUS_H
|
||||||
|
|
||||||
#ifdef HAVE_SETPROCTITLE
|
#include "libpq/libpq-be.h"
|
||||||
|
|
||||||
extern char Ps_status_buffer[];
|
void
|
||||||
|
init_ps_display(int argc, char *argv[],
|
||||||
|
const char * username, const char * dbname,
|
||||||
|
const char * host_info);
|
||||||
|
|
||||||
#undef PS_DEFINE_BUFFER
|
void
|
||||||
|
set_ps_display(const char * value);
|
||||||
|
|
||||||
#define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname) \
|
const char *
|
||||||
do { \
|
get_ps_display(void);
|
||||||
sprintf(Ps_status_buffer, "%s %s %s %s", execname, hostname, username, dbname); \
|
|
||||||
setproctitle("%s", Ps_status_buffer); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PS_CLEAR_STATUS() \
|
|
||||||
do { setproctitle("%s", Ps_status_buffer); } while (0)
|
|
||||||
|
|
||||||
#define PS_SET_STATUS(status) \
|
|
||||||
do { setproctitle("%s %s", Ps_status_buffer, (status)); } while (0)
|
|
||||||
|
|
||||||
#define PS_STATUS (Ps_status_buffer)
|
|
||||||
|
|
||||||
#elif defined(linux)
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
extern char *ps_status_buffer;
|
|
||||||
|
|
||||||
#define PS_DEFINE_BUFFER \
|
|
||||||
char *ps_status_buffer = NULL
|
|
||||||
|
|
||||||
#define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname) \
|
|
||||||
do { \
|
|
||||||
int i; \
|
|
||||||
for (i = 0; i < (argc); i++) { \
|
|
||||||
memset((argv)[i], 0, strlen((argv)[i])); \
|
|
||||||
} \
|
|
||||||
ps_status_buffer = (argv)[0]; \
|
|
||||||
sprintf(ps_status_buffer, "%s %s %s %s ", execname, username, hostname, dbname); \
|
|
||||||
ps_status_buffer += strlen(ps_status_buffer); \
|
|
||||||
ps_status_buffer[0] = '\0'; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PS_CLEAR_STATUS() \
|
|
||||||
do { \
|
|
||||||
if (ps_status_buffer) \
|
|
||||||
memset(ps_status_buffer, 0, strlen(ps_status_buffer)); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PS_SET_STATUS(status) \
|
|
||||||
do { \
|
|
||||||
if (ps_status_buffer) \
|
|
||||||
{ \
|
|
||||||
PS_CLEAR_STATUS(); \
|
|
||||||
strcpy(ps_status_buffer, status); \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PS_STATUS (ps_status_buffer ? ps_status_buffer : "")
|
|
||||||
|
|
||||||
#else /* !linux */
|
|
||||||
|
|
||||||
extern char Ps_status_buffer[];
|
|
||||||
|
|
||||||
#undef PS_DEFINE_BUFFER
|
|
||||||
|
|
||||||
#define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname) \
|
|
||||||
do { \
|
|
||||||
int i; \
|
|
||||||
Assert(argc >= 5); \
|
|
||||||
argv[0] = execname; \
|
|
||||||
argv[1] = hostname; \
|
|
||||||
argv[2] = username; \
|
|
||||||
argv[3] = dbname; \
|
|
||||||
argv[4] = Ps_status_buffer; \
|
|
||||||
for (i = 5; i < argc; i++) \
|
|
||||||
argv[i] = ""; /* blank them */ \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PS_CLEAR_STATUS() \
|
|
||||||
do { Ps_status_buffer[0] = '\0'; } while (0)
|
|
||||||
|
|
||||||
#define PS_SET_STATUS(status) \
|
|
||||||
do { strcpy(Ps_status_buffer, (status)); } while (0)
|
|
||||||
|
|
||||||
#define PS_STATUS (Ps_status_buffer)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NO_PS_STATUS
|
|
||||||
#undef PS_DEFINE_BUFFER
|
|
||||||
#define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname)
|
|
||||||
#define PS_CLEAR_STATUS()
|
|
||||||
#define PS_SET_STATUS(status) do { if ((status)); } while (0)
|
|
||||||
#define PS_STATUS ""
|
|
||||||
#endif /* !linux */
|
|
||||||
|
|
||||||
#endif /* PS_STATUS_H */
|
#endif /* PS_STATUS_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user