Fix stats_fetch_consistency with stats for fixed-numbered objects

This impacts the statistics retrieved in transactions for the following
views when updating the value of stats_fetch_consistency, leading to
behaviors contrary to what is documented since 605994651b as an update
of this parameter should discard all statistics snapshot data:
- pg_stat_archiver
- pg_stat_bgwriter
- pg_stat_checkpointer
- pg_stat_io
- pg_stat_slru
- pg_stat_wal

For example, updating stats_fetch_consistency from "snapshot" to "cache"
in a transaction did not re-fetch any fresh data, using data cached from
the time when "snapshot" was in use.

Author: Shinya Kato
Discussion: https://postgr.es/m/d77fc5190d4dbe1738d77231488e768b@oss.nttdata.com
Backpatch-through: 15
This commit is contained in:
Michael Paquier 2024-02-01 17:12:50 +09:00
parent 402388946f
commit 235c09efbb
1 changed files with 3 additions and 0 deletions

View File

@ -943,6 +943,9 @@ pgstat_snapshot_fixed(PgStat_Kind kind)
Assert(pgstat_is_kind_valid(kind));
Assert(pgstat_get_kind_info(kind)->fixed_amount);
if (force_stats_snapshot_clear)
pgstat_clear_snapshot();
if (pgstat_fetch_consistency == PGSTAT_FETCH_CONSISTENCY_SNAPSHOT)
pgstat_build_snapshot();
else