postgres.git / summary / log / commit / refs

commit    4ee0ccfd55f973160a2ab013bc96488715221270
Author:   Masahiko Sawada <msawada@postgresql.org>
Date:     Wed Jul 29 16:52:10 2026 +0000

    Fix stale comment in parallel_vacuum_main().
    
    The comment claimed that a parallel vacuum worker has only the
    PROC_IN_VACUUM flag because parallel vacuum is not supported for
    autovacuum, but commit 1ff3180ca01 allowed autovacuum to use parallel
    vacuum workers.
    
    The assertion itself still holds: the leader, whether a backend
    running VACUUM or an autovacuum worker, sets PROC_IN_VACUUM before
    taking its snapshot, and a parallel worker inherits the flag when
    importing the leader's snapshot. The leader's other flags don't reach
    the worker, since the snapshot import copies only the PROC_XMIN_FLAGS
    bits and PROC_IS_AUTOVACUUM is never set on parallel workers, which
    run as regular background workers. Reword the comment to explain that.
    
    Oversight in commit 1ff3180ca01.
    
    Author: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
    Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com>
    Reviewed-by: Chao Li <li.evan.chao@gmail.com>
    Discussion: https://postgr.es/m/CALj2ACVwQ4WABqq8Lnf+VZEJ45jcTFhyFLFr_ctfS4=QLL-r5w@mail.gmail.com
    Backpatch-through: 19


src/backend/commands/vacuumparallel.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/backend/commands/vacuumparallel.c b/src/backend/commands/vacuumparallel.c index 41cefcfde54..dd355a3d246 100644 --- a/src/backend/commands/vacuumparallel.c +++ b/src/backend/commands/vacuumparallel.c @@ -1209,8 +1209,16 @@ parallel_vacuum_main(dsm_segment *seg, shm_toc *toc) ErrorContextCallback errcallback; /* - * A parallel vacuum worker must have only PROC_IN_VACUUM flag since we - * don't support parallel vacuum for autovacuum as of now. + * A parallel vacuum worker carries only the PROC_IN_VACUUM flag. The + * leader, whether it's a backend running a VACUUM command or an + * autovacuum worker, sets PROC_IN_VACUUM when it starts vacuuming the + * table, and the worker inherits the flag by importing the leader's + * snapshot (see ProcArrayInstallRestoredXmin). The leader's other flags + * don't reach the worker: the snapshot import copies only the + * PROC_XMIN_FLAGS bits, so PROC_VACUUM_FOR_WRAPAROUND isn't carried + * over, and PROC_IS_AUTOVACUUM is never set on the worker in the first + * place since parallel workers run as regular background workers, not + * autovacuum workers. */ Assert(MyProc->statusFlags == PROC_IN_VACUUM); [parent: bef46aed3949]