On Thu, Jan 21, 2016 at 3:42 PM, David Rowley <david.row...@2ndquadrant.com> wrote: > On 21 January 2016 at 08:06, Robert Haas <robertmh...@gmail.com> wrote: >> >> On Wed, Jan 20, 2016 at 7:38 AM, David Rowley >> <david.row...@2ndquadrant.com> wrote: >> > Agreed. So I've attached a version of the patch which does not have any >> > of >> > the serialise/deserialise stuff in it. >> >> I re-reviewed this and have committed most of it with only minor >> kibitizing. A few notes: > > > I've attached the re-based remainder, which includes the serial/deserial > again. > > I'll submit this part to March 'fest, where hopefully we'll also have > something to utilise it. >
While testing parallel aggregate with float4 and float8 types based on the latest patch, I found the following problems, + /* + * For partial aggregation we must adjust the return types of + * the Aggrefs + */ + if (!aggplan->finalizeAggs) + set_partialagg_aggref_types(root, plan, + aggplan->serialStates); [...] + aggref->aggtype = aggform->aggserialtype; + else + aggref->aggtype = aggform->aggtranstype; Changing the aggref->aggtype with aggtranstype or aggserialtype will only gets it changed in partial aggregate plan, as set_upper_references starts from the top plan and goes further. Because of this reason, the targetlist contains for the node below finalize aggregate are still points to original type only. To fix this problem, I tried updating the targetlist aggref->aggtype with transtype during aggregate plan itself, that leads to a problem in setting upper plan references. This is because, while fixing the aggregate reference of upper plans after partial aggregate, the aggref at upper plan nodes doesn't match with aggref that is coming from partial aggregate node because of aggtype difference in _equalAggref function. COMPARE_SCALAR_FIELD(aggtype); Temporarily i corrected it compare it against aggtranstype and aggserialtype also then it works fine. I don't see that change as correct approach. Do you have any better idea to solve this problem? Regards, Hari Babu Fujitsu Australia -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers