Cannot create an aggregate function with variadic parameters and enabled for parallel execution

From: Alexey Bashtanov <bashtanov(at)imap(dot)cc>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Cannot create an aggregate function with variadic parameters and enabled for parallel execution
Date: 2018-05-13 23:44:01
Message-ID: f86dde87-fef4-71eb-0480-62754aaca01b@imap.cc
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

When trying to improve my extension Argm to work with parallel queries I
found that
CREATE AGGREGATE wants serial/deserial/combine functions
to have variadic any parameter if the aggregate function itself is
variadic any.
If I add the requested parameter, CREATE AGGREGATE still cannot find the
function.

Having an analog of [m]finalfunc_extra for serial/deserial/combine functions
may be a good idea, but it's not yet there. So the attached patch makes
postgres
skip the check for the parallel support functions.

I would appreciate if someone could have a look at the patch.
The problem is probably actual for 9.6+, so back-patch would be nice if
there's no objections.

Should one be curious how to reproduce the problem, please clone
https://github.com/bashtanov/argm/tree/parallel
and try make && make install && make installcheck. This fails without
the patch, but works with it.
The error message is "function argmax_combine(internal, internal) must
accept VARIADIC ANY to be used in this aggregate".
(Just in case: this "parallel" branch is a WIP, please use "master"
branch if you need something stable).

Best regards,
  Alexey

Attachment Content-Type Size
agg_variadic_parallel.patch text/x-patch 1.7 KB

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2018-05-14 02:02:38 BUG #15194: Strange results were displayed for select query.
Previous Message Pavel Stehule 2018-05-13 19:43:25 Re: Abnormal JSON query performance