From: | "Jean-Max Reymond" <jmreymond(at)ckr-solutions(dot)com> |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #1739: memory leak in pl/perl with spi_exec_query |
Date: | 2005-06-29 14:22:22 |
Message-ID: | 20050629142222.526D2F0AC6@svr2.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged online:
Bug reference: 1739
Logged by: Jean-Max Reymond
Email address: jmreymond(at)ckr-solutions(dot)com
PostgreSQL version: 8.0.3
Operating system: Linux Ubuntu
Description: memory leak in pl/perl with spi_exec_query
Details:
whith this code 1, postmaster is growing and growing and eat a lot of
memory
CREATE FUNCTION jmax() RETURNS integer
AS $_$use strict;
for (my $i=0; $i<10000000;$i++) {
spi_exec_query("select 'foo'");
}
my $j=1;$_$
LANGUAGE plperlu SECURITY DEFINER
With code 2, we can see that perl does correctly the job to unreference
unused memory
CREATE FUNCTION jmax() RETURNS integer
AS $_$use strict;
for (my $i=0; $i<10000000;$i++) {
my $ch = "0123456789"x100000;
}
my $j=1;$_$
LANGUAGE plperlu SECURITY DEFINER
With code 3, we try to help pl/perl to clean memory allocation
CREATE FUNCTION jmax() RETURNS integer
AS $_$use strict;
for (my $i=0; $i<10000000;$i++) {
my ch=spi_exec_query("select 'foo'");
}
my $j=1;$_$
LANGUAGE plperlu SECURITY DEFINER
So, spi_exec_query allocates memory but this memory is never released until
the end of the stored procedure.
For my application, the need is to call millions of spy_exec and we use 1.1
Gb of not necessary memory.
A workaround could be to provide a routine to free the memory allocated by
spi_exec_query
From | Date | Subject | |
---|---|---|---|
Next Message | Daniel Cristian Cruz | 2005-06-29 15:01:26 | Deferred Referential Constraint: Changing Referenced Key |
Previous Message | Michael Fuhr | 2005-06-29 13:20:47 | Re: BUG #1735: row number -1 is out of range 0..-1 error |