postgres.git / summary / log / commit / refs

commit    235c09efbb306d6263e904e484abdf44866beb5e
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Thu Feb 01 08:12:50 2024 +0000
First released in: 17.0, 15.6, 16.2

    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


src/backend/utils/activity/pgstat.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backend/utils/activity/pgstat.c b/src/backend/utils/activity/pgstat.c index 125ca97b186..9bfc7a95185 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 [parent: 402388946fb3]