From e5cca6288a4098cf731599b5977b0f6714ba0ac6 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Tue, 14 Nov 2023 09:50:52 +0900 Subject: [PATCH] Add support for pg_stat_reset_slru without argument pg_stat_reset_slru currently requires an input argument, either: - NULL to reset the SLRU counters of everything. - A specific value to reset a single SLRU cache. This commit adds support for a new pattern: pg_stat_reset_slru without any argument works the same way as pg_stat_reset_slru(NULL), relying on a DEFAULT in the function definition to handle this case. This makes the function more consistent with 23c8c0c8f472. Bump catalog version. Author: Bharath Rupireddy Reviewed-by: Atsushi Torikoshi Discussion: https://postgr.es/m/CALj2ACW1VizYg01EeH_cA-7qA+4NzWVAoZ5Lw9_XYO1RRHAZbA@mail.gmail.com --- doc/src/sgml/monitoring.sgml | 7 ++++--- src/backend/catalog/system_functions.sql | 7 +++++++ src/include/catalog/catversion.h | 2 +- src/include/catalog/pg_proc.dat | 3 ++- src/test/regress/expected/stats.out | 2 +- src/test/regress/sql/stats.sql | 2 +- 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index b8495b6498..6b237d41cb 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -4781,14 +4781,15 @@ description | Waiting for a newly initialized WAL file to reach durable storage pg_stat_reset_slru - pg_stat_reset_slru ( text ) + pg_stat_reset_slru ( [ target text DEFAULT NULL ] ) void Resets statistics to zero for a single SLRU cache, or for all SLRUs in - the cluster. If the argument is NULL, all counters shown in + the cluster. If target is + NULL or is not specified, all the counters shown in the pg_stat_slru view for all SLRU caches are - reset. The argument can be one of + reset. The argument can be one of CommitTs, MultiXactMember, MultiXactOffset, diff --git a/src/backend/catalog/system_functions.sql b/src/backend/catalog/system_functions.sql index 8079f1cd7f..4206752881 100644 --- a/src/backend/catalog/system_functions.sql +++ b/src/backend/catalog/system_functions.sql @@ -628,6 +628,13 @@ LANGUAGE INTERNAL CALLED ON NULL INPUT VOLATILE PARALLEL SAFE AS 'pg_stat_reset_shared'; +CREATE OR REPLACE FUNCTION + pg_stat_reset_slru(target text DEFAULT NULL) +RETURNS void +LANGUAGE INTERNAL +CALLED ON NULL INPUT VOLATILE PARALLEL SAFE +AS 'pg_stat_reset_slru'; + -- -- The default permissions for functions mean that anyone can execute them. -- A number of functions shouldn't be executable by just anyone, but rather diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index ff1f392557..f2af8eb0dc 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -57,6 +57,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 202311121 +#define CATALOG_VERSION_NO 202311141 #endif diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index bd0b8873d3..ee351bb762 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -5897,7 +5897,8 @@ { oid => '2307', descr => 'statistics: reset collected statistics for a single SLRU', proname => 'pg_stat_reset_slru', proisstrict => 'f', provolatile => 'v', - prorettype => 'void', proargtypes => 'text', prosrc => 'pg_stat_reset_slru' }, + prorettype => 'void', proargtypes => 'text', proargnames => '{target}', + prosrc => 'pg_stat_reset_slru' }, { oid => '6170', descr => 'statistics: reset collected statistics for a single replication slot', proname => 'pg_stat_reset_replication_slot', proisstrict => 'f', diff --git a/src/test/regress/expected/stats.out b/src/test/regress/expected/stats.out index 0694de736a..6ed3584a76 100644 --- a/src/test/regress/expected/stats.out +++ b/src/test/regress/expected/stats.out @@ -882,7 +882,7 @@ SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru W SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'CommitTs' \gset -- Test that multiple SLRUs are reset when no specific SLRU provided to reset function -SELECT pg_stat_reset_slru(NULL); +SELECT pg_stat_reset_slru(); pg_stat_reset_slru -------------------- diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql index 13db45d4dc..fd8afeeae5 100644 --- a/src/test/regress/sql/stats.sql +++ b/src/test/regress/sql/stats.sql @@ -454,7 +454,7 @@ SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru W SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'CommitTs' \gset -- Test that multiple SLRUs are reset when no specific SLRU provided to reset function -SELECT pg_stat_reset_slru(NULL); +SELECT pg_stat_reset_slru(); SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'CommitTs'; SELECT stats_reset > :'slru_notify_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'Notify';