pl/perl interpreter instance(s) - how long does it persist?

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

Hi,
Apologies in advance if this has been covered before, but I've searched
extensively without finding anything so far.

I would like to know how long the pl/perl interpreter instances persist?

I ask because I'm doing some work where we have PL/Perlu code that loads
some Perl modules in trigger code. If I change the underlying modules
that have been loaded, then when can I expect the new version to take
effect?

Initial testing seems to give me contrary results.
In some cases, creating a new DB then loading the same module in a new
stored procedure will get the old version.
But in some other cases, the new DB will pick up the new version of the
module.

I wondered if this might be due to the backend having a number of perl
interpreters in different processes, and I'm getting a fresh process
sometimes, and sometimes I'm getting an old one that's already loaded
the modules.

So.. I'm a bit confused and hoped I could come and ask for advice.

Thanks,
Toby

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Toby Corkindale (#1)
Re: pl/perl interpreter instance(s) - how long does it persist?

Toby Corkindale <toby.corkindale@strategicdata.com.au> writes:

I would like to know how long the pl/perl interpreter instances persist?

Till end of session.

Initial testing seems to give me contrary results.
In some cases, creating a new DB then loading the same module in a new
stored procedure will get the old version.
But in some other cases, the new DB will pick up the new version of the
module.

"Creating a DB" doesn't affect the current session ... where in there
did you reconnect?

regards, tom lane

#3Toby Corkindale
toby.corkindale@strategicdata.com.au
In reply to: Tom Lane (#2)
Re: pl/perl interpreter instance(s) - how long does it persist?

On 09/12/10 13:37, Tom Lane wrote:

Toby Corkindale<toby.corkindale@strategicdata.com.au> writes:

I would like to know how long the pl/perl interpreter instances persist?

Till end of session.

Where session = connection (whether from psql, DBI, etc), yes?

Initial testing seems to give me contrary results.
In some cases, creating a new DB then loading the same module in a new
stored procedure will get the old version.
But in some other cases, the new DB will pick up the new version of the
module.

"Creating a DB" doesn't affect the current session ... where in there
did you reconnect?

To be honest, I'm not 100% sure I was reconnecting. I think I had it in
my head that the perl instance would be related to role or database, so
was creating new databases with new roles and testing code straight away.

I thought I tried reconnecting, since that's obvious too, and in my
limited local testing that seems to work; in staging/production environs
its trickier to bounce the apps, so maybe I haven't been restarting them
when I thought I was.

Thanks for the advice; it sounds like I have been missing the obvious
here, so will head off and do some more checking.

Thanks for the quick response!
Toby