@@ -664,6 +664,16 @@ heap_vacuum_rel(Relation rel, const VacuumParams params,
664664
665665 pgstat_progress_start_command (PROGRESS_COMMAND_VACUUM ,
666666 RelationGetRelid (rel ));
667+ pgstat_progress_update_param (PROGRESS_VACUUM_MODE ,
668+ PROGRESS_VACUUM_MODE_NORMAL );
669+ if (AmAutoVacuumWorkerProcess ())
670+ pgstat_progress_update_param (PROGRESS_VACUUM_TRIGGERED_BY ,
671+ params .is_wraparound
672+ ? PROGRESS_VACUUM_TRIGGERED_BY_AUTOVACUUM_WRAPAROUND
673+ : PROGRESS_VACUUM_TRIGGERED_BY_AUTOVACUUM );
674+ else
675+ pgstat_progress_update_param (PROGRESS_VACUUM_TRIGGERED_BY ,
676+ PROGRESS_VACUUM_TRIGGERED_BY_MANUAL );
667677
668678 /*
669679 * Setup error traceback support for ereport() first. The idea is to set
@@ -787,6 +797,9 @@ heap_vacuum_rel(Relation rel, const VacuumParams params,
787797 * to increase the number of dead tuples it can prune away.)
788798 */
789799 vacrel -> aggressive = vacuum_get_cutoffs (rel , params , & vacrel -> cutoffs );
800+ if (vacrel -> aggressive )
801+ pgstat_progress_update_param (PROGRESS_VACUUM_MODE ,
802+ PROGRESS_VACUUM_MODE_AGGRESSIVE );
790803 vacrel -> rel_pages = orig_rel_pages = RelationGetNumberOfBlocks (rel );
791804 vacrel -> vistest = GlobalVisTestFor (rel );
792805
@@ -808,6 +821,8 @@ heap_vacuum_rel(Relation rel, const VacuumParams params,
808821 * visibility map (even those set all-frozen)
809822 */
810823 vacrel -> aggressive = true;
824+ pgstat_progress_update_param (PROGRESS_VACUUM_MODE ,
825+ PROGRESS_VACUUM_MODE_AGGRESSIVE );
811826 skipwithvm = false;
812827 }
813828
@@ -2996,9 +3011,10 @@ lazy_check_wraparound_failsafe(LVRelState *vacrel)
29963011 {
29973012 const int progress_index [] = {
29983013 PROGRESS_VACUUM_INDEXES_TOTAL ,
2999- PROGRESS_VACUUM_INDEXES_PROCESSED
3014+ PROGRESS_VACUUM_INDEXES_PROCESSED ,
3015+ PROGRESS_VACUUM_MODE
30003016 };
3001- int64 progress_val [2 ] = {0 , 0 };
3017+ int64 progress_val [3 ] = {0 , 0 , PROGRESS_VACUUM_MODE_FAILSAFE };
30023018
30033019 VacuumFailsafeActive = true;
30043020
@@ -3014,8 +3030,8 @@ lazy_check_wraparound_failsafe(LVRelState *vacrel)
30143030 vacrel -> do_index_cleanup = false;
30153031 vacrel -> do_rel_truncate = false;
30163032
3017- /* Reset the progress counters */
3018- pgstat_progress_update_multi_param (2 , progress_index , progress_val );
3033+ /* Reset the progress counters and the mode */
3034+ pgstat_progress_update_multi_param (3 , progress_index , progress_val );
30193035
30203036 ereport (WARNING ,
30213037 (errmsg ("bypassing nonessential maintenance of table \"%s.%s.%s\" as a failsafe after %d index scans" ,
0 commit comments