PG-320: Removal of state columnns from pgsm view.

We are concerned with finished queries in pg_stat_monitor, so state and
state_code columns were removed from the pg_stat_monitor_view as we only
list finished queries on it.

Removed state regression as it is not necessary anymore.

Also, this allowed us to remove the call to pgss_store on ExecutorStart,
which just updated query state to EXEC, thus saving some CPU.
pull/162/head
Diego Fronza 2022-01-05 16:32:02 -03:00
parent eaa9c08e24
commit 8a94129848
21 changed files with 177 additions and 306 deletions

View File

@ -11,7 +11,7 @@ PGFILEDESC = "pg_stat_monitor - execution statistics of SQL statements"
LDFLAGS_SL += $(filter -lm, $(LIBS)) LDFLAGS_SL += $(filter -lm, $(LIBS))
REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/pg_stat_monitor/pg_stat_monitor.conf --inputdir=regression REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/pg_stat_monitor/pg_stat_monitor.conf --inputdir=regression
REGRESS = basic version guc counters relations database top_query application_name cmd_type error state rows tags REGRESS = basic version guc counters relations database top_query application_name cmd_type error rows tags
# Disabled because these tests require "shared_preload_libraries=pg_stat_statements", # Disabled because these tests require "shared_preload_libraries=pg_stat_statements",
# which typical installcheck users do not have (e.g. buildfarm clients). # which typical installcheck users do not have (e.g. buildfarm clients).

View File

@ -199,7 +199,7 @@ hash_entry_dealloc(int new_bucket_id, int old_bucket_id, unsigned char *query_bu
*/ */
if (new_bucket_id < 0 || if (new_bucket_id < 0 ||
(entry->key.bucket_id == new_bucket_id && (entry->key.bucket_id == new_bucket_id &&
(entry->counters.state == PGSS_FINISHED || entry->counters.state == PGSS_ERROR))) entry->counters.state == PGSS_FINISHED))
{ {
if (new_bucket_id == -1) { if (new_bucket_id == -1) {
/* pg_stat_monitor_reset(), remove entry from query hash table too. */ /* pg_stat_monitor_reset(), remove entry from query hash table too. */
@ -219,8 +219,7 @@ hash_entry_dealloc(int new_bucket_id, int old_bucket_id, unsigned char *query_bu
if (old_bucket_id != -1 && entry->key.bucket_id == old_bucket_id) if (old_bucket_id != -1 && entry->key.bucket_id == old_bucket_id)
{ {
if (entry->counters.state == PGSS_PARSE || if (entry->counters.state == PGSS_PARSE ||
entry->counters.state == PGSS_PLAN || entry->counters.state == PGSS_PLAN)
entry->counters.state == PGSS_EXEC)
{ {
pgssEntry *bkp_entry = malloc(sizeof(pgssEntry)); pgssEntry *bkp_entry = malloc(sizeof(pgssEntry));
if (!bkp_entry) if (!bkp_entry)

View File

@ -34,7 +34,6 @@ CREATE FUNCTION pg_stat_monitor_internal(IN showtext boolean,
OUT planid text, OUT planid text,
OUT query text, OUT query text,
OUT query_plan text, OUT query_plan text,
OUT state_code int8,
OUT top_queryid text, OUT top_queryid text,
OUT top_query text, OUT top_query text,
OUT application_name text, OUT application_name text,
@ -89,19 +88,6 @@ RETURNS SETOF record
AS 'MODULE_PATHNAME', 'pg_stat_monitor' AS 'MODULE_PATHNAME', 'pg_stat_monitor'
LANGUAGE C STRICT VOLATILE PARALLEL SAFE; LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
CREATE OR REPLACE FUNCTION get_state(state_code int8) RETURNS TEXT AS
$$
SELECT
CASE
WHEN state_code = 0 THEN 'PARSING'
WHEN state_code = 1 THEN 'PLANNING'
WHEN state_code = 2 THEN 'ACTIVE'
WHEN state_code = 3 THEN 'FINISHED'
WHEN state_code = 4 THEN 'FINISHED WITH ERROR'
END
$$
LANGUAGE SQL PARALLEL SAFE;
CREATE or REPLACE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS CREATE or REPLACE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS
$$ $$
SELECT SELECT
@ -197,9 +183,7 @@ CREATE VIEW pg_stat_monitor AS SELECT
cpu_sys_time, cpu_sys_time,
wal_records, wal_records,
wal_fpi, wal_fpi,
wal_bytes, wal_bytes
state_code,
get_state(state_code) as state
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
ORDER BY bucket_start_time; ORDER BY bucket_start_time;

View File

@ -34,7 +34,6 @@ CREATE FUNCTION pg_stat_monitor_internal(IN showtext boolean,
OUT planid text, OUT planid text,
OUT query text, OUT query text,
OUT query_plan text, OUT query_plan text,
OUT state_code int8,
OUT top_queryid text, OUT top_queryid text,
OUT top_query text, OUT top_query text,
OUT application_name text, OUT application_name text,
@ -89,19 +88,6 @@ RETURNS SETOF record
AS 'MODULE_PATHNAME', 'pg_stat_monitor' AS 'MODULE_PATHNAME', 'pg_stat_monitor'
LANGUAGE C STRICT VOLATILE PARALLEL SAFE; LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
CREATE OR REPLACE FUNCTION get_state(state_code int8) RETURNS TEXT AS
$$
SELECT
CASE
WHEN state_code = 0 THEN 'PARSING'
WHEN state_code = 1 THEN 'PLANNING'
WHEN state_code = 2 THEN 'ACTIVE'
WHEN state_code = 3 THEN 'FINISHED'
WHEN state_code = 4 THEN 'FINISHED WITH ERROR'
END
$$
LANGUAGE SQL PARALLEL SAFE;
CREATE or REPLACE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS CREATE or REPLACE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS
$$ $$
SELECT SELECT
@ -198,9 +184,7 @@ CREATE VIEW pg_stat_monitor AS SELECT
cpu_sys_time, cpu_sys_time,
wal_records, wal_records,
wal_fpi, wal_fpi,
wal_bytes, wal_bytes
state_code,
get_state(state_code) as state
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
ORDER BY bucket_start_time; ORDER BY bucket_start_time;

View File

@ -34,7 +34,6 @@ CREATE FUNCTION pg_stat_monitor_internal(IN showtext boolean,
OUT planid text, OUT planid text,
OUT query text, OUT query text,
OUT query_plan text, OUT query_plan text,
OUT state_code int8,
OUT top_queryid text, OUT top_queryid text,
OUT top_query text, OUT top_query text,
OUT application_name text, OUT application_name text,
@ -86,19 +85,6 @@ RETURNS SETOF record
AS 'MODULE_PATHNAME', 'pg_stat_monitor' AS 'MODULE_PATHNAME', 'pg_stat_monitor'
LANGUAGE C STRICT VOLATILE PARALLEL SAFE; LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
CREATE OR REPLACE FUNCTION get_state(state_code int8) RETURNS TEXT AS
$$
SELECT
CASE
WHEN state_code = 0 THEN 'PARSING'
WHEN state_code = 1 THEN 'PLANNING'
WHEN state_code = 2 THEN 'ACTIVE'
WHEN state_code = 3 THEN 'FINISHED'
WHEN state_code = 4 THEN 'FINISHED WITH ERROR'
END
$$
LANGUAGE SQL PARALLEL SAFE;
CREATE or REPLACE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS CREATE or REPLACE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS
$$ $$
SELECT SELECT
@ -184,9 +170,7 @@ CREATE VIEW pg_stat_monitor AS SELECT
cpu_sys_time, cpu_sys_time,
wal_records, wal_records,
wal_fpi, wal_fpi,
wal_bytes, wal_bytes
state_code,
get_state(state_code) as state
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
ORDER BY bucket_start_time; ORDER BY bucket_start_time;

View File

@ -523,20 +523,6 @@ pgss_ExecutorStart(QueryDesc *queryDesc, int eflags)
#endif #endif
MemoryContextSwitchTo(oldcxt); MemoryContextSwitchTo(oldcxt);
} }
pgss_store(queryDesc->plannedstmt->queryId, /* query id */
queryDesc->sourceText, /* query text */
queryDesc->plannedstmt->stmt_location, /* query location */
queryDesc->plannedstmt->stmt_len, /* query length */
NULL, /* PlanInfo */
queryDesc->operation, /* CmdType */
NULL, /* SysInfo */
NULL, /* ErrorInfo */
0, /* totaltime */
0, /* rows */
NULL, /* bufusage */
NULL, /* walusage */
NULL, /* JumbleState */
PGSS_EXEC); /* pgssStoreKind */
} }
} }
@ -1410,7 +1396,7 @@ pgss_store_error(uint64 queryid,
NULL, /* bufusage */ NULL, /* bufusage */
NULL, /* walusage */ NULL, /* walusage */
NULL, /* JumbleState */ NULL, /* JumbleState */
PGSS_ERROR); /* pgssStoreKind */ PGSS_FINISHED); /* pgssStoreKind */
} }
/* /*
@ -1490,7 +1476,7 @@ pgss_store(uint64 queryid,
#endif #endif
Assert(query != NULL); Assert(query != NULL);
if (kind == PGSS_ERROR) if (error_info != NULL)
{ {
int sec_ctx; int sec_ctx;
GetUserIdAndSecContext((Oid *)&userid, &sec_ctx); GetUserIdAndSecContext((Oid *)&userid, &sec_ctx);
@ -1746,8 +1732,11 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
return; return;
} }
if (tupdesc->natts != 51) if (tupdesc->natts != 50)
elog(ERROR, "pg_stat_monitor: incorrect number of output arguments, required %d", tupdesc->natts); {
pgsm_log_error("pg_stat_monitor_internal: incorrect number of output arguments, required: 50, found %d", tupdesc->natts);
return;
}
tupstore = tuplestore_begin_heap(true, false, work_mem); tupstore = tuplestore_begin_heap(true, false, work_mem);
rsinfo->returnMode = SFRM_Materialize; rsinfo->returnMode = SFRM_Materialize;
@ -1818,7 +1807,7 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
} }
/* Skip queries such as, $1, $2 := $3, etc. */ /* Skip queries such as, $1, $2 := $3, etc. */
if (tmp.state == PGSS_PARSE || tmp.state == PGSS_PLAN) if (tmp.state != PGSS_PLAN && tmp.state != PGSS_FINISHED)
continue; continue;
if (tmp.info.parentid != UINT64CONST(0)) if (tmp.info.parentid != UINT64CONST(0))
@ -1904,10 +1893,6 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
values[i++] = CStringGetTextDatum("<insufficient privilege>"); values[i++] = CStringGetTextDatum("<insufficient privilege>");
} }
/* state at column number 8 */
values[i++] = Int64GetDatumFast(tmp.state);
/* parentid at column number 9 */ /* parentid at column number 9 */
if (tmp.info.parentid != UINT64CONST(0)) if (tmp.info.parentid != UINT64CONST(0))
{ {

View File

@ -137,16 +137,9 @@ typedef enum pgssStoreKind
{ {
PGSS_INVALID = -1, PGSS_INVALID = -1,
/*
* PGSS_PLAN and PGSS_EXEC must be respectively 0 and 1 as they're used to
* reference the underlying values in the arrays in the Counters struct,
* and this order is required in pg_stat_statements_internal().
*/
PGSS_PARSE = 0, PGSS_PARSE = 0,
PGSS_PLAN, PGSS_PLAN,
PGSS_EXEC,
PGSS_FINISHED, PGSS_FINISHED,
PGSS_ERROR,
PGSS_NUMKIND /* Must be last value of this enum */ PGSS_NUMKIND /* Must be last value of this enum */
} pgssStoreKind; } pgssStoreKind;

View File

@ -12,12 +12,11 @@ SELECT 1 AS num;
(1 row) (1 row)
SELECT query,application_name FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT query,application_name FROM pg_stat_monitor ORDER BY query COLLATE "C";
query | application_name query | application_name
-------------------------------------------------------------------------------+----------------------------- --------------------------------+-----------------------------
SELECT $1 AS num | pg_regress/application_name SELECT $1 AS num | pg_regress/application_name
SELECT pg_stat_monitor_reset() | pg_regress/application_name SELECT pg_stat_monitor_reset() | pg_regress/application_name
SELECT query,application_name FROM pg_stat_monitor ORDER BY query COLLATE "C" | pg_regress/application_name (2 rows)
(3 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -12,12 +12,11 @@ SELECT 1 AS num;
(1 row) (1 row)
SELECT query FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT query FROM pg_stat_monitor ORDER BY query COLLATE "C";
query query
-------------------------------------------------------------- --------------------------------
SELECT $1 AS num SELECT $1 AS num
SELECT pg_stat_monitor_reset() SELECT pg_stat_monitor_reset()
SELECT query FROM pg_stat_monitor ORDER BY query COLLATE "C" (2 rows)
(3 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -25,21 +25,20 @@ TRUNCATE t1;
DROP TABLE t1; DROP TABLE t1;
DROP TABLE t2; DROP TABLE t2;
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C";
query | cmd_type | cmd_type_text query | cmd_type | cmd_type_text
----------------------------------------------------------------------------------------+----------+--------------- --------------------------------+----------+---------------
CREATE TABLE t1 (a INTEGER) | 0 | CREATE TABLE t1 (a INTEGER) | 0 |
CREATE TABLE t2 (b INTEGER) | 0 | CREATE TABLE t2 (b INTEGER) | 0 |
DELETE FROM t1 | 4 | DELETE DELETE FROM t1 | 4 | DELETE
DROP TABLE t1 | 0 | DROP TABLE t1 | 0 |
DROP TABLE t2 | 0 | DROP TABLE t2 | 0 |
INSERT INTO t1 VALUES($1) | 3 | INSERT INSERT INTO t1 VALUES($1) | 3 | INSERT
SELECT a FROM t1 | 1 | SELECT SELECT a FROM t1 | 1 | SELECT
SELECT b FROM t2 FOR UPDATE | 1 | SELECT SELECT b FROM t2 FOR UPDATE | 1 | SELECT
SELECT pg_stat_monitor_reset() | 1 | SELECT SELECT pg_stat_monitor_reset() | 1 | SELECT
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C" | 1 | SELECT TRUNCATE t1 | 0 |
TRUNCATE t1 | 0 | UPDATE t1 SET a = $1 | 2 | UPDATE
UPDATE t1 SET a = $1 | 2 | UPDATE (11 rows)
(12 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -40,8 +40,7 @@ SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
---------------------------------------------------------------------------------+------- ---------------------------------------------------------------------------------+-------
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a | 4 SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a | 4
SELECT pg_stat_monitor_reset() | 1 SELECT pg_stat_monitor_reset() | 1
SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C" | 1 (2 rows)
(3 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset
@ -70,7 +69,6 @@ SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
---------------------------------------------------------------------------------------------------+------- ---------------------------------------------------------------------------------------------------+-------
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a | 1000 SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a | 1000
SELECT pg_stat_monitor_reset() | 1 SELECT pg_stat_monitor_reset() | 1
SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C" | 1
do $$ +| 1 do $$ +| 1
declare +| declare +|
n integer:= 1; +| n integer:= 1; +|
@ -81,7 +79,7 @@ SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
n := n + 1; +| n := n + 1; +|
end loop; +| end loop; +|
end $$ | end $$ |
(4 rows) (3 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -28,13 +28,12 @@ SELECT * FROM t3,t4 WHERE t3.c = t4.d;
\c contrib_regression \c contrib_regression
SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
datname | query datname | query
--------------------+----------------------------------------------------------------------- --------------------+---------------------------------------
db1 | SELECT * FROM t1,t2 WHERE t1.a = t2.b db1 | SELECT * FROM t1,t2 WHERE t1.a = t2.b
db2 | SELECT * FROM t3,t4 WHERE t3.c = t4.d db2 | SELECT * FROM t3,t4 WHERE t3.c = t4.d
contrib_regression | SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C"
contrib_regression | SELECT pg_stat_monitor_reset() contrib_regression | SELECT pg_stat_monitor_reset()
(4 rows) (3 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -21,22 +21,21 @@ RAISE WARNING 'warning message';
END $$; END $$;
WARNING: warning message WARNING: warning message
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel; SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel;
query | elevel | sqlcode | message query | elevel | sqlcode | message
-----------------------------------------------------------------------------------------------+--------+---------+----------------------------------- ----------------------------------+--------+---------+-----------------------------------
ELECET * FROM unknown; | 20 | 42601 | syntax error at or near "ELECET" ELECET * FROM unknown; | 20 | 42601 | syntax error at or near "ELECET"
SELECT * FROM unknown; | 20 | 42P01 | relation "unknown" does not exist SELECT * FROM unknown; | 20 | 42P01 | relation "unknown" does not exist
SELECT 1/0; | 20 | 22012 | division by zero SELECT 1/0; | 20 | 22012 | division by zero
SELECT pg_stat_monitor_reset() | 0 | | SELECT pg_stat_monitor_reset() | 0 | |
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel | 0 | | do $$ +| 0 | |
do $$ +| 0 | | BEGIN +| | |
BEGIN +| | | RAISE WARNING 'warning message';+| | |
RAISE WARNING 'warning message'; +| | | END $$ | | |
END $$ | | | do $$ +| 19 | 01000 | warning message
do $$ +| 19 | 01000 | warning message BEGIN +| | |
BEGIN +| | | RAISE WARNING 'warning message';+| | |
RAISE WARNING 'warning message'; +| | | END $$; | | |
END $$; | | | (6 rows)
(7 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -21,22 +21,21 @@ RAISE WARNING 'warning message';
END $$; END $$;
WARNING: warning message WARNING: warning message
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel; SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel;
query | elevel | sqlcode | message query | elevel | sqlcode | message
-----------------------------------------------------------------------------------------------+--------+---------+----------------------------------- ----------------------------------+--------+---------+-----------------------------------
ELECET * FROM unknown; | 21 | 42601 | syntax error at or near "ELECET" ELECET * FROM unknown; | 21 | 42601 | syntax error at or near "ELECET"
SELECT * FROM unknown; | 21 | 42P01 | relation "unknown" does not exist SELECT * FROM unknown; | 21 | 42P01 | relation "unknown" does not exist
SELECT 1/0; | 21 | 22012 | division by zero SELECT 1/0; | 21 | 22012 | division by zero
SELECT pg_stat_monitor_reset() | 0 | | SELECT pg_stat_monitor_reset() | 0 | |
SELECT query, elevel, sqlcode, message FROM pg_stat_monitor ORDER BY query COLLATE "C",elevel | 0 | | do $$ +| 0 | |
do $$ +| 0 | | BEGIN +| | |
BEGIN +| | | RAISE WARNING 'warning message';+| | |
RAISE WARNING 'warning message'; +| | | END $$ | | |
END $$ | | | do $$ +| 19 | 01000 | warning message
do $$ +| 19 | 01000 | warning message BEGIN +| | |
BEGIN +| | | RAISE WARNING 'warning message';+| | |
RAISE WARNING 'warning message'; +| | | END $$; | | |
END $$; | | | (6 rows)
(7 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -37,15 +37,14 @@ SELECT * FROM foo1, foo2, foo3, foo4;
(0 rows) (0 rows)
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C"; SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
query | relations query | relations
-------------------------------------------------------------------------+--------------------------------------------------- --------------------------------------+---------------------------------------------------
SELECT * FROM foo1 | {public.foo1} SELECT * FROM foo1 | {public.foo1}
SELECT * FROM foo1, foo2 | {public.foo1,public.foo2} SELECT * FROM foo1, foo2 | {public.foo1,public.foo2}
SELECT * FROM foo1, foo2, foo3 | {public.foo1,public.foo2,public.foo3} SELECT * FROM foo1, foo2, foo3 | {public.foo1,public.foo2,public.foo3}
SELECT * FROM foo1, foo2, foo3, foo4 | {public.foo1,public.foo2,public.foo3,public.foo4} SELECT * FROM foo1, foo2, foo3, foo4 | {public.foo1,public.foo2,public.foo3,public.foo4}
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C" | {public.pg_stat_monitor*,pg_catalog.pg_database} (5 rows)
(6 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset
@ -89,15 +88,14 @@ SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3, sch4.foo4;
(0 rows) (0 rows)
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C"; SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
query | relations query | relations
-------------------------------------------------------------------------+-------------------------------------------------- ----------------------------------------------------------+-------------------------------------------
SELECT * FROM sch1.foo1 | {sch1.foo1} SELECT * FROM sch1.foo1 | {sch1.foo1}
SELECT * FROM sch1.foo1, sch2.foo2 | {sch1.foo1,sch2.foo2} SELECT * FROM sch1.foo1, sch2.foo2 | {sch1.foo1,sch2.foo2}
SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3 | {sch1.foo1,sch2.foo2,sch3.foo3} SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3 | {sch1.foo1,sch2.foo2,sch3.foo3}
SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3, sch4.foo4 | {sch1.foo1,sch2.foo2,sch3.foo3,sch4.foo4} SELECT * FROM sch1.foo1, sch2.foo2, sch3.foo3, sch4.foo4 | {sch1.foo1,sch2.foo2,sch3.foo3,sch4.foo4}
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C" | {public.pg_stat_monitor*,pg_catalog.pg_database} (5 rows)
(6 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset
@ -122,13 +120,12 @@ SELECT * FROM sch1.foo1, sch2.foo2, foo1, foo2;
(0 rows) (0 rows)
SELECT query, relations from pg_stat_monitor ORDER BY query; SELECT query, relations from pg_stat_monitor ORDER BY query;
query | relations query | relations
-------------------------------------------------------------+-------------------------------------------------- ------------------------------------------------+-----------------------------------------------
SELECT * FROM sch1.foo1, foo1 | {sch1.foo1,public.foo1} SELECT * FROM sch1.foo1, foo1 | {sch1.foo1,public.foo1}
SELECT * FROM sch1.foo1, sch2.foo2, foo1, foo2 | {sch1.foo1,sch2.foo2,public.foo1,public.foo2} SELECT * FROM sch1.foo1, sch2.foo2, foo1, foo2 | {sch1.foo1,sch2.foo2,public.foo1,public.foo2}
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, relations from pg_stat_monitor ORDER BY query | {public.pg_stat_monitor*,pg_catalog.pg_database} (3 rows)
(4 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset
@ -168,15 +165,14 @@ SELECT * FROM v1,v2,v3,v4;
(0 rows) (0 rows)
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C"; SELECT query, relations from pg_stat_monitor ORDER BY query collate "C";
query | relations query | relations
-------------------------------------------------------------------------+----------------------------------------------------------------------------------------------- --------------------------------+-----------------------------------------------------------------------------------------------
SELECT * FROM v1 | {public.v1*,public.foo1} SELECT * FROM v1 | {public.v1*,public.foo1}
SELECT * FROM v1,v2 | {public.v1*,public.foo1,public.v2*,public.foo2} SELECT * FROM v1,v2 | {public.v1*,public.foo1,public.v2*,public.foo2}
SELECT * FROM v1,v2,v3 | {public.v1*,public.foo1,public.v2*,public.foo2,public.v3*,public.foo3} SELECT * FROM v1,v2,v3 | {public.v1*,public.foo1,public.v2*,public.foo2,public.v3*,public.foo3}
SELECT * FROM v1,v2,v3,v4 | {public.v1*,public.foo1,public.v2*,public.foo2,public.v3*,public.foo3,public.v4*,public.foo4} SELECT * FROM v1,v2,v3,v4 | {public.v1*,public.foo1,public.v2*,public.foo2,public.v3*,public.foo3,public.v4*,public.foo4}
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, relations from pg_stat_monitor ORDER BY query collate "C" | {public.pg_stat_monitor*,pg_catalog.pg_database} (5 rows)
(6 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -8540,15 +8540,14 @@ SELECt * FROM t2 WHERE b % 2 = 0;
(2500 rows) (2500 rows)
SELECT query, rows_retrieved FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT query, rows_retrieved FROM pg_stat_monitor ORDER BY query COLLATE "C";
query | rows_retrieved query | rows_retrieved
------------------------------------------------------------------------------+---------------- -------------------------------------+----------------
SELECT * FROM t1 | 1000 SELECT * FROM t1 | 1000
SELECT * FROM t1 LIMIT $1 | 10 SELECT * FROM t1 LIMIT $1 | 10
SELECT * FROM t2 | 5000 SELECT * FROM t2 | 5000
SELECT pg_stat_monitor_reset() | 1 SELECT pg_stat_monitor_reset() | 1
SELECT query, rows_retrieved FROM pg_stat_monitor ORDER BY query COLLATE "C" | 0 SELECt * FROM t2 WHERE b % $1 = $2 | 2500
SELECt * FROM t2 WHERE b % $1 = $2 | 2500 (5 rows)
(6 rows)
SELECT pg_stat_monitor_reset(); SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset pg_stat_monitor_reset

View File

@ -1,31 +0,0 @@
CREATE EXTENSION pg_stat_monitor;
SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset
-----------------------
(1 row)
SELECT 1;
?column?
----------
1
(1 row)
SELECT 1/0; -- divide by zero
ERROR: division by zero
SELECT query, state_code, state FROM pg_stat_monitor ORDER BY query COLLATE "C";
query | state_code | state
---------------------------------------------------------------------------------+------------+---------------------
SELECT $1 | 3 | FINISHED
SELECT 1/0; | 4 | FINISHED WITH ERROR
SELECT pg_stat_monitor_reset() | 3 | FINISHED
SELECT query, state_code, state FROM pg_stat_monitor ORDER BY query COLLATE "C" | 2 | ACTIVE
(4 rows)
SELECT pg_stat_monitor_reset();
pg_stat_monitor_reset
-----------------------
(1 row)
DROP EXTENSION pg_stat_monitor;

View File

@ -16,8 +16,7 @@ SELECT query, comments FROM pg_stat_monitor ORDER BY query COLLATE "C";
---------------------------------------------------------------------------+---------- ---------------------------------------------------------------------------+----------
SELECT $1 AS num /* { "application", psql_app, "real_ip", 192.168.1.3) */ | SELECT $1 AS num /* { "application", psql_app, "real_ip", 192.168.1.3) */ |
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, comments FROM pg_stat_monitor ORDER BY query COLLATE "C" | (2 rows)
(3 rows)
ALTER SYSTEM SET pg_stat_monitor.extract_comments TO 'yes'; ALTER SYSTEM SET pg_stat_monitor.extract_comments TO 'yes';
SELECT pg_reload_conf(); SELECT pg_reload_conf();
@ -49,8 +48,7 @@ SELECT query, comments FROM pg_stat_monitor ORDER BY query COLLATE "C";
---------------------------------------------------------------------------+---------------------------------------------------------- ---------------------------------------------------------------------------+----------------------------------------------------------
SELECT $1 AS num /* { "application", psql_app, "real_ip", 192.168.1.3) */ | /* { "application", psql_app, "real_ip", 192.168.1.3) */ SELECT $1 AS num /* { "application", psql_app, "real_ip", 192.168.1.3) */ | /* { "application", psql_app, "real_ip", 192.168.1.3) */
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, comments FROM pg_stat_monitor ORDER BY query COLLATE "C" | (2 rows)
(3 rows)
ALTER SYSTEM SET pg_stat_monitor.extract_comments TO 'no'; ALTER SYSTEM SET pg_stat_monitor.extract_comments TO 'no';
SELECT pg_reload_conf(); SELECT pg_reload_conf();

View File

@ -23,23 +23,22 @@ SELECT add2(1,2);
(1 row) (1 row)
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C";
query | top_query query | top_query
-------------------------------------------------------------------------+----------- -------------------------------------------------------------+-----------
CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS +| CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS+|
$$ +| $$ +|
BEGIN +| BEGIN +|
return (select $1 + $2); +| return (select $1 + $2); +|
END; $$ language plpgsql | END; $$ language plpgsql |
CREATE OR REPLACE function add2(int, int) RETURNS int as +| CREATE OR REPLACE function add2(int, int) RETURNS int as +|
$$ +| $$ +|
BEGIN +| BEGIN +|
return add($1,$2); +| return add($1,$2); +|
END; +| END; +|
$$ language plpgsql | $$ language plpgsql |
SELECT add2($1,$2) | SELECT add2($1,$2) |
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C" | (4 rows)
(5 rows)
ALTER SYSTEM SET pg_stat_monitor.track TO 'all'; ALTER SYSTEM SET pg_stat_monitor.track TO 'all';
SELECT pg_reload_conf(); SELECT pg_reload_conf();
@ -78,24 +77,23 @@ SELECT add2(1,2);
(1 row) (1 row)
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C";
query | top_query query | top_query
-------------------------------------------------------------------------+-------------------- -------------------------------------------------------------+--------------------
CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS +| CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS+|
$$ +| $$ +|
BEGIN +| BEGIN +|
return (select $1 + $2); +| return (select $1 + $2); +|
END; $$ language plpgsql | END; $$ language plpgsql |
CREATE OR REPLACE function add2(int, int) RETURNS int as +| CREATE OR REPLACE function add2(int, int) RETURNS int as +|
$$ +| $$ +|
BEGIN +| BEGIN +|
return add($1,$2); +| return add($1,$2); +|
END; +| END; +|
$$ language plpgsql | $$ language plpgsql |
SELECT (select $1 + $2) | SELECT add2($1,$2) SELECT (select $1 + $2) | SELECT add2($1,$2)
SELECT add2($1,$2) | SELECT add2($1,$2) |
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C" | (5 rows)
(6 rows)
ALTER SYSTEM SET pg_stat_monitor.track TO 'top'; ALTER SYSTEM SET pg_stat_monitor.track TO 'top';
SELECT pg_reload_conf(); SELECT pg_reload_conf();

View File

@ -23,23 +23,22 @@ SELECT add2(1,2);
(1 row) (1 row)
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C";
query | top_query query | top_query
-------------------------------------------------------------------------+----------- -------------------------------------------------------------+-----------
CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS +| CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS+|
$$ +| $$ +|
BEGIN +| BEGIN +|
return (select $1 + $2); +| return (select $1 + $2); +|
END; $$ language plpgsql | END; $$ language plpgsql |
CREATE OR REPLACE function add2(int, int) RETURNS int as +| CREATE OR REPLACE function add2(int, int) RETURNS int as +|
$$ +| $$ +|
BEGIN +| BEGIN +|
return add($1,$2); +| return add($1,$2); +|
END; +| END; +|
$$ language plpgsql | $$ language plpgsql |
SELECT add2($1,$2) | SELECT add2($1,$2) |
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C" | (4 rows)
(5 rows)
ALTER SYSTEM SET pg_stat_monitor.track TO 'all'; ALTER SYSTEM SET pg_stat_monitor.track TO 'all';
SELECT pg_reload_conf(); SELECT pg_reload_conf();
@ -78,24 +77,23 @@ SELECT add2(1,2);
(1 row) (1 row)
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C"; SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C";
query | top_query query | top_query
-------------------------------------------------------------------------+-------------------- -------------------------------------------------------------+--------------------
(select $1 + $2) | SELECT add2($1,$2) (select $1 + $2) | SELECT add2($1,$2)
CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS +| CREATE OR REPLACE FUNCTION add(int, int) RETURNS INTEGER AS+|
$$ +| $$ +|
BEGIN +| BEGIN +|
return (select $1 + $2); +| return (select $1 + $2); +|
END; $$ language plpgsql | END; $$ language plpgsql |
CREATE OR REPLACE function add2(int, int) RETURNS int as +| CREATE OR REPLACE function add2(int, int) RETURNS int as +|
$$ +| $$ +|
BEGIN +| BEGIN +|
return add($1,$2); +| return add($1,$2); +|
END; +| END; +|
$$ language plpgsql | $$ language plpgsql |
SELECT add2($1,$2) | SELECT add2($1,$2) |
SELECT pg_stat_monitor_reset() | SELECT pg_stat_monitor_reset() |
SELECT query, top_query FROM pg_stat_monitor ORDER BY query COLLATE "C" | (5 rows)
(6 rows)
ALTER SYSTEM SET pg_stat_monitor.track TO 'top'; ALTER SYSTEM SET pg_stat_monitor.track TO 'top';
SELECT pg_reload_conf(); SELECT pg_reload_conf();

View File

@ -1,8 +0,0 @@
CREATE EXTENSION pg_stat_monitor;
SELECT pg_stat_monitor_reset();
SELECT 1;
SELECT 1/0; -- divide by zero
SELECT query, state_code, state FROM pg_stat_monitor ORDER BY query COLLATE "C";
SELECT pg_stat_monitor_reset();
DROP EXTENSION pg_stat_monitor;