• Tom Lane's avatar
    While doing the final setrefs.c pass over a plan tree, try to match up · 49ed392c
    Tom Lane authored
    non-Var sort/group expressions using ressortgroupref labels instead of
    depending entirely on equal()-ity of the upper node's tlist expressions
    to the lower node's.  This avoids emitting the wrong outputs in cases
    where there are textually identical volatile sort/group expressions,
    as for example
    	select distinct random(),random() from generate_series(1,10);
    Per report from Andrew Gierth.
    
    Backpatch to 8.4.  Arguably this is wrong all the way back, but the only known
    case where there's an observable problem is when using hash aggregation to
    implement DISTINCT, which is new as of 8.4.  So for the moment I'll refrain
    from backpatching further.
    49ed392c
setrefs.c 56.8 KB