Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pZeLD-0004Yr-6E for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Mar 2023 20:55:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pZeLA-0000hb-U4 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Mar 2023 20:55:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pZeLA-0000hS-Iw for pgsql-hackers@lists.postgresql.org; Tue, 07 Mar 2023 20:55:20 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pZeL3-0000Kh-NI for pgsql-hackers@postgresql.org; Tue, 07 Mar 2023 20:55:19 +0000 Received: by mail-pj1-x102f.google.com with SMTP id x20-20020a17090a8a9400b00233ba727724so2071431pjn.1 for ; Tue, 07 Mar 2023 12:55:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678222513; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=e+01OSZTX77auDcmDD4AKGDTQPhTgzSmmtnRql2HSVM=; b=ejAHWEZoj2IlG4pqIvDI7j/yX+JadwoMp1dkDfbfhykaraFmfib9HnoJiA3brlwz9y yZabNWd8o0nvD06YWoDDmbnuEuGg/j9mIH7E/K4HTMQybLfaXlk3y+/rdKlpGBxicGrD zZr1lP1s6UhCnmNovR3NxB7aJYYuNTIgLsCnuaEqImGzAUgJB5khjGZ4x7EAlFNXyAlX MpbRwrxYlfCqJvHn1pAU6DSMh4tllzXmax1o3hiIvI2KWq4HPVq4g1PYdnX5kkEjGpUF BjzJipSS/ewx3dpfnHMw/2Rm+isUwB2iyWEKrN/eE+DSHgBYpDwUDMhY1rauUWNov6DW PkIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678222513; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=e+01OSZTX77auDcmDD4AKGDTQPhTgzSmmtnRql2HSVM=; b=TfZ84+BhXHTUvOGF+ZbbM5JOmxR6OrC7vNDV44CCzUdnktmIByL5+DYOr6BtJ2VR5S DU2YbfbW1EwJ3eJHMckCr+jKM1/6fTYXY81rU4YvYaGCoe6RUGDZevqPRmVBYI8EsBYF MLULlDZ06e/dY/Hnn1+tRlbAx9Ht/HpzqETynxpuuk8eMOIkMJQgjugBCaJziuJGtQkX 6kvvp/tqrHdJvdw5gJ3xW+WIefGI9D3P+guk652koBBJjy0w/wpfoKzYvk6SIVPbN95L PFvHppiYhDfKxpCe58UwD582zOamMblpRXG8SxLKDzEbRuTtMTe5vE88ln75xmVwxf9p JMGA== X-Gm-Message-State: AO0yUKUE2WpXEFYv72gGiEMcKFCMOAyBHfQfNdsk216nhzcOGW3potXL Rf7gWvMevPoaB/gdG/M8JOk= X-Google-Smtp-Source: AK7set8HPS/fu5tgc+qyTpjwDZyijLluNd4p8odKZkYvX0B0IthECyY+GFj3RDK1AALPHrwR9f9nog== X-Received: by 2002:a05:6a20:8407:b0:cd:363d:b27c with SMTP id c7-20020a056a20840700b000cd363db27cmr23214936pzd.16.1678222512646; Tue, 07 Mar 2023 12:55:12 -0800 (PST) Received: from nathanxps13 ([50.47.162.83]) by smtp.gmail.com with ESMTPSA id e16-20020a62ee10000000b005d791692727sm8263266pfi.191.2023.03.07.12.55.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Mar 2023 12:55:11 -0800 (PST) Date: Tue, 7 Mar 2023 12:55:08 -0800 From: Nathan Bossart To: Melanie Plageman Cc: Michael Paquier , pgsql-hackers@postgresql.org Subject: Re: add PROCESS_MAIN to VACUUM Message-ID: <20230307205508.GA3314274@nathanxps13> References: <20230306202734.GA3033389@nathanxps13> <20230306211337.GA3076909@nathanxps13> <20230306220958.rk4b4msmybi6hm56@liskov> <20230306224310.GA3165453@nathanxps13> <20230307005949.GA3266981@nathanxps13> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="PEIAKu/WMn1b1Hv9" Content-Disposition: inline In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --PEIAKu/WMn1b1Hv9 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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.com --PEIAKu/WMn1b1Hv9 Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="process_main_readability_fix_v3.patch" diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 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); --PEIAKu/WMn1b1Hv9--