Re: race condition in pgplsql call handler? - Mailing list pgsql-hackers

From Tom Lane
Subject Re: race condition in pgplsql call handler?
Date
Msg-id 17475.1178888659@sss.pgh.pa.us
Whole thread Raw
In response to race condition in pgplsql call handler?  (Zdenek Kotala <Zdenek.Kotala@Sun.COM>)
Responses Re: race condition in pgplsql call handler?  (Zdenek Kotala <Zdenek.Kotala@Sun.COM>)
List pgsql-hackers
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


pgsql-hackers by date:

Previous
From: Zeugswetter Andreas ADI SD
Date:
Subject: Re: Seq scans roadmap
Next
From: Zdenek Kotala
Date:
Subject: Re: race condition in pgplsql call handler?