and...@tao11.riddles.org.uk writes: > select (select array_agg(random()*i) from (values (1),(2)) v(a)) from > generate_series(1,3) i;
> Expected output is three rows each with a 2-element array; actual output > is: > ERROR: more than one row returned by a subquery used as an expression > Looking at the explain, the aggregate is being pulled out of the subplan and > evaluated at the top query level. (This came up while doing some random data > generation, I've simplified it a bit.) This is not a bug, it's the behavior required by SQL standard. An aggregate belongs to the lowest query level supplying a variable to it (except of course when it contains no variable at all). So it's effectively an outer-reference constant for that inner select. regards, tom lane -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs