"Alban Hertroys" <[EMAIL PROTECTED]> writes: > THE 'active' query (not AN) is the query that's currently being executed on a > connection. There can be multiple connections with an active query each. You > can't execute multiple queries in parallel on the same connection. You can > execute them in sequence of course. > > What people are trying to tell you is that you apparently have multiple > threads that perform queries simultaneously on the same connection, and > that's > not possible.
FWIW it's not just queries that are a problem. You pretty much can't call *any* libpq function on a connection while another thread is calling any other libpq call on the same connection. It is however safe (assuming you built postgres with the thread-safe option) to call two libpq calls from different threads on *different* connections. And it's always safe to call two libpq calls from different threads on the same connection as long as you ensure that one is finished before the second one begins. In either case the normal way to guarantee either property is to put a mutex around either each connection or all of libpq. You can actually have more than one query simultaneously active in the same connection using named portals. But if you called PQgetResult() on one you have to ensure all threads wait until it returns before issuing PQgetResult() (or any other libpq function) on the other portal. -- Gregory Stark EnterpriseDB http://www.enterprisedb.com Get trained by Bruce Momjian - ask me about EnterpriseDB's PostgreSQL training! -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general