summaryrefslogtreecommitdiff
path: root/src/backend/access
diff options
context:
space:
mode:
authorMasahiko Sawada <msawada@postgresql.org>2025-12-09 10:51:14 -0800
committerMasahiko Sawada <msawada@postgresql.org>2025-12-09 10:51:14 -0800
commit0d789520619803cf6629ebf980e116d733b6756f (patch)
tree0778a004c5a2655a04ec53815227c1e0bfae79c4 /src/backend/access
parentb237f5422bc0667754f986f9d5bfc34a13401bc1 (diff)
Add mode and started_by columns to pg_stat_progress_vacuum view.
The new columns, mode and started_by, indicate the vacuum mode ('normal', 'aggressive', or 'failsafe') and the initiator of the vacuum ('manual', 'autovacuum', or 'autovacuum_wraparound'), respectively. This allows users and monitoring tools to better understand VACUUM behavior. Bump catalog version. Author: Shinya Kato <shinya11.kato@gmail.com> Reviewed-by: Kirill Reshke <reshkekirill@gmail.com> Reviewed-by: Nathan Bossart <nathandbossart@gmail.com> Reviewed-by: Robert Treat <rob@xzilla.net> Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com> Reviewed-by: Sami Imseih <samimseih@gmail.com> Reviewed-by: Michael Paquier <michael@paquier.xyz> Reviewed-by: Yu Wang <wangyu_runtime@163.com> Discussion: https://postgr.es/m/CAOzEurQcOY-OBL_ouEVfEaFqe_md3vB5pXjR_m6L71Dcp1JKCQ@mail.gmail.com
Diffstat (limited to 'src/backend/access')
-rw-r--r--src/backend/access/heap/vacuumlazy.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c
index 65bb0568a86..cc5b03eb7ce 100644
--- a/src/backend/access/heap/vacuumlazy.c
+++ b/src/backend/access/heap/vacuumlazy.c
@@ -664,6 +664,14 @@ heap_vacuum_rel(Relation rel, const VacuumParams params,
pgstat_progress_start_command(PROGRESS_COMMAND_VACUUM,
RelationGetRelid(rel));
+ if (AmAutoVacuumWorkerProcess())
+ pgstat_progress_update_param(PROGRESS_VACUUM_STARTED_BY,
+ params.is_wraparound
+ ? PROGRESS_VACUUM_STARTED_BY_AUTOVACUUM_WRAPAROUND
+ : PROGRESS_VACUUM_STARTED_BY_AUTOVACUUM);
+ else
+ pgstat_progress_update_param(PROGRESS_VACUUM_STARTED_BY,
+ PROGRESS_VACUUM_STARTED_BY_MANUAL);
/*
* Setup error traceback support for ereport() first. The idea is to set
@@ -820,6 +828,12 @@ heap_vacuum_rel(Relation rel, const VacuumParams params,
*/
heap_vacuum_eager_scan_setup(vacrel, params);
+ /* Report the vacuum mode: 'normal' or 'aggressive' */
+ pgstat_progress_update_param(PROGRESS_VACUUM_MODE,
+ vacrel->aggressive
+ ? PROGRESS_VACUUM_MODE_AGGRESSIVE
+ : PROGRESS_VACUUM_MODE_NORMAL);
+
if (verbose)
{
if (vacrel->aggressive)
@@ -3001,9 +3015,10 @@ lazy_check_wraparound_failsafe(LVRelState *vacrel)
{
const int progress_index[] = {
PROGRESS_VACUUM_INDEXES_TOTAL,
- PROGRESS_VACUUM_INDEXES_PROCESSED
+ PROGRESS_VACUUM_INDEXES_PROCESSED,
+ PROGRESS_VACUUM_MODE
};
- int64 progress_val[2] = {0, 0};
+ int64 progress_val[3] = {0, 0, PROGRESS_VACUUM_MODE_FAILSAFE};
VacuumFailsafeActive = true;
@@ -3019,8 +3034,8 @@ lazy_check_wraparound_failsafe(LVRelState *vacrel)
vacrel->do_index_cleanup = false;
vacrel->do_rel_truncate = false;
- /* Reset the progress counters */
- pgstat_progress_update_multi_param(2, progress_index, progress_val);
+ /* Reset the progress counters and set the failsafe mode */
+ pgstat_progress_update_multi_param(3, progress_index, progress_val);
ereport(WARNING,
(errmsg("bypassing nonessential maintenance of table \"%s.%s.%s\" as a failsafe after %d index scans",