• Tom Lane's avatar
    Fix JSON aggregates to work properly when final function is re-executed. · 75ef4352
    Tom Lane authored
    Davide S. reported that json_agg() sometimes produced multiple trailing
    right brackets.  This turns out to be because json_agg_finalfn() attaches
    the final right bracket, and was doing so by modifying the aggregate state
    in-place.  That's verboten, though unfortunately it seems there's no way
    for nodeAgg.c to check for such mistakes.
    
    Fix that back to 9.3 where the broken code was introduced.  In 9.4 and
    HEAD, likewise fix json_object_agg(), which had copied the erroneous logic.
    Make some cosmetic cleanups as well.
    75ef4352
json.c 61.6 KB