Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions contrib/pg_stat_statements/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ OBJS = \

EXTENSION = pg_stat_statements
DATA = pg_stat_statements--1.4.sql \
pg_stat_statements--1.13--1.14.sql \
pg_stat_statements--1.12--1.13.sql \
pg_stat_statements--1.11--1.12.sql pg_stat_statements--1.10--1.11.sql \
pg_stat_statements--1.9--1.10.sql pg_stat_statements--1.8--1.9.sql \
Expand Down
13 changes: 13 additions & 0 deletions contrib/pg_stat_statements/expected/oldextversions.out
Original file line number Diff line number Diff line change
Expand Up @@ -474,4 +474,17 @@ SELECT count(*) > 0 AS has_data FROM pg_stat_statements;
t
(1 row)

-- New functions and views for pg_stat_statements_info in 1.14
AlTER EXTENSION pg_stat_statements UPDATE TO '1.14';
SELECT pg_get_functiondef('pg_stat_statements_info'::regproc);
pg_get_functiondef
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION public.pg_stat_statements_info(OUT dealloc bigint, OUT gc_count bigint, OUT query_file_size bigint, OUT stats_reset timestamp with time zone)+
RETURNS record +
LANGUAGE c +
PARALLEL SAFE STRICT +
AS '$libdir/pg_stat_statements', $function$pg_stat_statements_info$function$ +

(1 row)

DROP EXTENSION pg_stat_statements;
1 change: 1 addition & 0 deletions contrib/pg_stat_statements/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ contrib_targets += pg_stat_statements
install_data(
'pg_stat_statements.control',
'pg_stat_statements--1.4.sql',
'pg_stat_statements--1.13--1.14.sql',
'pg_stat_statements--1.12--1.13.sql',
'pg_stat_statements--1.11--1.12.sql',
'pg_stat_statements--1.10--1.11.sql',
Expand Down
28 changes: 28 additions & 0 deletions contrib/pg_stat_statements/pg_stat_statements--1.13--1.14.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/* contrib/pg_stat_statements/pg_stat_statements--1.13--1.14.sql */

-- complain if script is sourced in psql, rather than via ALTER EXTENSION
\echo Use "ALTER EXTENSION pg_stat_statements UPDATE TO '1.14'" to load this file. \quit

/* First we have to remove them from the extension */
ALTER EXTENSION pg_stat_statements DROP VIEW pg_stat_statements_info;
ALTER EXTENSION pg_stat_statements DROP FUNCTION pg_stat_statements_info();

/* Then we can drop them */
DROP VIEW pg_stat_statements_info;
DROP FUNCTION pg_stat_statements_info();

/* Now redefine */
CREATE FUNCTION pg_stat_statements_info(
OUT dealloc bigint,
OUT gc_count bigint,
OUT query_file_size bigint,
OUT stats_reset timestamp with time zone
)
RETURNS record
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT VOLATILE PARALLEL SAFE;

CREATE VIEW pg_stat_statements_info AS
SELECT * FROM pg_stat_statements_info();

GRANT SELECT ON pg_stat_statements_info TO PUBLIC;
10 changes: 8 additions & 2 deletions contrib/pg_stat_statements/pg_stat_statements.c
Original file line number Diff line number Diff line change
Expand Up @@ -2049,7 +2049,7 @@ pg_stat_statements_internal(FunctionCallInfo fcinfo,
}

/* Number of output arguments (columns) for pg_stat_statements_info */
#define PG_STAT_STATEMENTS_INFO_COLS 2
#define PG_STAT_STATEMENTS_INFO_COLS 4

/*
* Return statistics of pg_stat_statements.
Expand All @@ -2061,6 +2061,8 @@ pg_stat_statements_info(PG_FUNCTION_ARGS)
TupleDesc tupdesc;
Datum values[PG_STAT_STATEMENTS_INFO_COLS] = {0};
bool nulls[PG_STAT_STATEMENTS_INFO_COLS] = {0};
int64 gc_count,
extent;

if (!pgss || !pgss_hash)
ereport(ERROR,
Expand All @@ -2074,10 +2076,14 @@ pg_stat_statements_info(PG_FUNCTION_ARGS)
/* Read global statistics for pg_stat_statements */
SpinLockAcquire(&pgss->mutex);
stats = pgss->stats;
gc_count = pgss->gc_count;
extent = pgss->extent;
SpinLockRelease(&pgss->mutex);

values[0] = Int64GetDatum(stats.dealloc);
values[1] = TimestampTzGetDatum(stats.stats_reset);
values[1] = Int64GetDatum(gc_count);
values[2] = Int64GetDatum(extent);
values[3] = TimestampTzGetDatum(stats.stats_reset);

PG_RETURN_DATUM(HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls)));
}
Expand Down
2 changes: 1 addition & 1 deletion contrib/pg_stat_statements/pg_stat_statements.control
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# pg_stat_statements extension
comment = 'track planning and execution statistics of all SQL statements executed'
default_version = '1.13'
default_version = '1.14'
module_pathname = '$libdir/pg_stat_statements'
relocatable = true
4 changes: 4 additions & 0 deletions contrib/pg_stat_statements/sql/oldextversions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,8 @@ AlTER EXTENSION pg_stat_statements UPDATE TO '1.13';
\d pg_stat_statements
SELECT count(*) > 0 AS has_data FROM pg_stat_statements;

-- New functions and views for pg_stat_statements_info in 1.14
AlTER EXTENSION pg_stat_statements UPDATE TO '1.14';
SELECT pg_get_functiondef('pg_stat_statements_info'::regproc);

DROP EXTENSION pg_stat_statements;
20 changes: 20 additions & 0 deletions doc/src/sgml/pgstatstatements.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -800,6 +800,26 @@ calls | 2
<varname>pg_stat_statements.max</varname> were observed
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>gc_count</structfield> <type>bigint</type>
</para>
<para>
Total number of times the <structname>pg_stat_statements</structname> query text
file was rewritten for garbage collection (GC) purposes. This may occur after an
explicit call to <function>pg_stat_statements_reset</function>, or when sufficient
stale query texts have accumulated due to deallocations.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>query_file_size</structfield> <type>bigint</type>
</para>
<para>
The cumulative size (in bytes) of all query texts stored in the
<structname>pg_stat_statements</structname> query text file.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>stats_reset</structfield> <type>timestamp with time zone</type>
Expand Down