BUG #1739: memory leak in pl/perl with spi_exec_query

Поиск
Список
Период
Сортировка
От Jean-Max Reymond
Тема BUG #1739: memory leak in pl/perl with spi_exec_query
Дата
Msg-id 20050629142222.526D2F0AC6@svr2.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #1739: memory leak in pl/perl with spi_exec_query  (Jean-Max Reymond <jmreymond@ckr-solutions.com>)
Re: BUG #1739: memory leak in pl/perl with spi_exec_query  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      1739
Logged by:          Jean-Max Reymond
Email address:      jmreymond@ckr-solutions.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

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Michael Fuhr
Дата:
Сообщение: Re: BUG #1735: row number -1 is out of range 0..-1 error
Следующее
От: Karsten Desler
Дата:
Сообщение: Re: BUG #1736: endless loop in PQconnectdb