Hi,

When I tried to reset a counter in pg_stat_slru using
pg_stat_reset_slru(name),
not only the specified counter but all the counters were reset.

  postgres=# SELECT * FROM pg_stat_slru ;
         name       | blks_zeroed | blks_hit | blks_read | blks_written |
blks_exists | flushes | truncates |          stats_reset

------------------+-------------+----------+-----------+--------------+-------------+---------+-----------+-------------------------------
   async            |           3 |        0 |         0 |            3 |
        0 |       0 |         0 | 2020-05-01 17:36:26.073433+09
   clog             |           0 |       56 |         0 |            0 |
        0 |       0 |         0 | 2020-05-01 17:36:26.073433+09
   commit_timestamp |           0 |        0 |         0 |            0 |
        0 |       0 |         0 | 2020-05-01 17:36:26.073433+09
   (snip)


  postgres=# SELECT pg_stat_reset_slru('clog');


  postgres=# SELECT * FROM pg_stat_slru ;
         name       | blks_zeroed | blks_hit | blks_read | blks_written |
blks_exists | flushes | truncates |          stats_reset

------------------+-------------+----------+-----------+--------------+-------------+---------+-----------+-------------------------------
   async            |           0 |        0 |         0 |            0 |
        0 |       0 |         0 | 2000-01-01 09:00:00+09
   clog             |           0 |        0 |         0 |            0 |
        0 |       0 |         0 | 2020-05-01 17:37:02.525006+09
   commit_timestamp |           0 |        0 |         0 |            0 |
        0 |       0 |         0 | 2000-01-01 09:00:00+09
   (snip)


Attached a patch.

Regards,

--
Atsushi Torikoshi
NTT DATA CORPORATION
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 50eea2e..51a0279 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -6233,8 +6233,6 @@ pgstat_recv_resetslrucounter(PgStat_MsgResetslrucounter *msg, int len)
 	int			i;
 	TimestampTz	ts = GetCurrentTimestamp();
 
-	memset(&slruStats, 0, sizeof(slruStats));
-
 	for (i = 0; i < SLRU_NUM_ELEMENTS; i++)
 	{
 		/* reset entry with the given index, or all entries (index is -1) */

Reply via email to