Commit 3b4ca4c0 authored by Tom Lane's avatar Tom Lane

Code review for pg_stat_get_backend_activity_start patch --- fix

return type, make protection condition agree with recent change to
pg_stat_get_backend_activity, clean up documentation.
parent a385186f
<!--
$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>
......
<!--
$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.
......
......@@ -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);
}
......
......@@ -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 \
......
......@@ -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");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment