From 15d13e82911f7cc9f04f0bf419a96fd827fd1a9d Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Wed, 5 Feb 2020 16:59:29 -0300 Subject: [PATCH] Make vacuum buffer counters 64 bits wide Using 32 bit counters means they can now realistically wrap around when vacuuming extremely large tables. Because they're signed integers, stats printed by vacuum look very odd when they do. We'd love to backpatch this, but refrain because the variables are exported and could cause third-party code to break. Reviewed-by: Julien Rouhaud, Tom Lane, Michael Paquier Discussion: https://postgr.es/m/20200131205926.GA16367@alvherre.pgsql --- src/backend/access/heap/vacuumlazy.c | 8 ++++---- src/backend/utils/init/globals.c | 6 +++--- src/include/miscadmin.h | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c index 8ce501151e..a23cdefbd0 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -614,10 +614,10 @@ heap_vacuum_rel(Relation onerel, VacuumParams *params, vacrelstats->new_dead_tuples, OldestXmin); appendStringInfo(&buf, - _("buffer usage: %d hits, %d misses, %d dirtied\n"), - VacuumPageHit, - VacuumPageMiss, - VacuumPageDirty); + _("buffer usage: %lld hits, %lld misses, %lld dirtied\n"), + (long long) VacuumPageHit, + (long long) VacuumPageMiss, + (long long) VacuumPageDirty); appendStringInfo(&buf, _("avg read rate: %.3f MB/s, avg write rate: %.3f MB/s\n"), read_rate, write_rate); appendStringInfo(&buf, _("system usage: %s"), pg_rusage_show(&ru0)); diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c index b1f6291b99..eb19644419 100644 --- a/src/backend/utils/init/globals.c +++ b/src/backend/utils/init/globals.c @@ -140,9 +140,9 @@ int VacuumCostPageDirty = 20; int VacuumCostLimit = 200; double VacuumCostDelay = 0; -int VacuumPageHit = 0; -int VacuumPageMiss = 0; -int VacuumPageDirty = 0; +int64 VacuumPageHit = 0; +int64 VacuumPageMiss = 0; +int64 VacuumPageDirty = 0; int VacuumCostBalance = 0; /* working state for vacuum */ bool VacuumCostActive = false; diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 62d64aa0a1..f985453ec3 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -252,9 +252,9 @@ extern int VacuumCostPageDirty; extern int VacuumCostLimit; extern double VacuumCostDelay; -extern int VacuumPageHit; -extern int VacuumPageMiss; -extern int VacuumPageDirty; +extern int64 VacuumPageHit; +extern int64 VacuumPageMiss; +extern int64 VacuumPageDirty; extern int VacuumCostBalance; extern bool VacuumCostActive;