Re: Making jsonb_agg() faster

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: jian he <jian(dot)universality(at)gmail(dot)com>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Making jsonb_agg() faster
Date: 2025-08-22 19:11:34
Message-ID: 2129790.1755889894@sss.pgh.pa.us
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I realized that my patch-of-record in this thread is out of date
in the wake of 2a600a93c, because it had some code catering to the
possibility that timestamp[tz] is pass-by-reference. While it
still compiled and worked, we don't want to commit it like that.

v2-0001 takes care of that, and also adopts your suggestion in [1]
about not using two calls of pushJsonbValueScalar where one would do.
I also did a bit more micro-optimization in appendKey, appendValue,
appendElement to avoid redundant copying, because perf testing showed
that appendElement is still a hot-spot for jsonb_agg. Patches 0002
and 0003 are unchanged.

I did not adopt your changes in [2], because they didn't really
seem like improvements to me.

regards, tom lane

[1] https://www.postgresql.org/message-id/CACJufxGFzbRDnyG-%3DWZ3RgkVUwOZexUobGDrA3n5bj8MxrAZvQ%40mail.gmail.com
[2] https://www.postgresql.org/message-id/CACJufxGHLYtvOAB7uA59C9Lz%2BrDPta5Egiii-B5opsZbw6eDDQ%40mail.gmail.com

Attachment Content-Type Size
v2-0001-Revise-APIs-for-pushJsonbValue-and-associated-rou.patch text/x-diff 72.7 KB
v2-0002-Remove-fundamentally-redundant-processing-in-json.patch text/x-diff 14.2 KB
v2-0003-Micro-optimize-datatype-conversions-in-datum_to_j.patch text/x-diff 6.6 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Sami Imseih 2025-08-22 19:21:55 GetNamedLWLockTranche crashes on Windows in normal backend
Previous Message Nathan Bossart 2025-08-22 16:14:24 Re: Don't treat virtual generated columns as missing statistics in vacuumdb --missing-stats-only