Re: Fix --missing-stats-only false positive for partitioned expression indexes

Corey Huinker <corey.huinker@gmail.com>

From: Corey Huinker <corey.huinker@gmail.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Baji Shaik <baji.pgdev@gmail.com>, PostgreSQL-development <pgsql-hackers@lists.postgresql.org>
Date: 2026-06-16T17:25:27Z
Lists: pgsql-hackers
On Tue, Jun 16, 2026 at 1:15 PM Nathan Bossart <nathandbossart@gmail.com>
wrote:

> On Tue, Jun 16, 2026 at 12:09:00PM -0500, Baji Shaik wrote:
> > v3 attached.
>
> Here is a v4 with an updated commit message and a test case.
>
> --
> nathan
>

I know this is a corner-case of a corner-case, but if  " AND s.stainherit
OPERATOR(pg_catalog.=) p.inherited", we might then get a false negative
from a situation like this:

t2 inherits t1
t1 has ineritance stats but somehow not regular stats
t2 dis-inherits from t1, t1 is no longer p.inherited = true, but inherited
stats remain

vacuumdb goes looking for matches, sees that t1 is p.inherited = false,
find the old inherited stat row, not realizing it should have been looking
for a non-inherits row.

Commits

  1. vacuumdb: Fix --missing-stats-only for partitioned indexes.