pg.ddx.io pgsql-hackers@postgresql.org mailing list archive
help / color / mirror / Atom feed From: Tom Lane <tgl@sss.pgh.pa.us>
To: Tomas Vondra <tomas.vondra@2ndquadrant.com>
Cc: David Rowley <david.rowley@2ndquadrant.com>
Cc: Stephen Frost <sfrost@snowman.net>
Cc: Andres Freund <andres@anarazel.de>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Subject: Re: Parallel Aggregates for string_agg and array_agg
Date: Tue, 27 Mar 2018 23:28:19 -0400
Message-ID: <19216.1522207699@sss.pgh.pa.us> (raw )
In-Reply-To: <452e8b7f-418b-4e61-c212-c0e4410b94ad@2ndquadrant.com >
References: <CAKJS1f8cB3cc5AK=wPvByhU_jKkgd81iRt2kE6cru8uxx2HCuA@mail.gmail.com >
<c302afa6-6415-27a5-336a-e1d4332fab09@2ndquadrant.com >
<CAKJS1f9xEZdTaBbBEKY+TCKEoSZYaH1oSAtsEJHSYDJCCNnQPQ@mail.gmail.com >
<24abe018-b3c6-2117-b5b9-39e660db00bd@2ndquadrant.com >
<CAKJS1f8LV7AT=AAhdYGKtGrGkSkEgO6C_SW2Ztz1sR3encisqw@mail.gmail.com >
<1b6ee15c-c218-761e-0120-c1ed438e2db2@2ndquadrant.com >
<657be73a-a21d-0ae1-5c62-870afbdfddd4@2ndquadrant.com >
<CAKJS1f-bKAD+s-CJetRQPjmrR-gF-kfvwfzhQm-A0PA-nsr1xw@mail.gmail.com >
<20180326022647.GL24540@tamriel.snowman.net >
<CAKJS1f-axkksX3XzduLJuTL=o8CSwf1NaQYO6=iHSXR_B3pCKQ@mail.gmail.com >
<20180326132009.GN24540@tamriel.snowman.net >
<CAKJS1f8JVpUUkYP2c+RyVRdpS1dnjB_DA5fbcDSL3qfMRqc81Q@mail.gmail.com >
<6538.1522096067@sss.pgh.pa.us >
<25812.1522108164@sss.pgh.pa.us >
<CAKJS1f87rFqL0=ksfs+3mmQvg_R0RRGEXyayxHkwYnFqeKpngQ@mail.gmail.com >
<CAKJS1f9oTWG4oc7B2WfDhT11KhxeV1miLQ+PzB6hY=iJeHM28A@mail.gmail.com >
<452e8b7f-418b-4e61-c212-c0e4410b94ad@2ndquadrant.! com >
Tomas Vondra <tomas.vondra@2ndquadrant.com> writes:
> On 03/27/2018 04:51 AM, David Rowley wrote:
>> Seems I didn't mean "trans types". I should have said aggregate
>> function argument types.
> I'm not sure that's better than the check proposed by Tom. An argument
> type without send/receive function does not necessarily mean we can't
> serialize/deserialize the trans value. Because who says the argument
> value will be embedded in the trans value?
In general we would not know that, but *for these specific serial/
deserial functions*, we know exactly what they will do. Also, IIRC,
the trans type is declared as INTERNAL, so we don't really have any
hope of identifying the behavior by inspecting that type declaration.
Getting a solution that would work for other polymorphic serialization
functions seems like a bit of a research project to me. In the meantime,
I think David's right that what we need to look at is the actual input
type of the aggregate, and then assume that what's to be serialized is
an array of that. Conceivably an aggregate could be built that uses
these serial/deserial functions and yet its input type is something else
than what it constructs an array of ... but I find it a bit hard to
wrap my brain around what that would be exactly.
regards, tom lane
view thread (77+ messages) latest in thread
Message-ID: <19216.1522207699@sss.pgh.pa.us>
Permalink: ../19216.1522207699@sss.pgh.pa.us/
Also on: postgresql.org/message-id/19216.1522207699@sss.pgh.pa.us
copy link · copy postgr.es
reply Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: tgl@sss.pgh.pa.us, tomas.vondra@2ndquadrant.com, david.rowley@2ndquadrant.com, sfrost@snowman.net, andres@anarazel.de
Subject: Re: Parallel Aggregates for string_agg and array_agg
In-Reply-To: <19216.1522207699@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox