Applied; catalog version bumped. ---------------------------------------------------------------------------
Bruce Momjian wrote: > Tom Lane wrote: > > "Kevin Grittner" <kevin.gritt...@wicourts.gov> writes: > > > Tom Lane <t...@sss.pgh.pa.us> wrote: > > >> The current column ordering can be rationalized to some extent as > > >> > > >> 1. identity info (user id, db id, application name) > > >> 2. current query info > > >> 3. session info (backend start time, client addr/port) > > > > > OK. I guess that trumps my idea, although it would sure be nice if > > > it were possible to swap 2 and 3 so that we could put the query text > > > at the end. > > > > Well, the current ordering is definitely historical rather than > > designed, but I'm hesitant to do more than minor tweaking. Even if we > > think/hope it won't break applications, people are probably used to > > seeing a particular ordering. > > > > I'm not necessarily dead set against it though. I guess if we were > > to do what you suggest, we'd end up with > > > > identity: > > datid | oid | > > datname | name | > > procpid | integer | > > usesysid | oid | > > usename | name | > > application_name | text | > > session: > > client_addr | inet | > > client_port | integer | > > backend_start | timestamp with time zone | > > transaction: > > xact_start | timestamp with time zone | > > query: > > query_start | timestamp with time zone | > > waiting | boolean | > > current_query | text | > > > > or possibly that plus relocate procpid somewhere else. Anyone think > > this is sufficiently better to justify possible confusion? > > I implemented Tom's suggested ordering above: > > test=> SELECT * FROM pg_stat_activity; > -[ RECORD 1 ]----+-------------------------------- > datid | 16384 > datname | test > procpid | 22216 > usesysid | 10 > usename | postgres > application_name | psql > client_addr | > client_port | -1 > backend_start | 2010-04-24 22:35:21.683308-04 > xact_start | 2010-04-24 22:47:19.53821-04 > query_start | 2010-04-24 22:47:19.53821-04 > waiting | f > current_query | SELECT * FROM pg_stat_activity; > > Patch attached. It will require a catversion bump too. > > -- > Bruce Momjian <br...@momjian.us> http://momjian.us > EnterpriseDB http://enterprisedb.com > Index: src/backend/catalog/system_views.sql > =================================================================== > RCS file: /cvsroot/pgsql/src/backend/catalog/system_views.sql,v > retrieving revision 1.65 > diff -c -c -r1.65 system_views.sql > *** src/backend/catalog/system_views.sql 2 Jan 2010 16:57:36 -0000 > 1.65 > --- src/backend/catalog/system_views.sql 25 Apr 2010 02:47:39 -0000 > *************** > *** 335,347 **** > S.usesysid, > U.rolname AS usename, > S.application_name, > ! S.current_query, > ! S.waiting, > S.xact_start, > S.query_start, > ! S.backend_start, > ! S.client_addr, > ! S.client_port > FROM pg_database D, pg_stat_get_activity(NULL) AS S, pg_authid U > WHERE S.datid = D.oid AND > S.usesysid = U.oid; > --- 335,347 ---- > S.usesysid, > U.rolname AS usename, > S.application_name, > ! S.client_addr, > ! S.client_port, > ! S.backend_start, > S.xact_start, > S.query_start, > ! S.waiting, > ! S.current_query > FROM pg_database D, pg_stat_get_activity(NULL) AS S, pg_authid U > WHERE S.datid = D.oid AND > S.usesysid = U.oid; > Index: src/test/regress/expected/rules.out > =================================================================== > RCS file: /cvsroot/pgsql/src/test/regress/expected/rules.out,v > retrieving revision 1.154 > diff -c -c -r1.154 rules.out > *** src/test/regress/expected/rules.out 29 Dec 2009 20:11:45 -0000 > 1.154 > --- src/test/regress/expected/rules.out 25 Apr 2010 02:47:40 -0000 > *************** > *** 1289,1295 **** > pg_rules | SELECT n.nspname AS schemaname, c.relname AS > tablename, r.rulename, pg_get_ruledef(r.oid) AS definition FROM ((pg_rewrite > r JOIN pg_class c ON ((c.oid = r.ev_class))) LEFT JOIN pg_namespace n ON > ((n.oid = c.relnamespace))) WHERE (r.rulename <> '_RETURN'::name); > pg_settings | SELECT a.name, a.setting, a.unit, a.category, > a.short_desc, a.extra_desc, a.context, a.vartype, a.source, a.min_val, > a.max_val, a.enumvals, a.boot_val, a.reset_val, a.sourcefile, a.sourceline > FROM pg_show_all_settings() a(name, setting, unit, category, short_desc, > extra_desc, context, vartype, source, min_val, max_val, enumvals, boot_val, > reset_val, sourcefile, sourceline); > pg_shadow | SELECT pg_authid.rolname AS usename, > pg_authid.oid AS usesysid, pg_authid.rolcreatedb AS usecreatedb, > pg_authid.rolsuper AS usesuper, pg_authid.rolcatupdate AS usecatupd, > pg_authid.rolpassword AS passwd, (pg_authid.rolvaliduntil)::abstime AS > valuntil, s.setconfig AS useconfig FROM (pg_authid LEFT JOIN > pg_db_role_setting s ON (((pg_authid.oid = s.setrole) AND (s.setdatabase = > (0)::oid)))) WHERE pg_authid.rolcanlogin; > ! pg_stat_activity | SELECT s.datid, d.datname, s.procpid, > s.usesysid, u.rolname AS usename, s.application_name, s.current_query, > s.waiting, s.xact_start, s.query_start, s.backend_start, s.client_addr, > s.client_port FROM pg_database d, pg_stat_get_activity(NULL::integer) > s(datid, procpid, usesysid, application_name, current_query, waiting, > xact_start, query_start, backend_start, client_addr, client_port), pg_authid > u WHERE ((s.datid = d.oid) AND (s.usesysid = u.oid)); > pg_stat_all_indexes | SELECT c.oid AS relid, i.oid AS indexrelid, > n.nspname AS schemaname, c.relname, i.relname AS indexrelname, > pg_stat_get_numscans(i.oid) AS idx_scan, pg_stat_get_tuples_returned(i.oid) > AS idx_tup_read, pg_stat_get_tuples_fetched(i.oid) AS idx_tup_fetch FROM > (((pg_class c JOIN pg_index x ON ((c.oid = x.indrelid))) JOIN pg_class i ON > ((i.oid = x.indexrelid))) LEFT JOIN pg_namespace n ON ((n.oid = > c.relnamespace))) WHERE (c.relkind = ANY (ARRAY['r'::"char", 't'::"char"])); > pg_stat_all_tables | SELECT c.oid AS relid, n.nspname AS schemaname, > c.relname, pg_stat_get_numscans(c.oid) AS seq_scan, > pg_stat_get_tuples_returned(c.oid) AS seq_tup_read, > (sum(pg_stat_get_numscans(i.indexrelid)))::bigint AS idx_scan, > ((sum(pg_stat_get_tuples_fetched(i.indexrelid)))::bigint + > pg_stat_get_tuples_fetched(c.oid)) AS idx_tup_fetch, > pg_stat_get_tuples_inserted(c.oid) AS n_tup_ins, > pg_stat_get_tuples_updated(c.oid) AS n_tup_upd, > pg_stat_get_tuples_deleted(c.oid) AS n_tup_del, > pg_stat_get_tuples_hot_updated(c.oid) AS n_tup_hot_upd, > pg_stat_get_live_tuples(c.oid) AS n_live_tup, pg_stat_get_dead_tuples(c.oid) > AS n_dead_tup, pg_stat_get_last_vacuum_time(c.oid) AS last_vacuum, > pg_stat_get_last_autovacuum_time(c.oid) AS last_autovacuum, > pg_stat_get_last_analyze_time(c.oid) AS last_analyze, > pg_stat_get_last_autoanalyze_time(c.oid) AS last_autoanalyze FROM ((pg_class > c LEFT JOIN pg_index i ON ((c.oid = i.indrelid))) LEFT JOIN pg_namespace n ON > ((n.oid = c.relnamespace))) WHERE (c.relkind = ANY (ARRAY['r'::"char", > 't'::"char"])) GROUP BY c.oid, n.nspname, c.relname; > pg_stat_bgwriter | SELECT pg_stat_get_bgwriter_timed_checkpoints() > AS checkpoints_timed, pg_stat_get_bgwriter_requested_checkpoints() AS > checkpoints_req, pg_stat_get_bgwriter_buf_written_checkpoints() AS > buffers_checkpoint, pg_stat_get_bgwriter_buf_written_clean() AS > buffers_clean, pg_stat_get_bgwriter_maxwritten_clean() AS maxwritten_clean, > pg_stat_get_buf_written_backend() AS buffers_backend, pg_stat_get_buf_alloc() > AS buffers_alloc; > --- 1289,1295 ---- > pg_rules | SELECT n.nspname AS schemaname, c.relname AS > tablename, r.rulename, pg_get_ruledef(r.oid) AS definition FROM ((pg_rewrite > r JOIN pg_class c ON ((c.oid = r.ev_class))) LEFT JOIN pg_namespace n ON > ((n.oid = c.relnamespace))) WHERE (r.rulename <> '_RETURN'::name); > pg_settings | SELECT a.name, a.setting, a.unit, a.category, > a.short_desc, a.extra_desc, a.context, a.vartype, a.source, a.min_val, > a.max_val, a.enumvals, a.boot_val, a.reset_val, a.sourcefile, a.sourceline > FROM pg_show_all_settings() a(name, setting, unit, category, short_desc, > extra_desc, context, vartype, source, min_val, max_val, enumvals, boot_val, > reset_val, sourcefile, sourceline); > pg_shadow | SELECT pg_authid.rolname AS usename, > pg_authid.oid AS usesysid, pg_authid.rolcreatedb AS usecreatedb, > pg_authid.rolsuper AS usesuper, pg_authid.rolcatupdate AS usecatupd, > pg_authid.rolpassword AS passwd, (pg_authid.rolvaliduntil)::abstime AS > valuntil, s.setconfig AS useconfig FROM (pg_authid LEFT JOIN > pg_db_role_setting s ON (((pg_authid.oid = s.setrole) AND (s.setdatabase = > (0)::oid)))) WHERE pg_authid.rolcanlogin; > ! pg_stat_activity | SELECT s.datid, d.datname, s.procpid, > s.usesysid, u.rolname AS usename, s.application_name, s.client_addr, > s.client_port, s.backend_start, s.xact_start, s.query_start, s.waiting, > s.current_query FROM pg_database d, pg_stat_get_activity(NULL::integer) > s(datid, procpid, usesysid, application_name, current_query, waiting, > xact_start, query_start, backend_start, client_addr, client_port), pg_authid > u WHERE ((s.datid = d.oid) AND (s.usesysid = u.oid)); > pg_stat_all_indexes | SELECT c.oid AS relid, i.oid AS indexrelid, > n.nspname AS schemaname, c.relname, i.relname AS indexrelname, > pg_stat_get_numscans(i.oid) AS idx_scan, pg_stat_get_tuples_returned(i.oid) > AS idx_tup_read, pg_stat_get_tuples_fetched(i.oid) AS idx_tup_fetch FROM > (((pg_class c JOIN pg_index x ON ((c.oid = x.indrelid))) JOIN pg_class i ON > ((i.oid = x.indexrelid))) LEFT JOIN pg_namespace n ON ((n.oid = > c.relnamespace))) WHERE (c.relkind = ANY (ARRAY['r'::"char", 't'::"char"])); > pg_stat_all_tables | SELECT c.oid AS relid, n.nspname AS schemaname, > c.relname, pg_stat_get_numscans(c.oid) AS seq_scan, > pg_stat_get_tuples_returned(c.oid) AS seq_tup_read, > (sum(pg_stat_get_numscans(i.indexrelid)))::bigint AS idx_scan, > ((sum(pg_stat_get_tuples_fetched(i.indexrelid)))::bigint + > pg_stat_get_tuples_fetched(c.oid)) AS idx_tup_fetch, > pg_stat_get_tuples_inserted(c.oid) AS n_tup_ins, > pg_stat_get_tuples_updated(c.oid) AS n_tup_upd, > pg_stat_get_tuples_deleted(c.oid) AS n_tup_del, > pg_stat_get_tuples_hot_updated(c.oid) AS n_tup_hot_upd, > pg_stat_get_live_tuples(c.oid) AS n_live_tup, pg_stat_get_dead_tuples(c.oid) > AS n_dead_tup, pg_stat_get_last_vacuum_time(c.oid) AS last_vacuum, > pg_stat_get_last_autovacuum_time(c.oid) AS last_autovacuum, > pg_stat_get_last_analyze_time(c.oid) AS last_analyze, > pg_stat_get_last_autoanalyze_time(c.oid) AS last_autoanalyze FROM ((pg_class > c LEFT JOIN pg_index i ON ((c.oid = i.indrelid))) LEFT JOIN pg_namespace n ON > ((n.oid = c.relnamespace))) WHERE (c.relkind = ANY (ARRAY['r'::"char", > 't'::"char"])) GROUP BY c.oid, n.nspname, c.relname; > pg_stat_bgwriter | SELECT pg_stat_get_bgwriter_timed_checkpoints() > AS checkpoints_timed, pg_stat_get_bgwriter_requested_checkpoints() AS > checkpoints_req, pg_stat_get_bgwriter_buf_written_checkpoints() AS > buffers_checkpoint, pg_stat_get_bgwriter_buf_written_clean() AS > buffers_clean, pg_stat_get_bgwriter_maxwritten_clean() AS maxwritten_clean, > pg_stat_get_buf_written_backend() AS buffers_backend, pg_stat_get_buf_alloc() > AS buffers_alloc; > > > -- > Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-hackers -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers