Alvaro Herrera wrote:

My original thought was that it needed to be set anywhere MyProcPid was set. That still seems to make sense, it just looks like I missed a few places, which I should fix.

+1 because of cleanliness, even if some calls turn out to be redundant.
That was in fact what I initially thought you were doing.


OK, here's the revised patch.

cheers

andrew
Index: doc/src/sgml/config.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/config.sgml,v
retrieving revision 1.133
diff -c -r1.133 config.sgml
*** doc/src/sgml/config.sgml	24 Jul 2007 04:54:08 -0000	1.133
--- doc/src/sgml/config.sgml	1 Aug 2007 23:51:02 -0000
***************
*** 2861,2867 ****
              <row>
               <entry><literal>%c</literal></entry>
               <entry>Session ID: see below</entry>
!              <entry>yes</entry>
              </row>
              <row>
               <entry><literal>%l</literal></entry>
--- 2861,2867 ----
              <row>
               <entry><literal>%c</literal></entry>
               <entry>Session ID: see below</entry>
!              <entry>no</entry>
              </row>
              <row>
               <entry><literal>%l</literal></entry>
***************
*** 2871,2877 ****
              <row>
               <entry><literal>%s</literal></entry>
               <entry>Session start time stamp</entry>
!              <entry>yes</entry>
              </row>
              <row>
               <entry><literal>%x</literal></entry>
--- 2871,2877 ----
              <row>
               <entry><literal>%s</literal></entry>
               <entry>Session start time stamp</entry>
!              <entry>no</entry>
              </row>
              <row>
               <entry><literal>%x</literal></entry>
Index: src/backend/bootstrap/bootstrap.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v
retrieving revision 1.235
diff -c -r1.235 bootstrap.c
*** src/backend/bootstrap/bootstrap.c	24 Jul 2007 04:54:09 -0000	1.235
--- src/backend/bootstrap/bootstrap.c	1 Aug 2007 23:51:04 -0000
***************
*** 213,218 ****
--- 213,220 ----
  	 */
  	MyProcPid = getpid();
  
+ 	MyStartTime = time(NULL);
+ 
  	/*
  	 * Fire up essential subsystems: error and memory management
  	 *
Index: src/backend/postmaster/autovacuum.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/autovacuum.c,v
retrieving revision 1.55
diff -c -r1.55 autovacuum.c
*** src/backend/postmaster/autovacuum.c	1 Jul 2007 18:30:54 -0000	1.55
--- src/backend/postmaster/autovacuum.c	1 Aug 2007 23:51:05 -0000
***************
*** 385,390 ****
--- 385,393 ----
  	/* reset MyProcPid */
  	MyProcPid = getpid();
  
+ 	/* record Start Time for logging */
+ 	MyStartTime = time(NULL);
+ 
  	/* Identify myself via ps */
  	init_ps_display("autovacuum launcher process", "", "", "");
  
***************
*** 1403,1408 ****
--- 1406,1414 ----
  	/* reset MyProcPid */
  	MyProcPid = getpid();
  
+ 	/* record Start Time for logging */
+ 	MyStartTime = time(NULL);
+ 
  	/* Identify myself via ps */
  	init_ps_display("autovacuum worker process", "", "", "");
  
Index: src/backend/postmaster/pgarch.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/pgarch.c,v
retrieving revision 1.29
diff -c -r1.29 pgarch.c
*** src/backend/postmaster/pgarch.c	10 Feb 2007 14:58:54 -0000	1.29
--- src/backend/postmaster/pgarch.c	1 Aug 2007 23:51:05 -0000
***************
*** 223,228 ****
--- 223,230 ----
  
  	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.
Index: src/backend/postmaster/pgstat.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v
retrieving revision 1.161
diff -c -r1.161 pgstat.c
*** src/backend/postmaster/pgstat.c	8 Jul 2007 22:23:16 -0000	1.161
--- src/backend/postmaster/pgstat.c	1 Aug 2007 23:51:07 -0000
***************
*** 2168,2173 ****
--- 2168,2175 ----
  
  	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
Index: src/backend/postmaster/postmaster.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v
retrieving revision 1.535
diff -c -r1.535 postmaster.c
*** src/backend/postmaster/postmaster.c	24 Jul 2007 04:54:09 -0000	1.535
--- src/backend/postmaster/postmaster.c	1 Aug 2007 23:51:10 -0000
***************
*** 386,391 ****
--- 386,393 ----
  
  	MyProcPid = PostmasterPid = getpid();
  
+ 	MyStartTime = time(NULL);
+ 
  	IsPostmasterEnvironment = true;
  
  	/*
***************
*** 1103,1108 ****
--- 1105,1112 ----
  
  	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,2666 ****
--- 2665,2672 ----
  
  		MyProcPid = getpid();	/* reset MyProcPid */
  
+ 		MyStartTime = time(NULL);
+ 
  		/* We don't want the postmaster's proc_exit() handlers */
  		on_exit_reset();
  
***************
*** 2803,2809 ****
  
  	/* save process start time */
  	port->SessionStartTime = GetCurrentTimestamp();
! 	port->session_start = timestamptz_to_time_t(port->SessionStartTime);
  
  	/* set these to empty in case they are needed before we set them up */
  	port->remote_host = "";
--- 2809,2815 ----
  
  	/* save process start time */
  	port->SessionStartTime = GetCurrentTimestamp();
! 	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,3390 ****
--- 3391,3398 ----
  
  	MyProcPid = getpid();		/* reset MyProcPid */
  
+ 	MyStartTime = time(NULL);
+ 
  	/* Lose the postmaster's on-exit routines (really a no-op) */
  	on_exit_reset();
  
Index: src/backend/postmaster/syslogger.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/syslogger.c,v
retrieving revision 1.33
diff -c -r1.33 syslogger.c
*** src/backend/postmaster/syslogger.c	19 Jul 2007 19:13:43 -0000	1.33
--- src/backend/postmaster/syslogger.c	1 Aug 2007 23:51:10 -0000
***************
*** 162,167 ****
--- 162,169 ----
  
  	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 */
Index: src/backend/tcop/postgres.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/tcop/postgres.c,v
retrieving revision 1.536
diff -c -r1.536 postgres.c
*** src/backend/tcop/postgres.c	9 Jul 2007 01:15:14 -0000	1.536
--- src/backend/tcop/postgres.c	1 Aug 2007 23:51:13 -0000
***************
*** 2786,2791 ****
--- 2786,2793 ----
  	 */
  	MyProcPid = getpid();
  
+ 	MyStartTime = time(NULL);
+ 
  	/*
  	 * Fire up essential subsystems: error and memory management
  	 *
Index: src/backend/utils/error/elog.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/error/elog.c,v
retrieving revision 1.190
diff -c -r1.190 elog.c
*** src/backend/utils/error/elog.c	21 Jul 2007 22:12:04 -0000	1.190
--- src/backend/utils/error/elog.c	1 Aug 2007 23:51:14 -0000
***************
*** 1485,1496 ****
  				}
  				break;
  			case 'c':
! 				if (MyProcPort)
! 				{
! 					appendStringInfo(buf, "%lx.%x",
! 									 (long) (MyProcPort->session_start),
! 									 MyProcPid);
! 				}
  				break;
  			case 'p':
  				appendStringInfo(buf, "%d", MyProcPid);
--- 1485,1491 ----
  				}
  				break;
  			case 'c':
! 				appendStringInfo(buf, "%lx.%x", (long)(MyStartTime),MyProcPid);
  				break;
  			case 'p':
  				appendStringInfo(buf, "%d", MyProcPid);
***************
*** 1552,1558 ****
  				}
  				break;
  			case 's':
- 				if (MyProcPort)
  				{
  					char		strfbuf[128];
  
--- 1547,1552 ----
***************
*** 1563,1569 ****
  #else
  							 "%Y-%m-%d %H:%M:%S",
  #endif
! 							 localtime(&MyProcPort->session_start));
  					appendStringInfoString(buf, strfbuf);
  				}
  				break;
--- 1557,1563 ----
  #else
  							 "%Y-%m-%d %H:%M:%S",
  #endif
! 							 localtime(&MyStartTime));
  					appendStringInfoString(buf, strfbuf);
  				}
  				break;
Index: src/backend/utils/init/globals.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/init/globals.c,v
retrieving revision 1.101
diff -c -r1.101 globals.c
*** src/backend/utils/init/globals.c	16 Apr 2007 18:29:54 -0000	1.101
--- src/backend/utils/init/globals.c	1 Aug 2007 23:51:14 -0000
***************
*** 33,38 ****
--- 33,39 ----
  volatile uint32 CritSectionCount = 0;
  
  int			MyProcPid;
+ time_t      MyStartTime;
  struct Port *MyProcPort;
  long		MyCancelKey;
  
Index: src/include/miscadmin.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/miscadmin.h,v
retrieving revision 1.195
diff -c -r1.195 miscadmin.h
*** src/include/miscadmin.h	25 Jul 2007 12:22:53 -0000	1.195
--- src/include/miscadmin.h	1 Aug 2007 23:51:15 -0000
***************
*** 23,28 ****
--- 23,30 ----
  #ifndef MISCADMIN_H
  #define MISCADMIN_H
  
+ #include <time.h> /* for time_t */
+ 
  
  #define PG_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n"
  
***************
*** 132,137 ****
--- 134,140 ----
  extern int	MaxConnections;
  
  extern PGDLLIMPORT int MyProcPid;
+ extern PGDLLIMPORT time_t MyStartTime;
  extern PGDLLIMPORT struct Port *MyProcPort;
  extern long MyCancelKey;
  
Index: src/include/libpq/libpq-be.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/libpq/libpq-be.h,v
retrieving revision 1.62
diff -c -r1.62 libpq-be.h
*** src/include/libpq/libpq-be.h	23 Jul 2007 10:16:54 -0000	1.62
--- src/include/libpq/libpq-be.h	1 Aug 2007 23:51:16 -0000
***************
*** 130,136 ****
  	 * 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.
--- 130,135 ----
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to