On Mon, Mar 5, 2012 at 6:41 PM, Peter van Hardenberg <pvh@xxxxxx> wrote: > On Mon, Mar 5, 2012 at 3:15 PM, Merlin Moncure <mmoncure@xxxxxxxxx> wrote: >> I've complained many times that >> select (f()).*; >> >> will execute f() once for each returned field of f() since the server >> essentially expands that into: >> >> select f().a, f().b; >> > > oh, this is why we expand rows inside a WITH statement. > > it should probably be fixed, but you should find something like > > WITH fn AS SELECT f(), > SELECT (fn).a, (fn).b > > will make your life better sure, but WITH is an optimization fence. I use a lot of views, and if you wrap your view with WITH, then your quals won't get pushed through. ditto if you use the 'OFFSET 0' hack to keep the subquery from being flattened out. merlin -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance