• Tomas Vondra's avatar
    Don't build extended statistics on inheritance trees · 14ef15a2
    Tomas Vondra authored
    When performing ANALYZE on inheritance trees, we collect two samples for
    each relation - one for the relation alone, and one for the inheritance
    subtree (relation and its child relations). And then we build statistics
    on each sample, so for each relation we get two sets of statistics.
    
    For regular (per-column) statistics this works fine, because the catalog
    includes a flag differentiating statistics built from those two samples.
    But we don't have such flag in the extended statistics catalogs, and we
    ended up updating the same row twice, triggering this error:
    
      ERROR:  tuple already updated by self
    
    The simplest solution is to disable extended statistics on inheritance
    trees, which is what this commit is doing. In the future we may need to
    do something similar to per-column statistics, but that requires adding a
    flag to the catalog - and that's not backpatchable. Moreover, the current
    selectivity estimation code only works with individual relations, so
    building statistics on inheritance trees would be pointless anyway.
    
    Author: Tomas Vondra
    Backpatch-to: 10-
    Discussion: https://postgr.es/m/20190618231233.GA27470@telsasoft.com
    Reported-by: Justin Pryzby
    14ef15a2
stats_ext.out 25.8 KB