Visibility of temporary database objects
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.
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