View Single Post

   
  #2 (permalink)  
Old 04-12-2008, 09:39 AM
Tom Lane
 
Posts: n/a
Default Re: race condition in pgplsql call handler?

Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:
> I'm looking into PG/PLSql code and following code in
> plpgsql_call_handler looks strange:


> /* Find or compile the function */
> func = plpgsql_compile(fcinfo, false);


> /* Mark the function as busy, so it can't be deleted from under
> us */
> func->use_count++;



> I don't have deep knowledge about this part of code. But what happen if
> in parallel execution "func" will be deleted between these two lines?


This is not a race condition because the backend is single-threaded.

(Hint: what it actually means by "function" is "the plpgsql function
cache entry I just found or built".)

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Reply With Quote