Skip to content

Commit 1a80b71

Browse files
shinyaaaCommitfest Bot
authored andcommitted
Make pg_stat_clear_snapshot() return the reset time
1 parent ee2b1b3 commit 1a80b71

File tree

10 files changed

+50
-45
lines changed

10 files changed

+50
-45
lines changed

doc/src/sgml/monitoring.sgml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5055,10 +5055,11 @@ description | Waiting for a newly initialized WAL file to reach durable storage
50555055
<primary>pg_stat_clear_snapshot</primary>
50565056
</indexterm>
50575057
<function>pg_stat_clear_snapshot</function> ()
5058-
<returnvalue>void</returnvalue>
5058+
<returnvalue>timestamp with time zone</returnvalue>
50595059
</para>
50605060
<para>
5061-
Discards the current statistics snapshot or cached information.
5061+
Discards the current statistics snapshot or cached information, and
5062+
returns the time of the discard.
50625063
</para></entry>
50635064
</row>
50645065

src/backend/utils/activity/pgstat.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -904,7 +904,7 @@ pgstat_reset_of_kind(PgStat_Kind kind)
904904
* the no-longer-wanted snapshot. Updates of stats_fetch_consistency can
905905
* cause this routine to be called.
906906
*/
907-
void
907+
TimestampTz
908908
pgstat_clear_snapshot(void)
909909
{
910910
pgstat_assert_is_up();
@@ -934,6 +934,8 @@ pgstat_clear_snapshot(void)
934934

935935
/* Reset this flag, as it may be possible that a cleanup was forced. */
936936
force_stats_snapshot_clear = false;
937+
938+
return GetCurrentTimestamp();
937939
}
938940

939941
void *

src/backend/utils/adt/pgstatfuncs.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1858,9 +1858,11 @@ pg_stat_get_snapshot_timestamp(PG_FUNCTION_ARGS)
18581858
Datum
18591859
pg_stat_clear_snapshot(PG_FUNCTION_ARGS)
18601860
{
1861-
pgstat_clear_snapshot();
1861+
TimestampTz ts;
18621862

1863-
PG_RETURN_VOID();
1863+
ts = pgstat_clear_snapshot();
1864+
1865+
PG_RETURN_TIMESTAMPTZ(ts);
18641866
}
18651867

18661868

src/include/catalog/pg_proc.dat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6150,7 +6150,7 @@
61506150
{ oid => '2230',
61516151
descr => 'statistics: discard current transaction\'s statistics snapshot',
61526152
proname => 'pg_stat_clear_snapshot', proisstrict => 'f', provolatile => 'v',
6153-
proparallel => 'r', prorettype => 'void', proargtypes => '',
6153+
proparallel => 'r', prorettype => 'timestamptz', proargtypes => '',
61546154
prosrc => 'pg_stat_clear_snapshot' },
61556155
{ oid => '2137',
61566156
descr => 'statistics: force stats to be flushed after the next commit',

src/include/pgstat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ extern TimestampTz pgstat_reset(PgStat_Kind kind, Oid dboid, uint64 objid);
534534
extern TimestampTz pgstat_reset_of_kind(PgStat_Kind kind);
535535

536536
/* stats accessors */
537-
extern void pgstat_clear_snapshot(void);
537+
extern TimestampTz pgstat_clear_snapshot(void);
538538
extern TimestampTz pgstat_get_stat_snapshot_timestamp(bool *have_snapshot);
539539

540540
/* helpers */

src/test/isolation/expected/stats.out

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3440,10 +3440,10 @@ step s1_slru_check_stats:
34403440
t
34413441
(1 row)
34423442

3443-
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
3444-
pg_stat_clear_snapshot
3445-
----------------------
3446-
3443+
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
3444+
t
3445+
-
3446+
t
34473447
(1 row)
34483448

34493449
step s1_slru_check_stats:
@@ -3513,10 +3513,10 @@ step s1_slru_check_stats:
35133513
f
35143514
(1 row)
35153515

3516-
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
3517-
pg_stat_clear_snapshot
3518-
----------------------
3519-
3516+
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
3517+
t
3518+
-
3519+
t
35203520
(1 row)
35213521

35223522
step s1_slru_check_stats:
@@ -3586,10 +3586,10 @@ step s1_slru_check_stats:
35863586
f
35873587
(1 row)
35883588

3589-
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
3590-
pg_stat_clear_snapshot
3591-
----------------------
3592-
3589+
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
3590+
t
3591+
-
3592+
t
35933593
(1 row)
35943594

35953595
step s1_slru_check_stats:
@@ -3730,10 +3730,10 @@ name |pg_stat_get_function_calls|total_above_zero|self_above_zero
37303730
test_stat_func| | |
37313731
(1 row)
37323732

3733-
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
3734-
pg_stat_clear_snapshot
3735-
----------------------
3736-
3733+
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
3734+
t
3735+
-
3736+
t
37373737
(1 row)
37383738

37393739
step s1_func_stats:

src/test/isolation/expected/stats_1.out

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3464,10 +3464,10 @@ step s1_slru_check_stats:
34643464
t
34653465
(1 row)
34663466

3467-
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
3468-
pg_stat_clear_snapshot
3469-
----------------------
3470-
3467+
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
3468+
t
3469+
-
3470+
t
34713471
(1 row)
34723472

34733473
step s1_slru_check_stats:
@@ -3537,10 +3537,10 @@ step s1_slru_check_stats:
35373537
f
35383538
(1 row)
35393539

3540-
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
3541-
pg_stat_clear_snapshot
3542-
----------------------
3543-
3540+
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
3541+
t
3542+
-
3543+
t
35443544
(1 row)
35453545

35463546
step s1_slru_check_stats:
@@ -3610,10 +3610,10 @@ step s1_slru_check_stats:
36103610
f
36113611
(1 row)
36123612

3613-
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
3614-
pg_stat_clear_snapshot
3615-
----------------------
3616-
3613+
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
3614+
t
3615+
-
3616+
t
36173617
(1 row)
36183618

36193619
step s1_slru_check_stats:
@@ -3754,10 +3754,10 @@ name |pg_stat_get_function_calls|total_above_zero|self_above_zero
37543754
test_stat_func| | |
37553755
(1 row)
37563756

3757-
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
3758-
pg_stat_clear_snapshot
3759-
----------------------
3760-
3757+
step s1_clear_snapshot: SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
3758+
t
3759+
-
3760+
t
37613761
(1 row)
37623762

37633763
step s1_func_stats:

src/test/isolation/specs/stats.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ setup { SET stats_fetch_consistency = 'none'; }
4343
step s1_fetch_consistency_none { SET stats_fetch_consistency = 'none'; }
4444
step s1_fetch_consistency_cache { SET stats_fetch_consistency = 'cache'; }
4545
step s1_fetch_consistency_snapshot { SET stats_fetch_consistency = 'snapshot'; }
46-
step s1_clear_snapshot { SELECT pg_stat_clear_snapshot(); }
46+
step s1_clear_snapshot { SELECT pg_stat_clear_snapshot() IS NOT NULL AS t; }
4747
step s1_begin { BEGIN; }
4848
step s1_commit { COMMIT; }
4949
step s1_rollback { ROLLBACK; }

src/test/regress/expected/stats.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,10 +1178,10 @@ SELECT pg_stat_get_snapshot_timestamp() >= NOW();
11781178
(1 row)
11791179

11801180
-- shows NULL again after clearing
1181-
SELECT pg_stat_clear_snapshot();
1182-
pg_stat_clear_snapshot
1183-
------------------------
1184-
1181+
SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
1182+
t
1183+
---
1184+
t
11851185
(1 row)
11861186

11871187
SELECT pg_stat_get_snapshot_timestamp();

src/test/regress/sql/stats.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ SELECT pg_stat_get_snapshot_timestamp();
543543
SELECT pg_stat_get_function_calls(0);
544544
SELECT pg_stat_get_snapshot_timestamp() >= NOW();
545545
-- shows NULL again after clearing
546-
SELECT pg_stat_clear_snapshot();
546+
SELECT pg_stat_clear_snapshot() IS NOT NULL AS t;
547547
SELECT pg_stat_get_snapshot_timestamp();
548548
COMMIT;
549549

0 commit comments

Comments
 (0)