Add pg_conf_load_time() function to report when the Postgres configuration
authorTom Lane
Sun, 4 May 2008 21:13:36 +0000 (21:13 +0000)
committerTom Lane
Sun, 4 May 2008 21:13:36 +0000 (21:13 +0000)
files were last loaded.

George Gensure

doc/src/sgml/func.sgml
src/backend/postmaster/postmaster.c
src/backend/utils/adt/timestamp.c
src/backend/utils/misc/guc-file.l
src/include/catalog/catversion.h
src/include/catalog/pg_proc.h
src/include/utils/timestamp.h

index d0171798675cb7309c17d37d21e652c926f38e97..47727a1f4125dcb73102247825db66540897498f 100644 (file)
@@ -1,4 +1,4 @@
-
+
 
  
   Functions and Operators
@@ -10891,6 +10891,12 @@ postgres=# select * from unnest2(array[[1,2],[3,4]]);
        server start time
       
 
+      
+       pg_conf_load_time()
+       timestamp with time zone
+       configuration load time
+      
+
       
        session_user
        name
@@ -11031,9 +11037,23 @@ SET search_path TO schema schema, ..
    
 
    
-     pg_postmaster_start_time returns the
-     timestamp with time zone when the
-     server started.
+    pg_postmaster_start_time returns the
+    timestamp with time zone when the
+    server started.
+   
+
+   
+    pg_conf_load_time
+   
+
+   
+    pg_conf_load_time returns the
+    timestamp with time zone when the
+    server configuration files were last loaded.
+    (If the current session was alive at the time, this will be the time
+    when the session itself re-read the configuration files, so the
+    reading will vary a little in different sessions.  Otherwise it is
+    the time when the postmaster process re-read the configuration files.)
    
 
    
index 54e9173f6c6accfb6b0749626244cb4eeb2b046f..ba9e32627cc8738b557e74cbb7f9c05599ad7108 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.556 2008/04/26 22:47:40 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.557 2008/05/04 21:13:35 tgl Exp $
  *
  * NOTES
  *
@@ -390,6 +390,7 @@ typedef struct
    InheritableSocket pgStatSock;
    pid_t       PostmasterPid;
    TimestampTz PgStartTime;
+   TimestampTz PgReloadTime;
    bool        redirection_done;
 #ifdef WIN32
    HANDLE      PostmasterHandle;
@@ -4263,6 +4264,7 @@ save_backend_variables(BackendParameters * param, Port *port,
 
    param->PostmasterPid = PostmasterPid;
    param->PgStartTime = PgStartTime;
+   param->PgReloadTime = PgReloadTime;
 
    param->redirection_done = redirection_done;
 
@@ -4468,6 +4470,7 @@ restore_backend_variables(BackendParameters * param, Port *port)
 
    PostmasterPid = param->PostmasterPid;
    PgStartTime = param->PgStartTime;
+   PgReloadTime = param->PgReloadTime;
 
    redirection_done = param->redirection_done;
 
index 8a0f37292dc396eadaa8e48e6ccddc707ba66a32..25d95b60efb47316762a13226541cf57e25aa386 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.187 2008/03/25 22:42:44 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.188 2008/05/04 21:13:35 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,6 +42,8 @@
 
 /* Set at postmaster start */
 TimestampTz PgStartTime;
+/* Set at configuration reload */
+TimestampTz PgReloadTime;
 
 
 static TimeOffset time2t(const int hour, const int min, const int sec, const fsec_t fsec);
@@ -1157,11 +1159,17 @@ clock_timestamp(PG_FUNCTION_ARGS)
 }
 
 Datum
-pgsql_postmaster_start_time(PG_FUNCTION_ARGS)
+pg_postmaster_start_time(PG_FUNCTION_ARGS)
 {
    PG_RETURN_TIMESTAMPTZ(PgStartTime);
 }
 
+Datum
+pg_conf_load_time(PG_FUNCTION_ARGS)
+{
+   PG_RETURN_TIMESTAMPTZ(PgReloadTime);
+}
+
 /*
  * GetCurrentTimestamp -- get the current operating system time
  *
index 6abf1196f169cb4a42d4bf197a8e8f6b34da9486..8380b4fa62af27600a5863acfa7033d214ea756f 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Copyright (c) 2000-2008, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/backend/utils/misc/guc-file.l,v 1.53 2008/01/01 19:45:54 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/misc/guc-file.l,v 1.54 2008/05/04 21:13:35 tgl Exp $
  */
 
 %{
@@ -309,6 +309,9 @@ ProcessConfigFile(GucContext context)
                          PGC_S_FILE, GUC_ACTION_SET, true);
    }
 
+   /* Remember when we last successfully loaded the config file. */
+   PgReloadTime = GetCurrentTimestamp();
+
  cleanup_list:
    free_name_value_list(head);
    if (cvc)
index 67b71f09f0878ce0879fc00a894dcac35c90d688..751cb8e8f72b29b430c3a1afafa9c7de5ef8b248 100644 (file)
@@ -37,7 +37,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.453 2008/04/29 14:59:17 alvherre Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.454 2008/05/04 21:13:35 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,6 +53,6 @@
  */
 
 /*                         yyyymmddN */
-#define CATALOG_VERSION_NO 200804292
+#define CATALOG_VERSION_NO 200805041
 
 #endif
index acc60cf7f535058528221060bd25cdf181f0c97a..8f9954692b3b2c4d555dcd8c68ae91ee70d6e6e9 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.494 2008/04/29 13:00:22 alvherre Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.495 2008/05/04 21:13:36 tgl Exp $
  *
  * NOTES
  *   The script catalog/genbki.sh reads this file and generates .bki
@@ -3922,8 +3922,11 @@ DATA(insert OID = 2559 ( lastval            PGNSP PGUID 12 1 0 f f t f v 0 20 "" _null
 DESCR("current value from last used sequence");
 
 /* start time function */
-DATA(insert OID = 2560 (  pg_postmaster_start_time PGNSP PGUID 12 1 0 f f t f s 0 1184 "" _null_ _null_ _null_ pgsql_postmaster_start_time - _null_ _null_ ));
+DATA(insert OID = 2560 (  pg_postmaster_start_time PGNSP PGUID 12 1 0 f f t f s 0 1184 "" _null_ _null_ _null_ pg_postmaster_start_time - _null_ _null_ ));
 DESCR("postmaster start time");
+/* config reload time function */
+DATA(insert OID = 2034 (  pg_conf_load_time            PGNSP PGUID 12 1 0 f f t f s 0 1184 "" _null_ _null_ _null_ pg_conf_load_time - _null_ _null_ ));
+DESCR("configuration load time");
 
 /* new functions for Y-direction rtree opclasses */
 DATA(insert OID = 2562 (  box_below           PGNSP PGUID 12 1 0 f f t f i 2 16 "603 603" _null_ _null_ _null_ box_below - _null_ _null_ ));
index 8950979b945e3913a289f1a0cc12750db5f8a9d1..31ad788ebf1ca2c3e2cb7641858a9d913ef2390c 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/utils/timestamp.h,v 1.76 2008/03/21 01:31:43 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/utils/timestamp.h,v 1.77 2008/05/04 21:13:36 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -195,6 +195,8 @@ typedef struct
 
 /* Set at postmaster start */
 extern TimestampTz PgStartTime;
+/* Set at configuration reload */
+extern TimestampTz PgReloadTime;
 
 
 /*
@@ -303,7 +305,8 @@ extern Datum now(PG_FUNCTION_ARGS);
 extern Datum statement_timestamp(PG_FUNCTION_ARGS);
 extern Datum clock_timestamp(PG_FUNCTION_ARGS);
 
-extern Datum pgsql_postmaster_start_time(PG_FUNCTION_ARGS);
+extern Datum pg_postmaster_start_time(PG_FUNCTION_ARGS);
+extern Datum pg_conf_load_time(PG_FUNCTION_ARGS);
 
 /* Internal routines (not fmgr-callable) */