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

Started by Toby Corkindaleover 15 years ago2 messagesgeneral
Jump to latest
#1Toby Corkindale
toby.corkindale@strategicdata.com.au

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

#2Toby Corkindale
toby.corkindale@strategicdata.com.au
In reply to: Toby Corkindale (#1)
Re: pl/perl object destruction (or lack thereof) at session end

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).