Re: Convert pltcl from strings to objects
От | Jim Nasby |
---|---|
Тема | Re: Convert pltcl from strings to objects |
Дата | |
Msg-id | 56D20238.1060909@BlueTreble.com обсуждение исходный текст |
Ответ на | Re: Convert pltcl from strings to objects (Alvaro Herrera <alvherre@2ndquadrant.com>) |
Ответы |
Re: Convert pltcl from strings to objects
|
Список | pgsql-hackers |
On 2/25/16 9:30 AM, Alvaro Herrera wrote: > 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. Hadn't thought about cursors; I suspect you're right about that. I wounder if other PLs would handle that correctly. I'm also not sure how the reference would get decremented... via ResourceOwner somehow? -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com
В списке pgsql-hackers по дате отправления: