• Tom Lane's avatar
    Fix no-longer-valid shortcuts in expression_returns_set(). · 8e72239e
    Tom Lane authored
    expression_returns_set() used to short-circuit its recursion upon
    seeing certain node types, such as DistinctExpr, that it knew the
    executor did not support set-valued arguments for.  That was never
    inherent, though, just a reflection of laziness in execQual.c.
    With the new implementation of SRFs there is no reason to think
    that any scalar-valued expression node could not have a set-valued
    subexpression, except for AggRefs and WindowFuncs where we know there
    is a parser check rejecting it.  And indeed, the shortcut causes
    unexpected failures for cases such as a SRF underneath DistinctExpr,
    because the planner stops looking for SRFs too soon.
    
    Discussion: https://postgr.es/m/5259.1497044025@sss.pgh.pa.us
    8e72239e
tsrf.out 17.7 KB