pgsql: Preserve n_live_tup when VACUUM cannot estimate it

From: Melanie Plageman <melanieplageman(at)gmail(dot)com>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Preserve n_live_tup when VACUUM cannot estimate it
Date: 2026-11-12 20:58:41
Message-ID: E1xRbsX-00000000TkI-1fZg@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Preserve n_live_tup when VACUUM cannot estimate it

VACUUM clamped an unknown live-tuple estimate (-1) to zero before
reporting it to pgstat, overwriting any existing n_live_tup estimate
with zero. It did so because some users required non-negative values and
the situation was seen as rare.

Commit b46e1e54d made the sitaution more likely by allowing on-access
pruning to mark pages all-visible before VACUUM or ANALYZE establishes
tuple density.

Pass -1 through to pgstat_report_vacuum(), which will preserve the
existing n_live_tup when the estimate is unknown.

Reported-by: Vaibhav Jain <jainva(at)google(dot)com>
Author: Vaibhav Jain <jainva(at)google(dot)com>
Reviewed-by: Melanie Plageman <melanieplageman(at)gmail(dot)com>
Discussion: https://postgr.es/m/flat/CABa-Az2YXuX%2B_JH8VL89i7oA%2BDC74GvfkSsM9%2B92fGCeWYVCqg%40mail.gmail.com
Backpatch-through: 19

Branch
------
REL_19_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/9693c831c1f5fbc2ff437e42a93b0b6274b82105

Modified Files
--------------
src/backend/access/heap/vacuumlazy.c | 2 +-
src/backend/utils/activity/pgstat_relation.c | 6 +++++-
2 files changed, 6 insertions(+), 2 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Melanie Plageman 2026-11-12 21:04:15 pgsql: Avoid extrapolating reltuples from tiny VACUUM samples
Previous Message Melanie Plageman 2026-11-12 20:55:35 pgsql: Preserve n_live_tup when VACUUM cannot estimate it