Re: maintenance_work_mem = 64kB doesn't work for vacuum

David Rowley <dgrowleyml@gmail.com>

From: David Rowley <dgrowleyml@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2025-03-09T21:30:48Z
Lists: pgsql-hackers
On Mon, 10 Mar 2025 at 07:46, Masahiko Sawada <sawada.mshk@gmail.com> wrote:
> A simple fix is to bump the minimum maintenance_work_mem to 256kB. We
> would break the compatibility for backbranch (i.e. v17) but I guess
> it's unlikely that existing v17 users are using less than 1MB
> maintenance_work_mem (the release note doesn't mention the fact that
> we lowered the minimum value).

Could you do something similar to what's in hash_agg_check_limits()
where we check we've got at least 1 item before bailing before we've
used up the all the prescribed memory?  That seems like a safer coding
practise as if in the future the minimum usage for a DSM segment goes
above 256KB, the bug comes back again.

David



Commits

  1. Fix assertion failure in parallel vacuum with minimal maintenance_work_mem setting.

  2. Lower minimum maintenance_work_mem to 64kB