]> granicus.if.org Git - postgresql/commit
Fix JSON aggregates to work properly when final function is re-executed.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 2 Dec 2014 20:02:40 +0000 (15:02 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 2 Dec 2014 20:02:40 +0000 (15:02 -0500)
commitf0eeba6f83ed16687d8743b34e519de45c3915ec
treef2c114440fb3efb291c584b14e5b05ebbc38b892
parentac0aa07e96b3ebf7b8b2bebfc56fc86fb90c14f5
Fix JSON aggregates to work properly when final function is re-executed.

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.
src/backend/utils/adt/json.c