Re: add PROCESS_MAIN to VACUUM

Nathan Bossart <nathandbossart@gmail.com>

From: Nathan Bossart <nathandbossart@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Melanie Plageman <melanieplageman@gmail.com>, pgsql-hackers@postgresql.org
Date: 2023-03-07T00:59:49Z
Lists: pgsql-hackers
On Tue, Mar 07, 2023 at 09:20:12AM +0900, Michael Paquier wrote:
> -    * 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 required, we'll process
> +    * the TOAST table later.
> 
> Should we mention that this part could be used for a toast table once
> we've already looped once through vacuum_rel() when toast_relid was
> set?  VACOPT_PROCESS_MAIN is enforced a few lines down the road,
> still..

That did cross my mind, but I was worried that trying to explain all that
here could cause confusion.

	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.

How does that sound?

-- 
Nathan Bossart
Amazon Web Services: https://aws.amazon.com



Commits

  1. Improve readability of code PROCESS_MAIN in vacuum_rel()

  2. Add PROCESS_MAIN to VACUUM

  3. Improve the regression tests of VACUUM (PROCESS_TOAST)

  4. Display the leader apply worker's PID for parallel apply workers.