glenn <vmstech@tpg.com.au> writes:
> -- Here is my experimental function
> create or replace function zz_dump() returns setof zz as '
> declare
> thiscur refcursor;
> zz_tmp zz%rowtype ;
> begin
> open thiscur for select a, b from zz;
> fetch thiscur into zz_tmp ;
> return zz_tmp;
> end;' language 'plpgsql';
Try 7.3 --- plpgsql functions don't support returning sets in
earlier releases. (You can't do it quite that way in 7.3,
either; you need RETURN NEXT. See the documentation.)
> --Heres the result, which comes after 5 min of hdd light thrashing,
> capslock light doesn't respond and gui completely freezes.
On my machine, 7.2 fails with
ERROR: Memory exhausted in AllocSetContextCreate(8192)
after about 20 seconds. There's no obvious loss of responsiveness of
the rest of the machine meanwhile. I suspect your machine is poorly
configured --- better compare the max-memory-per-process kernel setting
with the actual amount of physical RAM and swap space. You've evidently
got it set up in a way that allows a runaway process to drive it into
swap hell.
regards, tom lane