Re: add PROCESS_MAIN to VACUUM

Nathan Bossart <nathandbossart@gmail.com>

From: Nathan Bossart <nathandbossart@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Michael Paquier <michael@paquier.xyz>, vignesh C <vignesh21@gmail.com>, pgsql-hackers@postgresql.org
Date: 2023-03-01T19:13:44Z
Lists: pgsql-hackers

Attachments

On Wed, Mar 01, 2023 at 07:09:53PM +0100, Alvaro Herrera wrote:
> On 2023-Mar-01, Michael Paquier wrote:
> 
>> +-- PROCESS_MAIN option
>> +VACUUM (PROCESS_MAIN FALSE) vactst;
>> +VACUUM (PROCESS_MAIN FALSE, PROCESS_TOAST FALSE) vactst;
>> +VACUUM (PROCESS_MAIN FALSE, FULL) vactst;
>> 
>> Thinking a bit here.  This set of tests does not make sure that the
>> main relation and/or the toast relation have been actually processed. 
>> pg_stat_user_tables does not track what's happening on the toast
>> relations.  So...  What about adding some tests in 100_vacuumdb.pl
>> that rely on vacuumdb --verbose and check the logs produced?  We
>> should make sure that the toast or the main relation are processed,
>> by tracking, for example, logs like vacuuming "schema.table".  When
>> FULL is involved, we may want to track the changes on relfilenodes
>> depending on what's wanted.
> 
> Maybe instead of reading the log, read values from pg_stat_all_tables.

Here is an attempt at that.  Thanks for the idea.

-- 
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.