On Sat, Apr 15, 2023 at 10:04:52AM +1200, David Rowley wrote:
> On Sat, 15 Apr 2023 at 08:36, Justin Pryzby <pryzby@telsasoft.com> wrote:
> >
> > I hit this elog() while testing reports under v16 and changed to PANIC
> > to help diagnose.
> >
> > DETAILS: PANIC: invalid memory alloc request size 18446744072967930808
> > CONTEXT: PL/pgSQL function array_weight(real[],real[]) while storing call arguments into local variables
> >
> > I can't share the query, data, nor plpgsql functions themselves.
>
> Which aggregate function is being called here? Is it a custom
> aggregate written in C, by any chance?
That function is not an aggregate:
ts=# \sf array_weight
CREATE OR REPLACE FUNCTION public.array_weight(real[], real[])
RETURNS real
LANGUAGE plpgsql
IMMUTABLE PARALLEL SAFE
And we don't have any C code loaded to postgres. We do have polymorphic
aggregate functions using anycompatiblearray [*], and array_weight is
being called several times with those aggregates as its arguments.
*As in:
9e38c2bb5093ceb0c04d6315ccd8975bd17add66
97f73a978fc1aca59c6ad765548ce0096d95a923
09878cdd489ff7aca761998e7cb104f4fd98ae02