Memory exhausted - Mailing list pgsql-sql

From David Richter
Subject Memory exhausted
Date
Msg-id 3B24B8CC.15C55147@DKFZ-heidelberg.de
Whole thread Raw
Responses Re: Memory exhausted
List pgsql-sql
Hello!

I used a self written funtion in plpgsql with a database  of 2 Gigabyte
size. My server has 384 Megabytes of RAM.

So I got this error by calling the following function:

psql:restructure.sql:139: FATAL 1:  Memory exhausted in AllocSetAlloc()
pqReadData() -- backend closed the channel unexpectedly.
        This probably means the backend terminated abnormally
        before or while processing the request.
psql:restructure.sql:139: connection to server was lost

In the memory usage program Its shown that the function needs all the
memory.


The function fetches all XXX rows of a table
and writes a value to another table

CREATE FUNCTION series_image () RETURNS integer AS '
        DECLARE

                psr_rec record;
                i integer := 0;

BEGIN
        FOR psr_rec IN SELECT * FROM relseries_image000 LOOP
                UPDATE image
                        SET seriesoid  = psr_rec.parentoid
                        WHERE chilioid = psr_rec.childoid;
                i := i + 1;
        END LOOP;
        IF NOT FOUND THEN RETURN -1;
                ELSE RETURN i;
        END IF;
END;

' LANGUAGE 'plpgsql';

What could I optimize in this function above?
I tried the Select statement in the psql command and it has taken 20
minutes. I estimate that there are more than 400000 rows in the table.
Then it breakes , the announcment appears: malloc: Resource temporarily
unavailable
and psql is crashed.

Should I change the postmaster parameters?
actually they are :
./postmaster -i -S -D/usr/local/pgsql/data -B 256 -o -e -o -F

What can I do?
Thanks in advance for any advice

David
Attachment

pgsql-sql by date:

Previous
From: "Hartwig Jens"
Date:
Subject: RE: GRANT EXECUTE
Next
From: Hans-Jürgen Schönig
Date:
Subject: Re: select distinct too slow