On Mon, Jan 9, 2017 at 5:56 PM, Antonin Houska <a...@cybertec.at> wrote:

## Advertising

> Attached is a draft patch that lets partial aggregation happen at base
> relation level. If the relations contain relatively small number of groups,
> the number of input rows of the aggregation at the query level can be
> reduced
> this way. Also, if append relation and postgres_fdw planning is enhanced
> accordingly, patch like this can let us aggregate individual tables on
> remote
> servers (e.g. shard nodes) and thus reduce the amount of rows subject to
> the
> final aggregation.
>
> For example, consider query
>
> SELECT b.j, sum(a.x) FROM a, b WHERE a.i = b.j GROUP BY b.j;
>
> and tables "a"
>
> i | x
> -------
> 1 | 3
> 1 | 4
>
> and "b"
>
> j
> ---
> 1
> 1
>
The example should have j= 1,2 , right?
and "b"
j
---
1
2
> The base relations grouped look like
>
> i | sum(a.x)| count(*)
> -----------------------
> 1 | 7 | 2
>
Otherwise, the sum and count would be 14 and 4.
>
> and
>
> j | count(*)
> -------------
> 1 | 2
>
>
>
>
Pantelis