Hi Thank you for update! I looked again (vacuum_indexes_leader) + /* Skip the indexes that can be processed by parallel workers */ + if (!skip_index) + continue;
Does the variable name skip_index not confuse here? Maybe rename to something like can_parallel? Another question about behavior on temporary tables. Use case: the user commands just "vacuum;" to vacuum entire database (and has enough maintenance workers). Vacuum starts fine in parallel, but on first temporary table we hit: + if (RelationUsesLocalBuffers(onerel) && params->nworkers >= 0) + { + ereport(WARNING, + (errmsg("disabling parallel option of vacuum on \"%s\" --- cannot vacuum temporary tables in parallel", + RelationGetRelationName(onerel)))); + params->nworkers = -1; + } And therefore we turn off the parallel vacuum for the remaining tables... Can we improve this case? regards, Sergei