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
**`parentid`**: Outer layer caller's query id.
**`top_queryid`**: Outer layer caller's query id.
```sql
postgres=# select prosrc from pg_proc where proname = 'getnum';
prosrc
--------------------------------
select * from t1 where a >= $1
CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS
$$
BEGIN
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)
postgresr=# select pg_stat_monitor_reset();
pg_stat_monitor_reset
-----------------------
(1 row)
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
postgres=# SELECT queryid, top_queryid, query, top_query FROM pg_stat_monitor;
queryid | top_queryid | query | top_query
------------------+------------------+--------------------------------------------------------------------------------------------------------------------+-------------------
3408CA84B2353094 | | select add2($1,$2) |
2BAB410CC448CE8D | 3408CA84B2353094 | SELECT add($1,$2) | select add2($1,$2)
762B99349F6C7F31 | 3408CA84B2353094 | SELECT (select $1 + $2) | select add2($1,$2)
(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 queryid text,
OUT parentid text,
OUT top_queryid text,
OUT query text,
OUT application_name text,
OUT relations text,
@ -126,9 +126,9 @@ CREATE VIEW pg_stat_monitor AS SELECT
datname,
'0.0.0.0'::inet + client_ip AS client_ip,
queryid,
parentid,
top_queryid,
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,
string_to_array(relations, ',') AS relations,
cmd_type,