On 27 July 2015 at 18:15, Haribabu Kommi <kommi.harib...@gmail.com> wrote:

> On Thu, Jul 9, 2015 at 7:44 PM, David Rowley
> <david.row...@2ndquadrant.com> wrote:
> > On 15 June 2015 at 12:05, David Rowley <david.row...@2ndquadrant.com>
> wrote:
> >>
> >>
> >> This basically allows an aggregate's state to be shared between other
> >> aggregate functions when both aggregate's transition functions (and a
> few
> >> other things) match
> >> There's quite a number of aggregates in our standard set which will
> >> benefit from this optimisation.
> >>
> >
> > After compiling the original patch with another compiler, I noticed a
> couple
> > of warnings.
> >
> > The attached fixes these.
>
> I did some performance tests on the patch. This patch shown good
> improvement for same column aggregates. With int or bigint datatype
> columns,
> this patch doesn't show any visible performance difference. But with
> numeric
> datatype it shows good improvement.
>

Thanks for testing this.

You should only see an improvement on aggregates listed here:

select aggfnoid::oid, aggfnoid || '(' || typname ||
')',aggtransfn,agginitval
from pg_aggregate ag
inner join pg_proc pr on aggfnoid = pr.oid
inner join pg_type tp on pr.proargtypes[0] = tp.oid
where ag.aggtransfn in (select aggtransfn
from pg_aggregate
group by aggtransfn
having count(*)>1)
  and ag.agginitval is null
order by ag.aggtransfn;

Regards

David Rowley

--
 David Rowley                   http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/>
 PostgreSQL Development, 24x7 Support, Training & Services

Reply via email to