On Mon, Jan 9, 2017 at 5:56 PM, Antonin Houska <a...@cybertec.at> wrote:
> 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