Cannot create an aggregate function with variadic parameters and enabled for parallel execution
Alexey Bashtanov <bashtanov@imap.cc>
From: Alexey Bashtanov <bashtanov@imap.cc>
To: pgsql-bugs@postgresql.org
Date: 2018-05-13T23:44:01Z
Lists: pgsql-bugs
Attachments
- agg_variadic_parallel.patch (text/x-patch) patch
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
Commits
-
Fix type checking for support functions of parallel VARIADIC aggregates.
- f92491186b6f 9.6.10 landed
- 17083ab7e121 10.5 landed
- 05ca21b878a9 11.0 landed