diff options
author | Michael Paquier <michael@paquier.xyz> | 2024-02-01 17:13:09 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2024-02-01 17:13:09 +0900 |
commit | 781bc121de897c235ae731ad9f58dfd4075a1008 (patch) | |
tree | adff0cc44caa6a2406882934da646f65a1996fc5 /src | |
parent | f33e83285a1419bf083ec0a6913268d454ce22e9 (diff) | |
download | postgresql-781bc121de897c235ae731ad9f58dfd4075a1008.tar.gz postgresql-781bc121de897c235ae731ad9f58dfd4075a1008.zip |
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 605994651b6a 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
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/activity/pgstat.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/utils/activity/pgstat.c b/src/backend/utils/activity/pgstat.c index d743fc0b289..a220cb876d8 100644 --- a/src/backend/utils/activity/pgstat.c +++ b/src/backend/utils/activity/pgstat.c @@ -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 |