From 029354cf40fea428c20de09ccacc6afe503c73f6 Mon Sep 17 00:00:00 2001 From: Daniil Davidov Date: Thu, 19 Mar 2026 21:19:35 +0700 Subject: [PATCH] fixes for 0002 --- src/backend/access/common/reloptions.c | 2 +- src/backend/postmaster/autovacuum.c | 6 +++++- src/backend/utils/misc/guc_parameters.dat | 2 +- src/include/utils/rel.h | 7 ------- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c index 055585c38f3..03e6fae930e 100644 --- a/src/backend/access/common/reloptions.c +++ b/src/backend/access/common/reloptions.c @@ -238,7 +238,7 @@ static relopt_int intRelOpts[] = { { "autovacuum_parallel_workers", - "Maximum number of parallel autovacuum workers that can be used for processing this table.", + "Overrides value of the autovacuum_max_parallel_workers parameter for this table, if > -1.", RELOPT_KIND_HEAP, ShareUpdateExclusiveLock }, diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index ff57d8fca2a..e810e1303db 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -2866,7 +2866,11 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map, if (avopts->autovacuum_parallel_workers > 0) nparallel_workers = avopts->autovacuum_parallel_workers; else if (avopts->autovacuum_parallel_workers == -1) - nparallel_workers = 0; + { + nparallel_workers = autovacuum_max_parallel_workers > 0 + ? autovacuum_max_parallel_workers + : -1; /* disable parallelism if parameter's value is 0 */ + } } tab->at_params.freeze_min_age = freeze_min_age; diff --git a/src/backend/utils/misc/guc_parameters.dat b/src/backend/utils/misc/guc_parameters.dat index bc23ddf5201..3d2fd35a004 100644 --- a/src/backend/utils/misc/guc_parameters.dat +++ b/src/backend/utils/misc/guc_parameters.dat @@ -155,7 +155,7 @@ }, { name => 'autovacuum_max_parallel_workers', type => 'int', context => 'PGC_SIGHUP', group => 'VACUUM_AUTOVACUUM', - short_desc => 'Maximum number of parallel processes per autovacuuming of one table.', + short_desc => 'Maximum number of parallel workers that can be used by a single autovacuum worker.', variable => 'autovacuum_max_parallel_workers', boot_val => '2', min => '0', diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index 1981954008e..cd1e92f2302 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -312,14 +312,7 @@ typedef struct AutoVacOpts { bool enabled; - /* - * Target number of parallel autovacuum workers. 0 by default disables - * parallel vacuum during autovacuum. -1 means choose the parallel degree - * based on the number of indexes (the autovacuum_max_parallel_workers - * parameter will be used as a limit). - */ int autovacuum_parallel_workers; - int vacuum_threshold; int vacuum_max_threshold; int vacuum_ins_threshold; -- 2.43.0