Thanks for taking a fresh look at this. As you've written it, this can apply to either/both partitioned or inheritence. I imagine when "MERGE" goes away, this should apply only to partitioned tables. (Actually, personally I would advocate to consider applying it to *both*, but I don't think that's been the tendency over the last 4 years. I wrote here about some arguably-gratuitous differences between inheritence and partitioning. https://www.postgresql.org/message-id/20180601221428.gu5...@telsasoft.com)
> + if (*mcv_items > default_statistics_target) > + n = default_statistics_target; It should use any non-default stats target of the parent's column > + * ignore anything but valid leaf relatiins with data, but > release sp: relatiins. > + elog(WARNING, "stats for %d %d not found", > + RelationGetRelid(rels[j]), > vacattrstats[i]->attr->attnum); should be %u %d This code duplication is undesirable: > + /* Log the action if appropriate */ > + * Determine which columns to analyze