summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan2007-08-02 23:39:45 +0000
committerAndrew Dunstan2007-08-02 23:39:45 +0000
commitbc2fb01c5611432158c0eb6eac347eccc1690b20 (patch)
tree3a9b233176203147f0c36e5005c429e728c967d9
parent435a065143567ac382f1451c299d6f20641b73af (diff)
Move session_start out of MyProcPort stucture and make it a global called MyStartTime,
so that we will be able to create a cookie for all processes for CSVlogs. It is set wherever MyProcPid is set. Take the opportunity to remove the now unnecessary session-only restriction on the %s and %c escapes in log_line_prefix.
-rw-r--r--doc/src/sgml/config.sgml4
-rw-r--r--src/backend/bootstrap/bootstrap.c2
-rw-r--r--src/backend/postmaster/autovacuum.c6
-rw-r--r--src/backend/postmaster/pgarch.c2
-rw-r--r--src/backend/postmaster/pgstat.c2
-rw-r--r--src/backend/postmaster/postmaster.c10
-rw-r--r--src/backend/postmaster/syslogger.c2
-rw-r--r--src/backend/tcop/postgres.c2
-rw-r--r--src/backend/utils/error/elog.c10
-rw-r--r--src/backend/utils/init/globals.c1
-rw-r--r--src/include/libpq/libpq-be.h1
-rw-r--r--src/include/miscadmin.h3
12 files changed, 33 insertions, 12 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 5eb927dbe0..4099fbc32b 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -2900,7 +2900,7 @@ SELECT * FROM parent WHERE key = 2400;
<row>
<entry><literal>%c</literal></entry>
<entry>Session ID: see below</entry>
- <entry>yes</entry>
+ <entry>no</entry>
</row>
<row>
<entry><literal>%l</literal></entry>
@@ -2910,7 +2910,7 @@ SELECT * FROM parent WHERE key = 2400;
<row>
<entry><literal>%s</literal></entry>
<entry>Session start time stamp</entry>
- <entry>yes</entry>
+ <entry>no</entry>
</row>
<row>
<entry><literal>%x</literal></entry>
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 28694bc374..db72935c6a 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -213,6 +213,8 @@ AuxiliaryProcessMain(int argc, char *argv[])
*/
MyProcPid = getpid();
+ MyStartTime = time(NULL);
+
/*
* Fire up essential subsystems: error and memory management
*
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index 2477685037..121d40b0ac 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -385,6 +385,9 @@ AutoVacLauncherMain(int argc, char *argv[])
/* reset MyProcPid */
MyProcPid = getpid();
+ /* record Start Time for logging */
+ MyStartTime = time(NULL);
+
/* Identify myself via ps */
init_ps_display("autovacuum launcher process", "", "", "");
@@ -1403,6 +1406,9 @@ AutoVacWorkerMain(int argc, char *argv[])
/* reset MyProcPid */
MyProcPid = getpid();
+ /* record Start Time for logging */
+ MyStartTime = time(NULL);
+
/* Identify myself via ps */
init_ps_display("autovacuum worker process", "", "", "");
diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c
index dbb6dd0244..a2b4f47ab9 100644
--- a/src/backend/postmaster/pgarch.c
+++ b/src/backend/postmaster/pgarch.c
@@ -223,6 +223,8 @@ PgArchiverMain(int argc, char *argv[])
MyProcPid = getpid(); /* reset MyProcPid */
+ MyStartTime = time(NULL); /* record Start Time for logging */
+
/*
* If possible, make this process a group leader, so that the postmaster
* can signal any child processes too.
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index d128381937..45795d5619 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -2168,6 +2168,8 @@ PgstatCollectorMain(int argc, char *argv[])
MyProcPid = getpid(); /* reset MyProcPid */
+ MyStartTime = time(NULL); /* record Start Time for logging */
+
/*
* If possible, make this process a group leader, so that the postmaster
* can signal any child processes too. (pgstat probably never has
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 1f79ea47cc..59830d0bbe 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -386,6 +386,8 @@ PostmasterMain(int argc, char *argv[])
MyProcPid = PostmasterPid = getpid();
+ MyStartTime = time(NULL);
+
IsPostmasterEnvironment = true;
/*
@@ -1103,6 +1105,8 @@ pmdaemonize(void)
MyProcPid = PostmasterPid = getpid(); /* reset PID vars to child */
+ MyStartTime = time(NULL);
+
/* GH: If there's no setsid(), we hopefully don't need silent mode.
* Until there's a better solution.
*/
@@ -2661,6 +2665,8 @@ BackendStartup(Port *port)
MyProcPid = getpid(); /* reset MyProcPid */
+ MyStartTime = time(NULL);
+
/* We don't want the postmaster's proc_exit() handlers */
on_exit_reset();
@@ -2803,7 +2809,7 @@ BackendInitialize(Port *port)
/* save process start time */
port->SessionStartTime = GetCurrentTimestamp();
- port->session_start = timestamptz_to_time_t(port->SessionStartTime);
+ MyStartTime = timestamptz_to_time_t(port->SessionStartTime);
/* set these to empty in case they are needed before we set them up */
port->remote_host = "";
@@ -3385,6 +3391,8 @@ SubPostmasterMain(int argc, char *argv[])
MyProcPid = getpid(); /* reset MyProcPid */
+ MyStartTime = time(NULL);
+
/* make sure stderr is in binary mode before anything can
* possibly be written to it, in case it's actually the syslogger pipe,
* so the pipe chunking protocol isn't disturbed. Non-logpipe data
diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c
index 2cae0e0109..786a358e40 100644
--- a/src/backend/postmaster/syslogger.c
+++ b/src/backend/postmaster/syslogger.c
@@ -162,6 +162,8 @@ SysLoggerMain(int argc, char *argv[])
MyProcPid = getpid(); /* reset MyProcPid */
+ MyStartTime = time(NULL); /* set our start time in case we call elog */
+
#ifdef EXEC_BACKEND
syslogger_parseArgs(argc, argv);
#endif /* EXEC_BACKEND */
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 8f03d450a7..a9e0d3fb7b 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -2786,6 +2786,8 @@ PostgresMain(int argc, char *argv[], const char *username)
*/
MyProcPid = getpid();
+ MyStartTime = time(NULL);
+
/*
* Fire up essential subsystems: error and memory management
*
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 11d3799717..60f3620c29 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -1485,12 +1485,7 @@ log_line_prefix(StringInfo buf)
}
break;
case 'c':
- if (MyProcPort)
- {
- appendStringInfo(buf, "%lx.%x",
- (long) (MyProcPort->session_start),
- MyProcPid);
- }
+ appendStringInfo(buf, "%lx.%x", (long)(MyStartTime),MyProcPid);
break;
case 'p':
appendStringInfo(buf, "%d", MyProcPid);
@@ -1552,7 +1547,6 @@ log_line_prefix(StringInfo buf)
}
break;
case 's':
- if (MyProcPort)
{
char strfbuf[128];
@@ -1563,7 +1557,7 @@ log_line_prefix(StringInfo buf)
#else
"%Y-%m-%d %H:%M:%S",
#endif
- localtime(&MyProcPort->session_start));
+ localtime(&MyStartTime));
appendStringInfoString(buf, strfbuf);
}
break;
diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c
index 1d755dbca7..1e2ec36e7b 100644
--- a/src/backend/utils/init/globals.c
+++ b/src/backend/utils/init/globals.c
@@ -33,6 +33,7 @@ volatile uint32 InterruptHoldoffCount = 0;
volatile uint32 CritSectionCount = 0;
int MyProcPid;
+time_t MyStartTime;
struct Port *MyProcPort;
long MyCancelKey;
diff --git a/src/include/libpq/libpq-be.h b/src/include/libpq/libpq-be.h
index 8d69641472..1744e80202 100644
--- a/src/include/libpq/libpq-be.h
+++ b/src/include/libpq/libpq-be.h
@@ -130,7 +130,6 @@ typedef struct Port
* other members of this struct, we may as well keep it here.
*/
TimestampTz SessionStartTime; /* backend start time */
- time_t session_start; /* same, in time_t format */
/*
* TCP keepalive settings.
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index ee203163d0..0a4daf25d7 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -23,6 +23,8 @@
#ifndef MISCADMIN_H
#define MISCADMIN_H
+#include <time.h> /* for time_t */
+
#define PG_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n"
@@ -132,6 +134,7 @@ extern int MaxBackends;
extern int MaxConnections;
extern PGDLLIMPORT int MyProcPid;
+extern PGDLLIMPORT time_t MyStartTime;
extern PGDLLIMPORT struct Port *MyProcPort;
extern long MyCancelKey;