pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Nathan Bossart <nathan@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: vacuumdb: Don't skip empty relations in --missing-stats-only mod
Date: Wed, 30 Apr 2025 19:13:29 +0000
Message-ID: <E1uACs5-000Myo-1K@gemulon.postgresql.org> (raw)

vacuumdb: Don't skip empty relations in --missing-stats-only mode.

Presently, --missing-stats-only skips relations with reltuples set
to 0 because empty relations don't get optimizer statistics.
However, before v14, a reltuples value of 0 was ambiguous: it could
either mean the relation is empty, or it could mean that it hadn't
yet been vacuumed or analyzed.  (Commit 3d351d916b taught v14 and
newer to use -1 for the latter case.)  This ambiguity can cause
--missing-stats-only to inadvertently skip relations that need
optimizer statistics after upgrades to v18 and newer (since
reltuples is now transferred from the old cluster).

To fix, simply remove the check for reltuples != 0.  This will
cause --missing-stats-only to analyze some empty tables, but that
doesn't seem too terrible a trade-off.

Reported-by: Christoph Berg <myon@debian.org>
Reviewed-by: Christoph Berg <myon@debian.org>
Discussion: https://postgr.es/m/aAjyvW5_fRGNr7yF%40msg.df7cb.de

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/987910502420b77eaf7c3e807f6b0fc1cffced29

Modified Files
--------------
src/bin/scripts/vacuumdb.c | 5 -----
1 file changed, 5 deletions(-)



Message-ID: <E1uACs5-000Myo-1K@gemulon.postgresql.org>
Permalink:  ../E1uACs5-000Myo-1K@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1uACs5-000Myo-1K@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: nathan@postgresql.org, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: vacuumdb: Don't skip empty relations in --missing-stats-only mod
  In-Reply-To: <E1uACs5-000Myo-1K@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox