Re: Implementation of GROUPING SETS (T431: Extended grouping capabilities) - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: Implementation of GROUPING SETS (T431: Extended grouping capabilities)
Date
Msg-id 162867790905112321q1dabd234scc428f8a4a589d08@mail.gmail.com
Whole thread Raw
In response to Re: Implementation of GROUPING SETS (T431: Extended grouping capabilities)  (Hitoshi Harada <umi.tanuki@gmail.com>)
Responses Re: Implementation of GROUPING SETS (T431: Extended grouping capabilities)  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
2009/5/12 Hitoshi Harada <umi.tanuki@gmail.com>:
> 2009/5/11 Pavel Stehule <pavel.stehule@gmail.com>:
>> I am thinking so Grouping Sets based on CTE should be more commitable
>> code. It doesn't mean so your ideas are wrong, but these
>> optimalization should to work on CTE too.
>>
>> select * from table group by rollup(a,b,c)
>>
>> have to have generate same plan as
>>
>> with q as (select * from table)
>>  select * from q group by a,b,c
>>  union all
>>  select * from q group by a,b
>>  union all
>>  select * from q group by a
>>  union all
>>  select * from q;
>>
>> and CTE is more general then Grouping Sets, so it is better do
>> optimalization over CTE than Grouping Sets.
>
> If you need to buffer tuples from the outer plan and to rescan it
> multiple times, tuplestore seems more appropriate solution than using
> CTE node, from semantic point of view. During CTE and window functions
> development, tuplestore now has that kind of capability and CTE node
> is only a wrapper of tuplestore.
>
> Moreover, I guess you don't even need to buffer tuples to aggregate by
> different keys. What you have to do is only to prepare more than one
> hash tables (, or set up sort order if the plan detects hash table is
> too large to fit in the memory), and one time seq scan will do. The
> trans values are only to be stored in the memory, not the outer plan's
> results. It will win greately in performance.

it was my first solution. But I would to prepare one non hash method.
But now I thinking about some special executor node, that fill all
necessary hash parallel. It's special variant of hash agreggate.

regards
Pavel Stehule

>
>
> Regards,
>
> --
> Hitoshi Harada
>


pgsql-hackers by date:

Previous
From: Khee Chin
Date:
Subject: Re: Show method of index
Next
From: Heikki Linnakangas
Date:
Subject: Re: New trigger option of pg_standby