diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 231a099cd1afa8767ce9d3ee325806bb3b5db68c..90a77d0a2c8d923deb6ecc1d7acbdd7162e7fd95 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/monitoring.sgml,v 1.19 2003/03/25 16:15:37 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/monitoring.sgml,v 1.20 2003/04/04 03:03:53 tgl Exp $
 -->
 
 <chapter id="monitoring">
@@ -208,9 +208,9 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
       which the current query began execution. The columns that report
       data on the current query are only available if the parameter
       <varname>stats_command_string</varname> has been turned on.
-      Furthermore, these columns can only be accessed by
-      superusers; or when the user examining the view is the same as the user
-      in the row; for others it reads as null.  (Note that because of the 
+      Furthermore, these columns read as null unless the user examining
+      the view is a superuser or the same as the user owning the process
+      being reported on.  (Note that because of the 
       collector's reporting delay, current query will only be up-to-date for 
       long-running queries.)</entry>
      </row>
@@ -540,16 +540,16 @@ postgres: <replaceable>user</> <replaceable>database</> <replaceable>host</> <re
 
      <row>
       <entry><literal><function>pg_stat_get_backend_activity_start</function>(<type>integer</type>)</literal></entry>
-      <entry><type>text</type></entry>
+      <entry><type>timestamp with time zone</type></entry>
       <entry>
-       The time at which the specified backend process' currently
-       executing query was started (null if the current user is not a
-       superuser, or <varname>stats_command_string</varname> is not
-       on)
+       The time at which the given backend process' currently
+       executing query was started (null if the
+       current user is not a superuser nor the same user as that of
+       the session being queried, or
+       <varname>stats_command_string</varname> is not on)
       </entry>
      </row>
 
-
      <row>
       <entry><literal><function>pg_stat_reset</function>()</literal></entry>
       <entry><type>boolean</type></entry>
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 131a670b59a981936b68e69afa4a1ff48ec593a1..9311aabfda350e44df25ef20678017f53c38c2eb 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.176 2003/04/03 23:32:47 tgl Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.177 2003/04/04 03:03:53 tgl Exp $
 -->
 
 <Chapter Id="runtime">
@@ -1176,8 +1176,9 @@ SET ENABLE_SEQSCAN TO OFF;
         Enables the collection of statistics on the currently
         executing command of each session, along with the time at
         which that command began execution. This option is off by
-        default. Note that even when enabled, this information is only
-        visible to the superuser, so it should not represent a
+        default. Note that even when enabled, this information is not
+	visible to all users, only to superusers and the user owning
+	the session being reported on; so it should not represent a
         security risk. This data can be accessed via the
         <structname>pg_stat_activity</structname> system view; refer
         to <xref linkend="monitoring"> for more information.
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index c2f0ea2c8299ffd0bed3871fdbf8ee3e2f5ca8b2..787f0226cdc836f2fc67656af5223220ac7f1803 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -308,14 +308,14 @@ pg_stat_get_backend_activity_start(PG_FUNCTION_ARGS)
 	int32				 beid;
 	AbsoluteTime		 sec;
 	int					 usec;
-	Timestamp			 result;
+	TimestampTz			 result;
 
 	beid = PG_GETARG_INT32(0);
 
-	if (!superuser())
+	if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL)
 		PG_RETURN_NULL();
 
-	if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL)
+	if (!superuser() && beentry->userid != GetUserId())
 		PG_RETURN_NULL();
 
 	sec = beentry->activity_start_sec;
@@ -341,7 +341,7 @@ pg_stat_get_backend_activity_start(PG_FUNCTION_ARGS)
 										date2j(1970, 1, 1)) * 86400));
 #endif
 
-	PG_RETURN_TIMESTAMP(result);
+	PG_RETURN_TIMESTAMPTZ(result);
 }
 
 
diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh
index 473b2786cf1aa7fbc9720ce6a17e3417a6c8dd7f..079ceb076b2457ff92ccd3a10361cc381c3e40ee 100644
--- a/src/bin/initdb/initdb.sh
+++ b/src/bin/initdb/initdb.sh
@@ -27,7 +27,7 @@
 # Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.187 2003/03/25 16:15:44 petere Exp $
+# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.188 2003/04/04 03:03:53 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -954,7 +954,7 @@ CREATE VIEW pg_stat_activity AS \
             pg_stat_get_backend_userid(S.backendid) AS usesysid, \
             U.usename AS usename, \
             pg_stat_get_backend_activity(S.backendid) AS current_query, \
-			pg_stat_get_backend_activity_start(S.backendid) AS query_start \
+            pg_stat_get_backend_activity_start(S.backendid) AS query_start \
     FROM pg_database D, \
             (SELECT pg_stat_get_backend_idset() AS backendid) AS S, \
             pg_shadow U \
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index ff9f65d962ed77e110083c1146443017a23a79b2..6c0bcfdfc9f0905c569ac580a46b3fb34c7733e1 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_proc.h,v 1.290 2003/03/21 21:54:29 momjian Exp $
+ * $Id: pg_proc.h,v 1.291 2003/04/04 03:03:54 tgl Exp $
  *
  * NOTES
  *	  The script catalog/genbki.sh reads this file and generates .bki
@@ -2745,7 +2745,7 @@ DATA(insert OID = 1939 (  pg_stat_get_backend_userid	PGNSP PGUID 12 f f t f s 1
 DESCR("Statistics: User ID of backend");
 DATA(insert OID = 1940 (  pg_stat_get_backend_activity	PGNSP PGUID 12 f f t f s 1 25 "23"	pg_stat_get_backend_activity - _null_ ));
 DESCR("Statistics: Current query of backend");
-DATA(insert OID = 2094 (  pg_stat_get_backend_activity_start PGNSP PGUID 12 f f t f s 1 1114 "23"  pg_stat_get_backend_activity_start - _null_));
+DATA(insert OID = 2094 (  pg_stat_get_backend_activity_start PGNSP PGUID 12 f f t f s 1 1184 "23"  pg_stat_get_backend_activity_start - _null_));
 DESCR("Statistics: Start time for current query of backend");
 DATA(insert OID = 1941 (  pg_stat_get_db_numbackends	PGNSP PGUID 12 f f t f s 1 23 "26"	pg_stat_get_db_numbackends - _null_ ));
 DESCR("Statistics: Number of backends in database");