mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-19 18:03:23 +02:00
6b4d23feef
Changing pg_stat_statements.track between 'all' and 'top' would control if pg_stat_statements tracked just top level statements or also statements inside functions, but when tracking all it would not differentiate between the two. Being table to differentiate this is useful both to track where the actual query is coming from, and to see if there are differences in executions between the two. To do this, add a boolean to the hash key indicating if the statement was top level or not. Experience from the pg_stat_kcache module shows that in at least some "reasonable worloads" only <5% of the queries show up both top level and nested. Based on this, admittedly small, dataset, this patch does not try to de-duplicate those query *texts*, and will just store one copy for the top level and one for the nested. Author: Julien Rohaud Reviewed-By: Magnus Hagander, Masahiro Ikeda Discussion: https://postgr.es/m/20201202040516.GA43757@nol
58 lines
1.7 KiB
SQL
58 lines
1.7 KiB
SQL
/* contrib/pg_stat_statements/pg_stat_statements--1.9--1.10.sql */
|
|
|
|
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
|
|
\echo Use "ALTER EXTENSION pg_stat_statements UPDATE TO '1.10'" to load this file. \quit
|
|
|
|
/* First we have to remove them from the extension */
|
|
ALTER EXTENSION pg_stat_statements DROP VIEW pg_stat_statements;
|
|
ALTER EXTENSION pg_stat_statements DROP FUNCTION pg_stat_statements(boolean);
|
|
|
|
/* Then we can drop them */
|
|
DROP VIEW pg_stat_statements;
|
|
DROP FUNCTION pg_stat_statements(boolean);
|
|
|
|
/* Now redefine */
|
|
CREATE FUNCTION pg_stat_statements(IN showtext boolean,
|
|
OUT userid oid,
|
|
OUT dbid oid,
|
|
OUT toplevel bool,
|
|
OUT queryid bigint,
|
|
OUT query text,
|
|
OUT plans int8,
|
|
OUT total_plan_time float8,
|
|
OUT min_plan_time float8,
|
|
OUT max_plan_time float8,
|
|
OUT mean_plan_time float8,
|
|
OUT stddev_plan_time float8,
|
|
OUT calls int8,
|
|
OUT total_exec_time float8,
|
|
OUT min_exec_time float8,
|
|
OUT max_exec_time float8,
|
|
OUT mean_exec_time float8,
|
|
OUT stddev_exec_time float8,
|
|
OUT rows int8,
|
|
OUT shared_blks_hit int8,
|
|
OUT shared_blks_read int8,
|
|
OUT shared_blks_dirtied int8,
|
|
OUT shared_blks_written int8,
|
|
OUT local_blks_hit int8,
|
|
OUT local_blks_read int8,
|
|
OUT local_blks_dirtied int8,
|
|
OUT local_blks_written int8,
|
|
OUT temp_blks_read int8,
|
|
OUT temp_blks_written int8,
|
|
OUT blk_read_time float8,
|
|
OUT blk_write_time float8,
|
|
OUT wal_records int8,
|
|
OUT wal_fpi int8,
|
|
OUT wal_bytes numeric
|
|
)
|
|
RETURNS SETOF record
|
|
AS 'MODULE_PATHNAME', 'pg_stat_statements_1_10'
|
|
LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
|
|
|
|
CREATE VIEW pg_stat_statements AS
|
|
SELECT * FROM pg_stat_statements(true);
|
|
|
|
GRANT SELECT ON pg_stat_statements TO PUBLIC;
|