• Tomas Vondra's avatar
    Identify simple column references in extended statistics · 50ba70a9
    Tomas Vondra authored
    Until now, when defining extended statistics, everything except a plain
    column reference was treated as complex expression. So for example "a"
    was a column reference, but "(a)" would be an expression. In most cases
    this does not matter much, but there were a couple strange consequences.
    For example
    
        CREATE STATISTICS s ON a FROM t;
    
    would fail, because extended stats require at least two columns. But
    
        CREATE STATISTICS s ON (a) FROM t;
    
    would succeed, because that requirement does not apply to expressions.
    Moreover, that statistics object is useless - the optimizer will always
    use the regular statistics collected for attribute "a".
    
    So do a bit more work to identify those expressions referencing a single
    column, and translate them to a simple column reference. Backpatch to
    14, where support for extended statistics on expressions was introduced.
    
    Reported-by: Justin Pryzby
    Backpatch-through: 14
    Discussion: https://postgr.es/m/20210816013255.GS10479%40telsasoft.com
    50ba70a9
stats_ext.out 110 KB