Re: New vacuum option to do only freezing

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, "Bossart, Nathan" <bossartn@amazon.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>, Michael Paquier <michael@paquier.xyz>
Date: 2019-05-17T20:55:49Z
Lists: pgsql-hackers
Hi,

On 2019-05-09 14:14:20 +0900, Masahiko Sawada wrote:
> I agree that this item is neither critical and bug. But this is an
> (my) oversight and is a small patch and I think there is no specific
> reason why we don't dare to include this in 12. So if this patch could
> get reviewed enough I think we can have it in 12. Since the previous
> patch conflicts with current HEAD I've attached the rebased version
> patch.

Robert, this indeed looks near trivial. What do you think?

> diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml
> index 44a61ef..1e1b0e8 100644
> --- a/doc/src/sgml/ref/create_table.sgml
> +++ b/doc/src/sgml/ref/create_table.sgml
> @@ -1406,7 +1406,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
>     </varlistentry>
>  
>     <varlistentry id="reloption-vacuum-index-cleanup" xreflabel="vacuum_index_cleanup">
> -    <term><literal>vacuum_index_cleanup</literal> (<type>boolean</type>)
> +    <term><literal>vacuum_index_cleanup</literal>, <literal>toast.vacuum_index_cleanup</literal> (<type>boolean</type>)
>      <indexterm>
>       <primary><varname>vacuum_index_cleanup</varname> storage parameter</primary>
>      </indexterm>
> diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c
> index cfbabb5..022b3a0 100644
> --- a/src/backend/access/common/reloptions.c
> +++ b/src/backend/access/common/reloptions.c
> @@ -147,7 +147,7 @@ static relopt_bool boolRelOpts[] =
>  		{
>  			"vacuum_index_cleanup",
>  			"Enables index vacuuming and index cleanup",
> -			RELOPT_KIND_HEAP,
> +			RELOPT_KIND_HEAP | RELOPT_KIND_TOAST,
>  			ShareUpdateExclusiveLock
>  		},
>  		true
> diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
> index e4c03de..2379b3d 100644
> --- a/src/bin/psql/tab-complete.c
> +++ b/src/bin/psql/tab-complete.c
> @@ -1056,6 +1056,7 @@ static const char *const table_storage_parameters[] = {
>  	"toast.autovacuum_vacuum_scale_factor",
>  	"toast.autovacuum_vacuum_threshold",
>  	"toast.log_autovacuum_min_duration",
> +	"toast.vacuum_index_clenaup",
>  	"toast.vacuum_truncate",
>  	"toast_tuple_target",
>  	"user_catalog_table",

typo.

Sawada-san, it'd be good if you could add at least some minimal tests in
the style of the no_index_cleanup test in vacuum.sql.

- Andres



Commits

  1. Add toast-level reloption for vacuum_index_cleanup

  2. heap_prepare_freeze_tuple: Simplify coding

  3. Fix missing word.

  4. Allow VACUUM to be run with index cleanup disabled.

  5. Don't mark pages all-visible spuriously