Thread: pl/perl object destruction (or lack thereof) at session end

pl/perl object destruction (or lack thereof) at session end

From
Toby Corkindale
Date:
Hi,
Looking at this:
http://www.postgresql.org/docs/9.0/interactive/plperl-under-the-hood.html

Specifically, the "known limitations" part, I see it says:
   When a session ends normally, not due to a fatal error,
   any END blocks that have been defined are executed.
   Currently no other actions are performed. Specifically,
   file handles are not automatically flushed and objects are
   not automatically destroyed."

So I wondered what implications that has for stored procedures that
create objects? Will the following code cause a memory leak if called
many times, due to the $big object never being destroyed?


CREATE FUNCTION foobar() RETURNS trigger AS $$
   use Big::Module;
   my $big = Big::Module->new;
$$ LANGUAGE plperlu


Thanks,
Toby

Re: pl/perl object destruction (or lack thereof) at session end

From
Toby Corkindale
Date:
On 09/12/10 13:00, Toby Corkindale wrote:
> Hi,
> Looking at this:
> http://www.postgresql.org/docs/9.0/interactive/plperl-under-the-hood.html
>
> Specifically, the "known limitations" part, I see it says:
> When a session ends normally, not due to a fatal error,
> any END blocks that have been defined are executed.
> Currently no other actions are performed. Specifically,
> file handles are not automatically flushed and objects are
> not automatically destroyed."
>
> So I wondered what implications that has for stored procedures that
> create objects? Will the following code cause a memory leak if called
> many times, due to the $big object never being destroyed?
>
>
> CREATE FUNCTION foobar() RETURNS trigger AS $$
> use Big::Module;
> my $big = Big::Module->new;
> $$ LANGUAGE plperlu


Perhaps I should test first and email later..

I couldn't see any memory leaking at all in some quick experimentation
(on pg 8.4.5).