mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Keep pg_stat_statements' query texts in a file, not in shared memory.
This change allows us to eliminate the previous limit on stored query length, and it makes the shared-memory hash table very much smaller, allowing more statements to be tracked. (The default value of pg_stat_statements.max is therefore increased from 1000 to 5000.) In typical scenarios, the hash table can be large enough to hold all the statements commonly issued by an application, so that there is little "churn" in the set of tracked statements, and thus little need to do I/O to the file. To further reduce the need for I/O to the query-texts file, add a way to retrieve all the columns of the pg_stat_statements view except for the query text column. This is probably not of much interest for human use but it could be exploited by programs, which will prefer using the queryid anyway. Ordinarily, we'd need to bump the extension version number for the latter change. But since we already advanced pg_stat_statements' version number from 1.1 to 1.2 in the 9.4 development cycle, it seems all right to just redefine what 1.2 means. Peter Geoghegan, reviewed by Pavel Stehule
This commit is contained in:
@ -12,7 +12,7 @@ DROP VIEW pg_stat_statements;
|
||||
DROP FUNCTION pg_stat_statements();
|
||||
|
||||
/* Now redefine */
|
||||
CREATE FUNCTION pg_stat_statements(
|
||||
CREATE FUNCTION pg_stat_statements(IN showtext boolean,
|
||||
OUT userid oid,
|
||||
OUT dbid oid,
|
||||
OUT queryid bigint,
|
||||
@ -34,10 +34,10 @@ CREATE FUNCTION pg_stat_statements(
|
||||
OUT blk_write_time float8
|
||||
)
|
||||
RETURNS SETOF record
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C;
|
||||
AS 'MODULE_PATHNAME', 'pg_stat_statements_1_2'
|
||||
LANGUAGE C STRICT VOLATILE;
|
||||
|
||||
CREATE VIEW pg_stat_statements AS
|
||||
SELECT * FROM pg_stat_statements();
|
||||
SELECT * FROM pg_stat_statements(true);
|
||||
|
||||
GRANT SELECT ON pg_stat_statements TO PUBLIC;
|
||||
|
@ -9,7 +9,7 @@ RETURNS void
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C;
|
||||
|
||||
CREATE FUNCTION pg_stat_statements(
|
||||
CREATE FUNCTION pg_stat_statements(IN showtext boolean,
|
||||
OUT userid oid,
|
||||
OUT dbid oid,
|
||||
OUT queryid bigint,
|
||||
@ -31,12 +31,12 @@ CREATE FUNCTION pg_stat_statements(
|
||||
OUT blk_write_time float8
|
||||
)
|
||||
RETURNS SETOF record
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C;
|
||||
AS 'MODULE_PATHNAME', 'pg_stat_statements_1_2'
|
||||
LANGUAGE C STRICT VOLATILE;
|
||||
|
||||
-- Register a view on the function for ease of use.
|
||||
CREATE VIEW pg_stat_statements AS
|
||||
SELECT * FROM pg_stat_statements();
|
||||
SELECT * FROM pg_stat_statements(true);
|
||||
|
||||
GRANT SELECT ON pg_stat_statements TO PUBLIC;
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user