Re: Convert pltcl from strings to objects - Mailing list pgsql-hackers

From Alvaro Herrera
Subject Re: Convert pltcl from strings to objects
Date
Msg-id 20160225153032.GA6509@alvherre.pgsql
Whole thread Raw
In response to Re: Convert pltcl from strings to objects  (Jim Nasby <Jim.Nasby@BlueTreble.com>)
Responses Re: Convert pltcl from strings to objects
List pgsql-hackers
Jim Nasby wrote:

> >Here we have another case. prodesc is a global thing. And it is shared
> >between different operations. Problem was that there is no partcular
> >owner, and we have to wait when last operation which deals with it
> >would finish. It looks like perfect job for reference counting.
> 
> I've just tried to wrap my head around what's going on with prodesc and
> failed... specifically, I don't understand this claim in the comment:
> 
> * Add the proc description block to the hashtable.  Note we do not
> * attempt to free any previously existing prodesc block.  !!This is
> * annoying, but necessary since there could be active calls using
> * the old prodesc.!!
> 
> What else could be referencing it? I realize it's stored in pltcl_proc_htab,
> but AFAICT that's backend-local. So I don't understand what else could be
> referencing it.

Try to open a cursor that uses the function, fetch a few tuples from it;
then change the function and fetch more rows from the cursor.  I suppose
the open cursor could contain a reference to the function's prodesc.

Refcounting the prodesc would let it live until the cursor's closed,
then free it.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



pgsql-hackers by date:

Previous
From: David Steele
Date:
Subject: Re: [PATCH v5] GSSAPI encryption support
Next
From: Jean-Pierre Pelletier
Date:
Subject: Re: Declarative partitioning