| From: | Nathan Bossart <nathandbossart(at)gmail(dot)com> |
|---|---|
| To: | Corey Huinker <corey(dot)huinker(at)gmail(dot)com> |
| Cc: | Baji Shaik <baji(dot)pgdev(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Fix --missing-stats-only false positive for partitioned expression indexes |
| Date: | 2026-06-16 17:54:49 |
| Message-ID: | ajGN6c2Rrb3HFO5d@nathan |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Tue, Jun 16, 2026 at 12:51:28PM -0500, Nathan Bossart wrote:
> On Tue, Jun 16, 2026 at 01:25:27PM -0400, Corey Huinker wrote:
>> 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.
>
> Since p.inherited is set based on the relkind, it could only change if the
> table was converted from partitioned to not partitioned. IIRC that's not
> currently possible.
(Also, expression index stats are documented as always having stainherit =
false...)
--
nathan
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2026-06-16 17:57:34 | Re: Centralised architecture detection |
| Previous Message | Nathan Bossart | 2026-06-16 17:51:28 | Re: Fix --missing-stats-only false positive for partitioned expression indexes |