Visibility of temporary database objects

Started by Allan Kamauover 16 years ago2 messagesgeneral
Jump to latest
#1Allan Kamau
kamauallan@gmail.com

Hi all,
I have a simple question: Are the temporary database objects created
within a pgplsql function visible/available outside the function (or
implicit transaction) in any way. I am dropping and creating temporary
database objects within a function and I am calling this function in
from a threaded application which could use the same connection in
more than one thread(is this possible/or even safe). I would like to
avoid the possibility that the created temporary objects get dropped
outside the current thread that created them.

Allan.

#2Craig Ringer
craig@2ndquadrant.com
In reply to: Allan Kamau (#1)
Re: Visibility of temporary database objects

On 14/12/2009 4:35 PM, Allan Kamau wrote:

and I am calling this function in
from a threaded application which could use the same connection in
more than one thread(is this possible/or even safe).

No!

Admittedly it depends on the client interface/driver, but at least for
direct psql, PgODBC and PgJDBC it is _not_ safe to use a single
PostgreSQL connection from more than one thread. Use multiple
connections, or properly control access to the connection so that only
one thread will be doing work on it at a time. Even then, you can't have
multiple queries in flight on a single connection.

--
Craig Ringer