I think it was on this list - someone posted a message about SETOF being slower. Tom replied saying it was because it needed to create an on-disk tuplestore.
I was just looking for some clarification - a SETOF function will always write the reslting tuples to disk (Not buffering in say a sort_mem sized buffer)?
I think at least part of what you're seeing is normal function call overhead. As far as tuplestores writing to disk, here's what the source says:
In src/backend/utils/sort/tuplestore.c 8<--------------------------------------- * maxKBytes: how much data to store in memory (any data beyond this * amount is paged to disk). When in doubt, use work_mem. */ Tuplestorestate * tuplestore_begin_heap(bool randomAccess, bool interXact, int maxKBytes) 8<---------------------------------------
In src/backend/executor/execQual.c:ExecMakeTableFunctionResult(): 8<--------------------------------------- tupstore = tuplestore_begin_heap(true, false, work_mem); 8<---------------------------------------
So up to work_mem (sort_mem in 7.4 and earlier) should be stored in memory.
Joe
---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]