Re: [Proposal] Allow users to specify multiple tables in VACUUM commands

Nathan Bossart <bossartn@amazon.com>

From: "Bossart, Nathan" <bossartn@amazon.com>
To: Michael Paquier <michael.paquier@gmail.com>, "David G. Johnston" <david.g.johnston@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Tom Lane <tgl@sss.pgh.pa.us>, Masahiko Sawada <sawada.mshk@gmail.com>
Date: 2017-08-31T01:52:13Z
Lists: pgsql-hackers

Attachments

On 8/30/17, 5:37 PM, "Michael Paquier" <michael.paquier@gmail.com> wrote:
> +VacuumRelation *
> +makeVacuumRelation(RangeVar *relation, List *va_cols, Oid oid)
> +{
> +   VacuumRelation *vacrel = makeNode(VacuumRelation);
> +   vacrel->relation = relation;
> +   vacrel->va_cols = va_cols;
> +   vacrel->oid = oid;
> +   return vacrel;
> +}
> Perhaps in makefuncs.c instead of vacuum.c? That's usually the place
> used for node constructions like that.

This function is moved in v11.

On 8/30/17, 6:52 PM, "Michael Paquier" <michael.paquier@gmail.com> wrote:
> On Thu, Aug 31, 2017 at 8:35 AM, David G. Johnston
> <david.g.johnston@gmail.com> wrote:
>> Inspired by the syntax documentation for EXPLAIN:
>>
>> VACUUM [ ( option [, ...] ) ] [ table_def [, ...] ]
>>
>> where option can be one of:
>>     FULL
>>     FREEZE
>>     VERBOSE
>>     DISABLE_PAGE_SKIPPING
>>
>> and where table_def is:
>>     table_name [ ( column_name [, ... ] ) ]
>
> Yes, splitting things would be nice with the column list. I need more coffee.

I've made this change in v11 as well.

v2 of the de-duplication patch seems to still apply cleanly, so I haven't
made any further changes to it.

Nathan

Commits

  1. Allow multiple tables to be specified in one VACUUM or ANALYZE command.

  2. Give a better error for duplicate entries in VACUUM/ANALYZE column list.

  3. Reject ANALYZE commands during VACUUM FULL or another ANALYZE.