Skip to content

Commit b948dfb

Browse files
shinyaaaCommitfest Bot
authored andcommitted
Make pg_stat_reset_slru() return the reset time
1 parent 56e6802 commit b948dfb

File tree

8 files changed

+22
-19
lines changed

8 files changed

+22
-19
lines changed

doc/src/sgml/monitoring.sgml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5211,11 +5211,11 @@ description | Waiting for a newly initialized WAL file to reach durable storage
52115211
<primary>pg_stat_reset_slru</primary>
52125212
</indexterm>
52135213
<function>pg_stat_reset_slru</function> ( [ <parameter>target</parameter> <type>text</type> <literal>DEFAULT</literal> <literal>NULL</literal> ] )
5214-
<returnvalue>void</returnvalue>
5214+
<returnvalue>timestamp with time zone</returnvalue>
52155215
</para>
52165216
<para>
52175217
Resets statistics to zero for a single SLRU cache, or for all SLRUs in
5218-
the cluster. If <parameter>target</parameter> is
5218+
the cluster, and returns the time of the reset. If <parameter>target</parameter> is
52195219
<literal>NULL</literal> or is not specified, all the counters shown in
52205220
the <structname>pg_stat_slru</structname> view for all SLRU caches are
52215221
reset. The argument can be one of

src/backend/catalog/system_functions.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ AS 'pg_stat_reset_shared';
645645

646646
CREATE OR REPLACE FUNCTION
647647
pg_stat_reset_slru(target text DEFAULT NULL)
648-
RETURNS void
648+
RETURNS timestamp with time zone
649649
LANGUAGE INTERNAL
650650
CALLED ON NULL INPUT VOLATILE PARALLEL SAFE
651651
AS 'pg_stat_reset_slru';

src/backend/utils/activity/pgstat_slru.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,16 @@ static bool have_slrustats = false;
4141
* Permission checking for this function is managed through the normal
4242
* GRANT system.
4343
*/
44-
void
44+
TimestampTz
4545
pgstat_reset_slru(const char *name)
4646
{
4747
TimestampTz ts = GetCurrentTimestamp();
4848

4949
Assert(name != NULL);
5050

5151
pgstat_reset_slru_counter_internal(pgstat_get_slru_index(name), ts);
52+
53+
return ts;
5254
}
5355

5456
/*

src/backend/utils/adt/pgstatfuncs.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2002,16 +2002,17 @@ Datum
20022002
pg_stat_reset_slru(PG_FUNCTION_ARGS)
20032003
{
20042004
char *target = NULL;
2005+
TimestampTz ts;
20052006

20062007
if (PG_ARGISNULL(0))
2007-
pgstat_reset_of_kind(PGSTAT_KIND_SLRU);
2008+
ts = pgstat_reset_of_kind(PGSTAT_KIND_SLRU);
20082009
else
20092010
{
20102011
target = text_to_cstring(PG_GETARG_TEXT_PP(0));
2011-
pgstat_reset_slru(target);
2012+
ts = pgstat_reset_slru(target);
20122013
}
20132014

2014-
PG_RETURN_VOID();
2015+
PG_RETURN_TIMESTAMPTZ(ts);
20152016
}
20162017

20172018
/* Reset replication slots stats (a specific one or all of them). */

src/include/catalog/pg_proc.dat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6183,7 +6183,7 @@
61836183
{ oid => '2307',
61846184
descr => 'statistics: reset collected statistics for a single SLRU',
61856185
proname => 'pg_stat_reset_slru', proisstrict => 'f', provolatile => 'v',
6186-
prorettype => 'void', proargtypes => 'text', proargnames => '{target}',
6186+
prorettype => 'timestamptz', proargtypes => 'text', proargnames => '{target}',
61876187
prosrc => 'pg_stat_reset_slru' },
61886188
{ oid => '6170',
61896189
descr => 'statistics: reset collected statistics for a single replication slot',

src/include/pgstat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,7 @@ extern PgStat_StatReplSlotEntry *pgstat_fetch_replslot(NameData slotname);
751751
* Functions in pgstat_slru.c
752752
*/
753753

754-
extern void pgstat_reset_slru(const char *);
754+
extern TimestampTz pgstat_reset_slru(const char *);
755755
extern void pgstat_count_slru_blocks_zeroed(int slru_idx);
756756
extern void pgstat_count_slru_blocks_hit(int slru_idx);
757757
extern void pgstat_count_slru_blocks_read(int slru_idx);

src/test/regress/expected/stats.out

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,10 +1011,10 @@ WHERE pg_stat_get_backend_pid(beid) = pg_backend_pid();
10111011
-- Test that reset_slru with a specified SLRU works.
10121012
SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'commit_timestamp' \gset
10131013
SELECT stats_reset AS slru_notify_reset_ts FROM pg_stat_slru WHERE name = 'notify' \gset
1014-
SELECT pg_stat_reset_slru('commit_timestamp');
1015-
pg_stat_reset_slru
1016-
--------------------
1017-
1014+
SELECT pg_stat_reset_slru('commit_timestamp') IS NOT NULL AS t;
1015+
t
1016+
---
1017+
t
10181018
(1 row)
10191019

10201020
SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'commit_timestamp';
@@ -1025,10 +1025,10 @@ SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru W
10251025

10261026
SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'commit_timestamp' \gset
10271027
-- Test that multiple SLRUs are reset when no specific SLRU provided to reset function
1028-
SELECT pg_stat_reset_slru();
1029-
pg_stat_reset_slru
1030-
--------------------
1031-
1028+
SELECT pg_stat_reset_slru() IS NOT NULL AS t;
1029+
t
1030+
---
1031+
t
10321032
(1 row)
10331033

10341034
SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'commit_timestamp';

src/test/regress/sql/stats.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,12 +481,12 @@ WHERE pg_stat_get_backend_pid(beid) = pg_backend_pid();
481481
-- Test that reset_slru with a specified SLRU works.
482482
SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'commit_timestamp' \gset
483483
SELECT stats_reset AS slru_notify_reset_ts FROM pg_stat_slru WHERE name = 'notify' \gset
484-
SELECT pg_stat_reset_slru('commit_timestamp');
484+
SELECT pg_stat_reset_slru('commit_timestamp') IS NOT NULL AS t;
485485
SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'commit_timestamp';
486486
SELECT stats_reset AS slru_commit_ts_reset_ts FROM pg_stat_slru WHERE name = 'commit_timestamp' \gset
487487

488488
-- Test that multiple SLRUs are reset when no specific SLRU provided to reset function
489-
SELECT pg_stat_reset_slru();
489+
SELECT pg_stat_reset_slru() IS NOT NULL AS t;
490490
SELECT stats_reset > :'slru_commit_ts_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'commit_timestamp';
491491
SELECT stats_reset > :'slru_notify_reset_ts'::timestamptz FROM pg_stat_slru WHERE name = 'notify';
492492

0 commit comments

Comments
 (0)