Leif Jensen wrote: > > This seems to be working most of the time, but looking at the generated C > code from the ecpg compiler and the associated library functions, we are > not sure whether we should put mutex locks around the 'select' part to > avoid several threads are using "the same" execdesc at the same time. > > We have made sure that each thread uses their own and only their own > database connection, but are unsure whether the ecpg library functions is > able to handle multiple use of the statical name "execdesc" ? You are most probably trashing memory by using the same descriptor name in multiple threads. However, given that you have already spent the effort to have the connections 'thread-dedicated' I think that rather than creating a critical path through an area that is intentionally supposed to be mutli- hreaded, I'd be inclined to use the connection name (or some derivation of it) as the name of the descriptor. I haven't used descriptors in ecpg so I don't know if the syntax works, but you could try: exec sql char *dname = _thisDbConn; // Or some derivation EXEC SQL AT :_thisDbConn ALLOCATE DESCRIPTOR :dname; ... EXEC SQL AT :_thisDbConn FETCH IN execcurs INTO SQL DESCRIPTOR :dname; ... EXEC SQL DEALLOCATE DESCRIPTOR :dname; Just a thought. Bosco. -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general