Merge pull request #312 from ibrarahmad/PG-320
PG-320: Removing the query state code from the view.pull/316/head
commit
bcb1a3b1b8
|
@ -3,3 +3,274 @@
|
||||||
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
||||||
\echo Use "ALTER EXTENSION pg_stat_monitor" to load this file. \quit
|
\echo Use "ALTER EXTENSION pg_stat_monitor" to load this file. \quit
|
||||||
|
|
||||||
|
DROP FUNCTION pg_stat_monitor_internal CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_11_view CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_13_view CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_14_view CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_view CASCADE;
|
||||||
|
|
||||||
|
-- pg_stat_monitor internal function, must not call outside from this file.
|
||||||
|
CREATE FUNCTION pg_stat_monitor_internal(
|
||||||
|
IN showtext boolean,
|
||||||
|
OUT bucket int8, -- 0
|
||||||
|
OUT userid oid,
|
||||||
|
OUT dbid oid,
|
||||||
|
OUT client_ip int8,
|
||||||
|
|
||||||
|
OUT queryid text, -- 4
|
||||||
|
OUT planid text,
|
||||||
|
OUT query text,
|
||||||
|
OUT query_plan text,
|
||||||
|
OUT top_queryid text,
|
||||||
|
OUT top_query text,
|
||||||
|
OUT application_name text,
|
||||||
|
|
||||||
|
OUT relations text, -- 11
|
||||||
|
OUT cmd_type int,
|
||||||
|
OUT elevel int,
|
||||||
|
OUT sqlcode TEXT,
|
||||||
|
OUT message text,
|
||||||
|
OUT bucket_start_time text,
|
||||||
|
|
||||||
|
OUT calls int8, -- 16
|
||||||
|
|
||||||
|
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_retrieved int8,
|
||||||
|
|
||||||
|
OUT plans_calls int8, -- 23
|
||||||
|
|
||||||
|
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 shared_blks_hit int8, -- 29
|
||||||
|
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 resp_calls text, -- 41
|
||||||
|
OUT cpu_user_time float8,
|
||||||
|
OUT cpu_sys_time float8,
|
||||||
|
OUT wal_records int8,
|
||||||
|
OUT wal_fpi int8,
|
||||||
|
OUT wal_bytes numeric,
|
||||||
|
OUT comments TEXT,
|
||||||
|
OUT toplevel BOOLEAN
|
||||||
|
)
|
||||||
|
RETURNS SETOF record
|
||||||
|
AS 'MODULE_PATHNAME', 'pg_stat_monitor'
|
||||||
|
LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
|
||||||
|
|
||||||
|
-- Register a view on the function for ease of use.
|
||||||
|
CREATE FUNCTION pgsm_create_11_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid::regrole,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows_retrieved,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
blk_read_time,
|
||||||
|
blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes
|
||||||
|
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_13_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid::regrole,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows_retrieved,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
blk_read_time,
|
||||||
|
blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes,
|
||||||
|
-- PostgreSQL-13 Specific Coulumns
|
||||||
|
plans_calls
|
||||||
|
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_14_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid::regrole,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows_retrieved,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
blk_read_time,
|
||||||
|
blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes,
|
||||||
|
|
||||||
|
-- PostgreSQL-14 Specific Columns
|
||||||
|
plans_calls,
|
||||||
|
total_plan_time,
|
||||||
|
min_plan_time,
|
||||||
|
max_plan_time,
|
||||||
|
mean_plan_time,
|
||||||
|
stddev_plan_time
|
||||||
|
FROM pg_stat_monitor_internal(TRUE) p, pg_database d WHERE dbid = oid
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
DECLARE ver integer;
|
||||||
|
BEGIN
|
||||||
|
SELECT current_setting('server_version_num') INTO ver;
|
||||||
|
IF (ver >= 14000) THEN
|
||||||
|
return pgsm_create_14_view();
|
||||||
|
END IF;
|
||||||
|
IF (ver >= 13000) THEN
|
||||||
|
return pgsm_create_13_view();
|
||||||
|
END IF;
|
||||||
|
IF (ver >= 11000) THEN
|
||||||
|
return pgsm_create_11_view();
|
||||||
|
END IF;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
SELECT pgsm_create_view();
|
||||||
|
|
||||||
|
GRANT SELECT ON pg_stat_monitor TO PUBLIC;
|
||||||
|
|
||||||
|
|
|
@ -26,19 +26,6 @@ $$ LANGUAGE SQL;
|
||||||
|
|
||||||
-- Some generic utility function used internally.
|
-- Some generic utility function used internally.
|
||||||
|
|
||||||
CREATE 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 FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS
|
CREATE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS
|
||||||
$$
|
$$
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -129,7 +116,6 @@ CREATE FUNCTION pg_stat_monitor_internal(
|
||||||
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,
|
||||||
|
@ -233,9 +219,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;
|
||||||
RETURN 0;
|
RETURN 0;
|
||||||
|
@ -292,9 +276,6 @@ CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
wal_records,
|
wal_records,
|
||||||
wal_fpi,
|
wal_fpi,
|
||||||
wal_bytes,
|
wal_bytes,
|
||||||
state_code,
|
|
||||||
get_state(state_code) as state,
|
|
||||||
|
|
||||||
-- PostgreSQL-13 Specific Coulumns
|
-- PostgreSQL-13 Specific Coulumns
|
||||||
plans_calls
|
plans_calls
|
||||||
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
|
||||||
|
@ -352,8 +333,6 @@ CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
wal_records,
|
wal_records,
|
||||||
wal_fpi,
|
wal_fpi,
|
||||||
wal_bytes,
|
wal_bytes,
|
||||||
state_code,
|
|
||||||
get_state(state_code) as state,
|
|
||||||
|
|
||||||
-- PostgreSQL-14 Specific Columns
|
-- PostgreSQL-14 Specific Columns
|
||||||
plans_calls,
|
plans_calls,
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
PG_MODULE_MAGIC;
|
PG_MODULE_MAGIC;
|
||||||
|
|
||||||
#define BUILD_VERSION "1.1.1"
|
#define BUILD_VERSION "1.1.1"
|
||||||
#define PG_STAT_STATEMENTS_COLS 53 /* maximum of above */
|
#define PG_STAT_STATEMENTS_COLS 52 /* maximum of above */
|
||||||
#define PGSM_TEXT_FILE PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat_monitor_query"
|
#define PGSM_TEXT_FILE PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat_monitor_query"
|
||||||
|
|
||||||
#define roundf(x,d) ((floor(((x)*pow(10,d))+.5))/pow(10,d))
|
#define roundf(x,d) ((floor(((x)*pow(10,d))+.5))/pow(10,d))
|
||||||
|
@ -463,22 +463,6 @@ pgss_post_parse_analyze(ParseState *pstate, Query *query)
|
||||||
*/
|
*/
|
||||||
if (query->queryId == UINT64CONST(0))
|
if (query->queryId == UINT64CONST(0))
|
||||||
query->queryId = UINT64CONST(1);
|
query->queryId = UINT64CONST(1);
|
||||||
|
|
||||||
if (jstate.clocations_count > 0)
|
|
||||||
pgss_store(query->queryId, /* query id */
|
|
||||||
pstate->p_sourcetext, /* query */
|
|
||||||
query->stmt_location, /* query location */
|
|
||||||
query->stmt_len, /* query length */
|
|
||||||
NULL, /* PlanInfo */
|
|
||||||
query->commandType, /* CmdType */
|
|
||||||
NULL, /* SysInfo */
|
|
||||||
NULL, /* ErrorInfo */
|
|
||||||
0, /* totaltime */
|
|
||||||
0, /* rows */
|
|
||||||
NULL, /* bufusage */
|
|
||||||
NULL, /* walusage */
|
|
||||||
&jstate, /* JumbleState */
|
|
||||||
PGSS_PARSE); /* pgssStoreKind */
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -521,20 +505,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 */
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1657,7 +1627,7 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
|
||||||
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
|
if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
|
||||||
elog(ERROR, "pg_stat_monitor: return type must be a row type");
|
elog(ERROR, "pg_stat_monitor: return type must be a row type");
|
||||||
|
|
||||||
if (tupdesc->natts != 51)
|
if (tupdesc->natts != 50)
|
||||||
elog(ERROR, "pg_stat_monitor: incorrect number of output arguments, required %d", tupdesc->natts);
|
elog(ERROR, "pg_stat_monitor: incorrect number of output arguments, required %d", tupdesc->natts);
|
||||||
|
|
||||||
tupstore = tuplestore_begin_heap(true, false, work_mem);
|
tupstore = tuplestore_begin_heap(true, false, work_mem);
|
||||||
|
@ -1802,11 +1772,7 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
|
||||||
values[i++] = CStringGetTextDatum("<insufficient privilege>");
|
values[i++] = CStringGetTextDatum("<insufficient privilege>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* parentid at column number 8 */
|
||||||
/* state at column number 8 */
|
|
||||||
values[i++] = Int64GetDatumFast(tmp.state);
|
|
||||||
|
|
||||||
/* parentid at column number 9 */
|
|
||||||
if (tmp.info.parentid != UINT64CONST(0))
|
if (tmp.info.parentid != UINT64CONST(0))
|
||||||
{
|
{
|
||||||
snprintf(parentid_txt, 32, "%08lX", tmp.info.parentid);
|
snprintf(parentid_txt, 32, "%08lX", tmp.info.parentid);
|
||||||
|
@ -1819,7 +1785,7 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
|
||||||
nulls[i++] = true;
|
nulls[i++] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* application_name at column number 9 */
|
/* application_name at column number 10 */
|
||||||
if (strlen(tmp.info.application_name) > 0)
|
if (strlen(tmp.info.application_name) > 0)
|
||||||
values[i++] = CStringGetTextDatum(tmp.info.application_name);
|
values[i++] = CStringGetTextDatum(tmp.info.application_name);
|
||||||
else
|
else
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -20,15 +20,14 @@ SELECT 1 AS num;
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT query,application_name FROM pg_stat_monitor ORDER BY query, application_name COLLATE "C";
|
SELECT query,application_name FROM pg_stat_monitor ORDER BY query, application_name COLLATE "C";
|
||||||
query | application_name
|
query | application_name
|
||||||
-------------------------------------------------------------------------------------------------+------------------------------------
|
--------------------------------+------------------------------------
|
||||||
SELECT 1 AS num | naeem
|
SELECT 1 AS num | naeem
|
||||||
SELECT 1 AS num | psql
|
SELECT 1 AS num | psql
|
||||||
SELECT pg_stat_monitor_reset() | pg_regress/application_name_unique
|
SELECT pg_stat_monitor_reset() | pg_regress/application_name_unique
|
||||||
SELECT query,application_name FROM pg_stat_monitor ORDER BY query, application_name COLLATE "C" | psql
|
Set application_name = 'naeem' | naeem
|
||||||
Set application_name = 'naeem' | naeem
|
Set application_name = 'psql' | psql
|
||||||
Set application_name = 'psql' | psql
|
(5 rows)
|
||||||
(6 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -24,20 +24,19 @@ SELECT b FROM t2 FOR UPDATE;
|
||||||
TRUNCATE t1;
|
TRUNCATE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
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 |
|
||||||
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 = 2 | 2 | UPDATE
|
||||||
UPDATE t1 SET a = 2 | 2 | UPDATE
|
(10 rows)
|
||||||
(11 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -41,8 +41,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
|
||||||
|
@ -76,7 +75,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)
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
Set pg_stat_monitor.pgsm_track='all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INTEGER);
|
||||||
|
CREATE TABLE t2 (b INTEGER);
|
||||||
|
CREATE TABLE t3 (c INTEGER);
|
||||||
|
CREATE TABLE t4 (d INTEGER);
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
a | b | c | d
|
||||||
|
---+---+---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
a | b | c | d
|
||||||
|
---+---+---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
a | b | c | d
|
||||||
|
---+---+---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
a | b | c | d
|
||||||
|
---+---+---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
query | calls
|
||||||
|
---------------------------------------------------------------------------------+-------
|
||||||
|
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
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
do $$
|
||||||
|
declare
|
||||||
|
n integer:= 1;
|
||||||
|
begin
|
||||||
|
loop
|
||||||
|
PERFORM a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;
|
||||||
|
exit when n = 1000;
|
||||||
|
n := n + 1;
|
||||||
|
end loop;
|
||||||
|
end $$;
|
||||||
|
SELECT query,calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
query | calls
|
||||||
|
---------------------------------------------------------------------------------------------------+-------
|
||||||
|
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
|
||||||
|
do $$ +| 1
|
||||||
|
declare +|
|
||||||
|
n integer:= 1; +|
|
||||||
|
begin +|
|
||||||
|
loop +|
|
||||||
|
PERFORM a,b,c,d FROM t1, t2, t3, t4 WHERE t1.a = t2.b AND t3.c = t4.d ORDER BY a;+|
|
||||||
|
exit when n = 1000; +|
|
||||||
|
n := n + 1; +|
|
||||||
|
end loop; +|
|
||||||
|
end $$ |
|
||||||
|
(3 rows)
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -28,13 +28,13 @@ 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 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
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
CREATE DATABASE db2;
|
||||||
|
\c db1
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
CREATE TABLE t2 (b int);
|
||||||
|
\c db2
|
||||||
|
CREATE TABLE t3 (c int);
|
||||||
|
CREATE TABLE t4 (d int);
|
||||||
|
\c contrib_regression
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\c db1
|
||||||
|
SELECT * FROM t1,t2 WHERE t1.a = t2.b;
|
||||||
|
a | b
|
||||||
|
---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
\c db2
|
||||||
|
SELECT * FROM t3,t4 WHERE t3.c = t4.d;
|
||||||
|
c | d
|
||||||
|
---+---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
\c contrib_regression
|
||||||
|
SELECT datname, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
datname | query
|
||||||
|
--------------------+---------------------------------------
|
||||||
|
db1 | SELECT * FROM t1,t2 WHERE t1.a = t2.b
|
||||||
|
db2 | SELECT * FROM t3,t4 WHERE t3.c = t4.d
|
||||||
|
contrib_regression | SELECT pg_stat_monitor_reset()
|
||||||
|
(3 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\c db1
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
\c db2
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
||||||
|
\c contrib_regression
|
||||||
|
DROP DATABASE db1;
|
||||||
|
DROP DATABASE db2;
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -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; | 20 | 42601 | syntax error at or near "ELECET"
|
||||||
SELECT * FROM unknown; | 21 | 42P01 | relation "unknown" does not exist
|
SELECT * FROM unknown; | 20 | 42P01 | relation "unknown" does not exist
|
||||||
SELECT 1/0; | 21 | 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
|
||||||
|
|
|
@ -17,14 +17,13 @@ ERROR: duplicate key value violates unique constraint "company_pkey"
|
||||||
DETAIL: Key (id)=(1) already exists.
|
DETAIL: Key (id)=(1) already exists.
|
||||||
Drop Table if exists Company;
|
Drop Table if exists Company;
|
||||||
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
|
||||||
-----------------------------------------------------------------------------------------------+--------+---------+---------------------------------------------------------------
|
-------------------------------------------------------+--------+---------+---------------------------------------------------------------
|
||||||
Drop Table if exists Company | 0 | |
|
Drop Table if exists Company | 0 | |
|
||||||
INSERT INTO Company(ID, Name) VALUES (1, 'Percona') | 0 | |
|
INSERT INTO Company(ID, Name) VALUES (1, 'Percona') | 0 | |
|
||||||
INSERT INTO Company(ID, Name) VALUES (1, 'Percona'); | 21 | 23505 | duplicate key value violates unique constraint "company_pkey"
|
INSERT INTO Company(ID, Name) VALUES (1, 'Percona'); | 20 | 23505 | duplicate key value violates unique constraint "company_pkey"
|
||||||
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 | |
|
(4 rows)
|
||||||
(5 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -45,14 +45,13 @@ INFO: Sleep 5 seconds
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT substr(query, 0,50) as query, calls, resp_calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT substr(query, 0,50) as query, calls, resp_calls FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query | calls | resp_calls
|
query | calls | resp_calls
|
||||||
---------------------------------------------------+-------+-----------------------
|
--------------------------------------+-------+-----------------------
|
||||||
SELECT pg_sleep(i) | 5 | {0,0,0,0,0,0,3,2,0,0}
|
SELECT pg_sleep(i) | 5 | {0,0,0,0,0,0,3,2,0,0}
|
||||||
SELECT pg_stat_monitor_reset() | 1 | {1,0,0,0,0,0,0,0,0,0}
|
SELECT pg_stat_monitor_reset() | 1 | {1,0,0,0,0,0,0,0,0,0}
|
||||||
SELECT substr(query, 0,50) as query, calls, resp_ | 1 | {1,0,0,0,0,0,0,0,0,0}
|
Set pg_stat_monitor.pgsm_track='all' | 1 | {1,0,0,0,0,0,0,0,0,0}
|
||||||
Set pg_stat_monitor.pgsm_track='all' | 1 | {1,0,0,0,0,0,0,0,0,0}
|
select run_pg_sleep(5) | 1 | {0,0,0,0,0,0,0,0,1,0}
|
||||||
select run_pg_sleep(5) | 1 | {0,0,0,0,0,0,0,0,1,0}
|
(4 rows)
|
||||||
(5 rows)
|
|
||||||
|
|
||||||
select * from generate_histogram();
|
select * from generate_histogram();
|
||||||
range | freq | bar
|
range | freq | bar
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -8541,15 +8541,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 10 | 10
|
SELECT * FROM t1 LIMIT 10 | 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 % 2 = 0 | 2500
|
||||||
SELECt * FROM t2 WHERE b % 2 = 0 | 2500
|
(5 rows)
|
||||||
(6 rows)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -17,8 +17,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)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -24,24 +24,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)
|
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 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)
|
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -26,12 +26,11 @@ SELECT * from pg_stat_monitor_settings;
|
||||||
(15 rows)
|
(15 rows)
|
||||||
|
|
||||||
select datname, substr(query,0,100) as query, calls from pg_stat_monitor order by datname, query, calls desc Limit 20;
|
select datname, substr(query,0,100) as query, calls from pg_stat_monitor order by datname, query, calls desc Limit 20;
|
||||||
datname | query | calls
|
datname | query | calls
|
||||||
----------+-----------------------------------------------------------------------------------------------------+-------
|
----------+----------------------------------------+-------
|
||||||
postgres | SELECT * from pg_stat_monitor_settings | 1
|
postgres | SELECT * from pg_stat_monitor_settings | 1
|
||||||
postgres | SELECT pg_stat_monitor_reset() | 1
|
postgres | SELECT pg_stat_monitor_reset() | 1
|
||||||
postgres | select datname, substr(query,0,100) as query, calls from pg_stat_monitor order by datname, query, c | 1
|
(2 rows)
|
||||||
(3 rows)
|
|
||||||
|
|
||||||
SELECT * from pg_stat_monitor_settings;
|
SELECT * from pg_stat_monitor_settings;
|
||||||
name | value | default_value | description | minimum | maximum | options | restart
|
name | value | default_value | description | minimum | maximum | options | restart
|
||||||
|
|
Loading…
Reference in New Issue