PG-147: Store top query, instead of parent query.

pull/75/head
Ibrar Ahmed 2021-02-17 14:43:00 +00:00
parent 6aa1b2e7b6
commit cabab69b76
2 changed files with 28 additions and 35 deletions

View File

@ -352,41 +352,34 @@ postgres=# SELECT bucket, substr(query,0, 50) AS query, cmd_type FROM pg_stat_mo
#### Function Execution Tracking #### Function Execution Tracking
**`parentid`**: Outer layer caller's query id. **`top_queryid`**: Outer layer caller's query id.
```sql ```sql
postgres=# select prosrc from pg_proc where proname = 'getnum'; CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS
prosrc $$
-------------------------------- BEGIN
select * from t1 where a >= $1 return (select $1 + $2);
END; $$ language plpgsql;
CREATE OR REPLACE function add2(int, int) RETURNS int as
$$
BEGIN
return add($1,$2);
END;
$$ language plpgsql;
SELECT add2(1,2);
sub
-----
3
(1 row) (1 row)
postgresr=# select pg_stat_monitor_reset(); postgres=# SELECT queryid, top_queryid, query, top_query FROM pg_stat_monitor;
pg_stat_monitor_reset queryid | top_queryid | query | top_query
----------------------- ------------------+------------------+--------------------------------------------------------------------------------------------------------------------+-------------------
3408CA84B2353094 | | select add2($1,$2) |
(1 row) 2BAB410CC448CE8D | 3408CA84B2353094 | SELECT add($1,$2) | select add2($1,$2)
762B99349F6C7F31 | 3408CA84B2353094 | SELECT (select $1 + $2) | select add2($1,$2)
postgres=# select prosrc from pg_proc where proname = 'getnum';
prosrc
--------------------------------
select * from t1 where a >= $1
(1 row)
postgres=# select * from getnum(2);
a
---
2
3
4
(3 rows) (3 rows)
postgres=# select queryid,parentid,query,calls from pg_stat_monitor;
queryid | parentid | query | calls
------------------+------------------+-----------------------------------------------+-------
3FEC80684AFE7FC7 | DD2A4843140299C2 | select * from t1 where a >= $1 | 1
6ED05FFB78DD52FA | | select pg_stat_monitor_reset() | 1
DD2A4843140299C2 | | select * from getnum($1) | 1
42517D48FB98ACF7 | | select prosrc from pg_proc where proname = $1 | 1
(4 rows)
``` ```

View File

@ -31,7 +31,7 @@ CREATE FUNCTION pg_stat_monitor(IN showtext boolean,
OUT client_ip int8, OUT client_ip int8,
OUT queryid text, OUT queryid text,
OUT parentid text, OUT top_queryid text,
OUT query text, OUT query text,
OUT application_name text, OUT application_name text,
OUT relations text, OUT relations text,
@ -126,9 +126,9 @@ CREATE VIEW pg_stat_monitor AS SELECT
datname, datname,
'0.0.0.0'::inet + client_ip AS client_ip, '0.0.0.0'::inet + client_ip AS client_ip,
queryid, queryid,
parentid, top_queryid,
query, query,
(SELECT query from pg_stat_monitor(true) s where s.queryid = p.parentid) AS parent_query, (SELECT query from pg_stat_monitor(true) s where s.queryid = p.top_queryid) AS top_query,
application_name, application_name,
string_to_array(relations, ',') AS relations, string_to_array(relations, ',') AS relations,
cmd_type, cmd_type,