Tom Lane wrote: > Kevin Brown <[EMAIL PROTECTED]> writes: [...]
> > It would also be handy if users could see their own queries while the > > rest remain blank. That would require changing > > pg_stat_get_backend_activity() so that it returns a value if the user > > is the superuser or if the user asking for the answer is the same as > > the user who owns the backend entry being looked up. Are there any > > pitfalls to implementing that? > > Seems reasonable offhand ... Here's the patch to make this happen. The first is against 7.2.4, the second is against CVS tip. If I got it wrong and need to use something other than GetUserId(), please let me know. -- Kevin Brown [EMAIL PROTECTED]
--- ../postgresql-7.2.4/src/backend/utils/adt/pgstatfuncs.c Wed Oct 24 22:49:45 2001 +++ src/backend/utils/adt/pgstatfuncs.c Thu Mar 6 20:04:26 2003 @@ -264,12 +264,12 @@ int len; text *result; - if (!superuser()) - PG_RETURN_NULL(); - beid = PG_GETARG_INT32(0); if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + PG_RETURN_NULL(); + + if (!superuser() && beentry->userid != GetUserId()) PG_RETURN_NULL(); len = strlen(beentry->activity);
Index: src/backend/utils/adt/pgstatfuncs.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/backend/utils/adt/pgstatfuncs.c,v retrieving revision 1.9 diff -u -d -r1.9 pgstatfuncs.c --- src/backend/utils/adt/pgstatfuncs.c 2002/12/04 05:18:34 1.9 +++ src/backend/utils/adt/pgstatfuncs.c 2003/03/07 04:09:01 @@ -284,12 +284,12 @@ int len; text *result; - if (!superuser()) - PG_RETURN_NULL(); - beid = PG_GETARG_INT32(0); if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + PG_RETURN_NULL(); + + if (!superuser() && beentry->userid != GetUserId()) PG_RETURN_NULL(); len = strlen(beentry->activity);
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org