pl/perl interpreter instance(s) - how long does it persist?
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
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
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