From: Nathan Bossart <nathandbossart@gmail.com>
To: Melanie Plageman <melanieplageman@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>
Cc: pgsql-hackers@postgresql.org
Subject: Re: add PROCESS_MAIN to VACUUM
Date: Tue, 7 Mar 2023 12:55:08 -0800
Message-ID: <20230307205508.GA3314274@nathanxps13> (raw)
In-Reply-To: <CAAKRu_amaA3gDUwsKtipWY_ShGSy_O3D8hwN8aT98LcBVK+yHQ@mail.gmail.com>
References: <20230306202734.GA3033389@nathanxps13>
<CAAKRu_ZJMFrO_tspzoX43h9NyEFS1nS438MoS3Yv7JxK3=jFPw@mail.gmail.com>
<20230306211337.GA3076909@nathanxps13>
<20230306220958.rk4b4msmybi6hm56@liskov>
<20230306224310.GA3165453@nathanxps13>
<CAAKRu_ZEKEsXDfFbOHRMhEROK5h1KcTcwUhERv5ZE0RQjX82_A@mail.gmail.com>
<ZAaDPG9KJXqFU2Sr@paquier.xyz>
<20230307005949.GA3266981@nathanxps13>
<ZAazRGzyCYoRzy1M@paquier.xyz>
<CAAKRu_amaA3gDUwsKtipWY_ShGSy_O3D8hwN8aT98LcBVK+yHQ@mail.gmail.com>
On Tue, Mar 07, 2023 at 12:39:29PM -0500, Melanie Plageman wrote:
> Yes, sounds clear to me also!
Here is an updated patch.
--
Nathan Bossart
Amazon Web Services: https://aws.amazon.comAttachments:
[text/x-diff] process_main_readability_fix_v3.patch (1.9K, ../20230307205508.GA3314274@nathanxps13/2-process_main_readability_fix_v3.patch)
download | inline diff:diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.cindex 580f966499..0acc42af2b 100644--- a/src/backend/commands/vacuum.c+++ b/src/backend/commands/vacuum.c@@ -2058,25 +2058,34 @@ vacuum_rel(Oid relid, RangeVar *relation, VacuumParams *params, bool skip_privs)
save_nestlevel = NewGUCNestLevel();
/*
- * Do the actual work --- either FULL or "lazy" vacuum+ * If PROCESS_MAIN is set (the default), it's time to vacuum the main+ * relation. Otherwise, we can skip this part. If processing the TOAST+ * table is required (e.g., PROCESS_TOAST is set), we'll force PROCESS_MAIN+ * to be set when we recurse to the TOAST table so that it gets processed+ * here.
*/
- if ((params->options & VACOPT_FULL) &&- (params->options & VACOPT_PROCESS_MAIN))+ if (params->options & VACOPT_PROCESS_MAIN)
{
- ClusterParams cluster_params = {0};+ /*+ * Do the actual work --- either FULL or "lazy" vacuum+ */+ if (params->options & VACOPT_FULL)+ {+ ClusterParams cluster_params = {0};- /* close relation before vacuuming, but hold lock until commit */- relation_close(rel, NoLock);- rel = NULL;+ /* close relation before vacuuming, but hold lock until commit */+ relation_close(rel, NoLock);+ rel = NULL;- if ((params->options & VACOPT_VERBOSE) != 0)- cluster_params.options |= CLUOPT_VERBOSE;+ if ((params->options & VACOPT_VERBOSE) != 0)+ cluster_params.options |= CLUOPT_VERBOSE;- /* VACUUM FULL is now a variant of CLUSTER; see cluster.c */- cluster_rel(relid, InvalidOid, &cluster_params);+ /* VACUUM FULL is now a variant of CLUSTER; see cluster.c */+ cluster_rel(relid, InvalidOid, &cluster_params);+ }+ else+ table_relation_vacuum(rel, params, vac_strategy);
}
- else if (params->options & VACOPT_PROCESS_MAIN)- table_relation_vacuum(rel, params, vac_strategy);
/* Roll back any GUC changes executed by index functions */
AtEOXact_GUC(false, save_nestlevel);
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: nathandbossart@gmail.com, melanieplageman@gmail.com, michael@paquier.xyz
Subject: Re: add PROCESS_MAIN to VACUUM
In-Reply-To: <20230307205508.GA3314274@nathanxps13>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox