Re: Error from array_agg when table has many rows
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Richard Guo <guofenglinux@gmail.com>,
Kirill Zdornyy <kirill@dineserve.com>,
"pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2025-03-09T17:14:53Z
Lists: pgsql-bugs
David Rowley <dgrowleyml@gmail.com> writes: > On Sun, 9 Mar 2025 at 04:50, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Yeah. I don't think there is any way for array_agg_deserialize to >> know the correct typmod, so what we have to do is disable using >> partial aggregation in this case. Fortunately there's a >> policy-setting function that can be taught that, as attached. > The only way I can think of to get that would be to special-case > array_agg_serialize() to have it serialize the typmod when the send > function is record_send(), then add a similar special-case to > array_agg_deserialize() to check for a record_recv() and deserialize > the typmod there. That doesn't seem very pretty, so I'm happy to go > with your fix to disable parallel aggregates for this case. Yeah ... we could probably make that work if we had to, but the ugliness would likely metastasize outside array_agg_[de]serialize. Since it took more than a year to get a field report, I'm content to just disable the optimization instead. Pushed that way. regards, tom lane
Commits
-
Don't try to parallelize array_agg() on an anonymous record type.
- fedfcf66506f 18.0 landed
- a7aa9f21f23e 16.9 landed
- 43847dd5e938 17.5 landed