PostgreSQL vytváří mezipaměť dat používaných funkcí pg_stat_get_activity() pro každý backend (efektivně pro každé připojení) funkce používaná oběma pg_stat_activity a pg_stat_replication .
Tato mezipaměť se vymaže při odevzdání/vrácení zpět, ale ne na konci každého příkazu v rámci transakce v READ COMMITTED jako obvykle.
Můžete jej explicitně vymazat pomocí SELECT pg_stat_clear_snapshot() . Volejte jej v těle PL/PgSQL LOOP obnovit.
Neexistuje AFAIK žádný způsob, jak požádat PostgreSQL o automatické obnovení po každém příkazu při použití repeatable read nebo vyšší izolace.
Ve zdrojovém kódu viz pgstat_read_current_status(void) a pgstat_clear_snapshot(void) .