From bb08e78972b1d0ec9f11f3d0b18903ec7a216855 Mon Sep 17 00:00:00 2001
From: David Rowley <drowley@postgresql.org>
Date: Mon, 9 Aug 2021 16:47:25 +1200
Subject: [PATCH] Doc: Fix misleading statement about VACUUM memory limits

In ec34040af I added a mention that there was no point in setting
maintenance_work_limit to anything higher than 1GB for vacuum, but that
was incorrect as ginInsertCleanup() also looks at what
maintenance_work_mem is set to during VACUUM and that's not limited to
1GB.

Here I attempt to make it more clear that the limitation is only around
the number of dead tuple identifiers that we can collect during VACUUM.

I've also added a note to autovacuum_work_mem to mention this limitation.
I didn't do that in ec34040af as I'd had some wrong-headed ideas about
just limiting the maximum value for that GUC to 1GB.

Author: David Rowley
Discussion: https://postgr.es/m/CAApHDvpGwOAvunp-E-bN_rbAs3hmxMoasm5pzkYDbf36h73s7w@mail.gmail.com
Backpatch-through: 9.6, same as ec34040af
---
 doc/src/sgml/config.sgml | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 752697f07f..92ac53f9a5 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -1770,10 +1770,9 @@ include_dir 'conf.d'
         setting <xref linkend="guc-autovacuum-work-mem"/>.
        </para>
        <para>
-        Additionally, <command>VACUUM</command> is only able to utilize up to
-        a maximum of <literal>1GB</literal> of memory, so
-        <varname>maintenance_work_mem</varname> values higher than this have
-        no effect on <command>VACUUM</command>.
+        Note that for the collection of dead tuple identifiers,
+        <command>VACUUM</command> is only able to utilize up to a maximum of
+        <literal>1GB</literal> of memory.
        </para>
       </listitem>
      </varlistentry>
@@ -1797,6 +1796,13 @@ include_dir 'conf.d'
         <filename>postgresql.conf</filename> file or on the server command
         line.
        </para>
+       <para>
+        For the collection of dead tuple identifiers, autovacuum is only able
+        to utilize up to a maximum of <literal>1GB</literal> of memory, so
+        setting <varname>autovacuum_work_mem</varname> to a value higher than
+        that has no effect on the number of dead tuples that autovacuum can
+        collect while scanning a table.
+       </para>
       </listitem>
      </varlistentry>