Skip to content

Commit 4d65cb4

Browse files
shinyaaaCommitfest Bot
authored andcommitted
Make pg_stat_reset() return the reset time
1 parent 371a302 commit 4d65cb4

File tree

10 files changed

+29
-26
lines changed

10 files changed

+29
-26
lines changed

doc/src/sgml/monitoring.sgml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5068,10 +5068,11 @@ description | Waiting for a newly initialized WAL file to reach durable storage
50685068
<primary>pg_stat_reset</primary>
50695069
</indexterm>
50705070
<function>pg_stat_reset</function> ()
5071-
<returnvalue>void</returnvalue>
5071+
<returnvalue>timestamp with time zone</returnvalue>
50725072
</para>
50735073
<para>
5074-
Resets all statistics counters for the current database to zero.
5074+
Resets all statistics counters for the current database to zero, and
5075+
returns the time of the reset.
50755076
</para>
50765077
<para>
50775078
This function is restricted to superusers by default, but other users

src/backend/utils/activity/pgstat.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,14 +832,16 @@ match_db_entries(PgStatShared_HashEntry *entry, Datum match_data)
832832
* Permission checking for this function is managed through the normal
833833
* GRANT system.
834834
*/
835-
void
835+
TimestampTz
836836
pgstat_reset_counters(void)
837837
{
838838
TimestampTz ts = GetCurrentTimestamp();
839839

840840
pgstat_reset_matching_entries(match_db_entries,
841841
ObjectIdGetDatum(MyDatabaseId),
842842
ts);
843+
844+
return ts;
843845
}
844846

845847
/*

src/backend/utils/adt/pgstatfuncs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1878,9 +1878,9 @@ pg_stat_force_next_flush(PG_FUNCTION_ARGS)
18781878
Datum
18791879
pg_stat_reset(PG_FUNCTION_ARGS)
18801880
{
1881-
pgstat_reset_counters();
1881+
TimestampTz ts = pgstat_reset_counters();
18821882

1883-
PG_RETURN_VOID();
1883+
PG_RETURN_TIMESTAMPTZ(ts);
18841884
}
18851885

18861886
/*

src/include/catalog/pg_proc.dat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6160,7 +6160,7 @@
61606160
{ oid => '2274',
61616161
descr => 'statistics: reset collected statistics for current database',
61626162
proname => 'pg_stat_reset', proisstrict => 'f', provolatile => 'v',
6163-
prorettype => 'void', proargtypes => '', prosrc => 'pg_stat_reset' },
6163+
prorettype => 'timestamptz', proargtypes => '', prosrc => 'pg_stat_reset' },
61646164
{ oid => '3775',
61656165
descr => 'statistics: reset collected statistics shared across the cluster',
61666166
proname => 'pg_stat_reset_shared', proisstrict => 'f', provolatile => 'v',

src/include/pgstat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ extern void pgstat_initialize(void);
529529
extern long pgstat_report_stat(bool force);
530530
extern void pgstat_force_next_flush(void);
531531

532-
extern void pgstat_reset_counters(void);
532+
extern TimestampTz pgstat_reset_counters(void);
533533
extern void pgstat_reset(PgStat_Kind kind, Oid dboid, uint64 objid);
534534
extern void pgstat_reset_of_kind(PgStat_Kind kind);
535535

src/test/isolation/expected/stats.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1313,10 +1313,10 @@ name |pg_stat_get_function_calls|total_above_zero|self_above_zero
13131313
test_stat_func| 2|t |t
13141314
(1 row)
13151315

1316-
step s1_reset: SELECT pg_stat_reset();
1317-
pg_stat_reset
1318-
-------------
1319-
1316+
step s1_reset: SELECT pg_stat_reset() IS NOT NULL AS t;
1317+
t
1318+
-
1319+
t
13201320
(1 row)
13211321

13221322
step s1_func_stats:

src/test/isolation/expected/stats_1.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1313,10 +1313,10 @@ name |pg_stat_get_function_calls|total_above_zero|self_above_zero
13131313
test_stat_func| 2|t |t
13141314
(1 row)
13151315

1316-
step s1_reset: SELECT pg_stat_reset();
1317-
pg_stat_reset
1318-
-------------
1319-
1316+
step s1_reset: SELECT pg_stat_reset() IS NOT NULL AS t;
1317+
t
1318+
-
1319+
t
13201320
(1 row)
13211321

13221322
step s1_func_stats:

src/test/isolation/specs/stats.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ step s1_func_stats_reset_check {
6363
IS NOT NULL AS has_stats_reset;
6464
}
6565
step s1_func_stats_reset_nonexistent { SELECT pg_stat_reset_single_function_counters(12000); }
66-
step s1_reset { SELECT pg_stat_reset(); }
66+
step s1_reset { SELECT pg_stat_reset() IS NOT NULL AS t; }
6767
step s1_func_stats {
6868
SELECT
6969
tso.name,

src/test/regress/expected/stats.out

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,17 +1133,17 @@ ERROR: unrecognized reset target: "unknown"
11331133
HINT: Target must be "archiver", "bgwriter", "checkpointer", "io", "recovery_prefetch", "slru", or "wal".
11341134
-- Test that reset works for pg_stat_database
11351135
-- Since pg_stat_database stats_reset starts out as NULL, reset it once first so we have something to compare it to
1136-
SELECT pg_stat_reset();
1137-
pg_stat_reset
1138-
---------------
1139-
1136+
SELECT pg_stat_reset() IS NOT NULL AS t;
1137+
t
1138+
---
1139+
t
11401140
(1 row)
11411141

11421142
SELECT stats_reset AS db_reset_ts FROM pg_stat_database WHERE datname = (SELECT current_database()) \gset
1143-
SELECT pg_stat_reset();
1144-
pg_stat_reset
1145-
---------------
1146-
1143+
SELECT pg_stat_reset() IS NOT NULL AS t;
1144+
t
1145+
---
1146+
t
11471147
(1 row)
11481148

11491149
SELECT stats_reset > :'db_reset_ts'::timestamptz FROM pg_stat_database WHERE datname = (SELECT current_database());

src/test/regress/sql/stats.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,9 +526,9 @@ SELECT pg_stat_reset_shared('unknown');
526526
-- Test that reset works for pg_stat_database
527527

528528
-- Since pg_stat_database stats_reset starts out as NULL, reset it once first so we have something to compare it to
529-
SELECT pg_stat_reset();
529+
SELECT pg_stat_reset() IS NOT NULL AS t;
530530
SELECT stats_reset AS db_reset_ts FROM pg_stat_database WHERE datname = (SELECT current_database()) \gset
531-
SELECT pg_stat_reset();
531+
SELECT pg_stat_reset() IS NOT NULL AS t;
532532
SELECT stats_reset > :'db_reset_ts'::timestamptz FROM pg_stat_database WHERE datname = (SELECT current_database());
533533

534534

0 commit comments

Comments
 (0)