On Sun, 2015-02-22 at 03:14 +0100, Tomas Vondra wrote: > >> SELECT COUNT(x) FROM ( > >> SELECT a, array_agg(i) AS x FRM test GROUP BY 1 > >> ) foo; > > > > That's actually a bogus test -- array_agg is never executed. > > Really? How could that happen when the result of array_agg() is passed > to the COUNT()? Also, how could that allocate huge amounts of memory and > get killed by OOM, which happens easily with this query?
Oops, I misread that as "COUNT(*)". Count(x) will force array_agg() to be executed.