Re: why there is not VACUUM FULL CONCURRENTLY?

From: Antonin Houska <ah(at)cybertec(dot)at>
To: "Euler Taveira" <euler(at)eulerto(dot)com>
Cc: "Alvaro Herrera" <alvherre(at)alvh(dot)no-ip(dot)org>, "Marcos Pegoraro" <marcos(at)f10(dot)com(dot)br>, "Michael Banck" <mbanck(at)gmx(dot)net>, "Junwang Zhao" <zhjwpku(at)gmail(dot)com>, "Kirill Reshke" <reshkekirill(at)gmail(dot)com>, "Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>, "Michael Paquier" <michael(at)paquier(dot)xyz>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: why there is not VACUUM FULL CONCURRENTLY?
Date: 2025-04-11 09:25:22
Message-ID: 97795.1744363522@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Euler Taveira <euler(at)eulerto(dot)com> wrote:

> On Fri, Apr 4, 2025, at 1:38 PM, Antonin Houska wrote:
>
> Euler Taveira <euler(at)eulerto(dot)com> wrote:
>
> > +
> > + <warning>
> > + <para>
> > + The <command>FULL</command> parameter is deprecated in favor of
> > + <xref linkend="sql-repack"/>.
> > + </para>
> > + </warning>
> > +
> >
> > The warnings, notes, and tips are usually placed *after* the description.
>
> You probably mean the subsecions "Notes on Clustering" and "Notes on
> Resources". I moved them into the "Notes" section.
>
> No. I said that it should be put after the <para> not before.
>
> @@ -98,6 +98,14 @@ VACUUM [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ] [ <re
> <varlistentry>
> <term><literal>FULL</literal></term>
> <listitem>
> +
> + <warning>
> + <para>
> + The <command>FULL</command> parameter is deprecated in favor of
> + <xref linkend="sql-repack"/>.
> + </para>
> + </warning>
> +
> <para>
> Selects <quote>full</quote> vacuum, which can reclaim more
> space, but takes much longer and exclusively locks the table.
>
> > + SELECT
> > + S.pid AS pid,
> > + S.datid AS datid,
> > + D.datname AS datname,
> > + S.relid AS relid,
> > + CASE S.param1 WHEN 1 THEN 'REPACK'
> > + END AS command,
> >
> > Do you really need command? IIUC REPACK is the only command that will used by
> > this view. There is no need to differentiate commands here.
>
> REPACK is a regular command, so why shouldn't it have its view? Just like
> CLUSTER has one (pg_stat_progress_cluster).
>
> You missed my point. IIRC the command is relevant in the
> pg_stat_progress_cluster because there are multiple commands (CLUSTER, VACUUM
> FULL). However, in this new view there will be only one command so it is not
> necessary to inform it.
>
> > + *
> > + * 'cmd' indicates which commands is being executed. REPACK should be the only
> > + * caller of this function in the future.
> >
> > command.
>
> Not sure I understand this comment.
>
> Singular form. ... which command is ...
>

This is the next version. It addresses these remaining concerns and also gets
rid of the unnecessary rules in gram.y (which complained about earlier).

--
Antonin Houska
Web: https://www.cybertec-postgresql.com

Attachment Content-Type Size
v13-0001-Add-REPACK-command.patch text/x-diff 81.8 KB
v13-0002-Move-conversion-of-a-historic-to-MVCC-snapshot-to-a-.patch text/x-diff 5.4 KB
v13-0003-Move-the-recheck-branch-to-a-separate-function.patch text/x-diff 4.8 KB
v13-0004-Add-CONCURRENTLY-option-to-REPACK-command.patch text/plain 150.1 KB
v13-0005-Add-regression-tests.patch text/x-diff 10.4 KB
v13-0006-Introduce-repack_max_xlock_time-configuration-variab.patch text/x-diff 20.1 KB
v13-0007-Enable-logical-decoding-transiently-only-for-REPACK-.patch text/x-diff 34.9 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Dave Cramer 2025-04-11 09:27:38 Re: Correct documentation for protocol version
Previous Message Nazir Bilal Yavuz 2025-04-11 09:13:41 Add pg_buffercache_mark_dirty[_all] functions to the pg_buffercache