On Thu, 8 May 2025 at 15:23, David G. Johnston <david.g.johnston@gmail.com> wrote: > Not liking the proposal, not sure it is even correct. Somehow "children of inheritance parent tables" are omitted.
I don't see the quoted text anywhere in this area, so I'm not sure I follow what you mean with the omission.
Omitted from your v1 patch.
The two options for sample sets are 1) stainherits==true and 2) stainherits==false. With inheritance parent tables, ANALYZE gathers both sets and records both sets in pg_statistic.
I was missing this key piece of knowledge which invalidated my entire attempt.
Here's an attempt at shortening this now that I understand the mechanics better.
Separate options exist because an inheritance parent table has two different sets of statistics: one considering only itself and one which also includes its children (<literal>n_distinct_inherited</literal>). Partitioned tables, which only have rows in the children, likewise uses the inherited option while everyone else uses <literal>n_distinct</literal>.