• Tom Lane's avatar
    Fix non-bulletproof ScalarArrayOpExpr code for extended statistics. · ea6c9169
    Tom Lane authored
    statext_is_compatible_clause_internal() checked that the arguments
    of a ScalarArrayOpExpr are one Var and one Const, but it would allow
    cases where the Const was on the left.  Subsequent uses of the clause
    are not expecting that and would suffer assertion failures or core
    dumps.  mcv.c also had not bothered to cope with the case of a NULL
    array constant, which seems really unacceptably sloppy of somebody.
    (Although our tools failed us there too, since AFAIK neither Coverity
    nor any compiler warned of the obvious use-of-uninitialized-variable
    condition.)  It seems best to handle that by having
    statext_is_compatible_clause_internal() reject it.
    
    Noted while fixing bug #17570.  Back-patch to v13 where the
    extended stats code grew some awareness of ScalarArrayOpExpr.
    ea6c9169
mcv.c 63.9 KB