Re: Possible bug in ECPGlib thread-safety (Postgres 7.4)...
От | Lee Kindness |
---|---|
Тема | Re: Possible bug in ECPGlib thread-safety (Postgres 7.4)... |
Дата | |
Msg-id | 16336.19895.354907.412172@kelvin.csl.co.uk обсуждение исходный текст |
Ответ на | Re: Possible bug in ECPGlib thread-safety (Postgres 7.4)... (Philip Yarra <philip@utiba.com>) |
Ответы |
Re: Possible bug in ECPGlib thread-safety (Postgres 7.4)...
|
Список | pgsql-interfaces |
Philip Yarra writes:> Unlike the libpq C interface, there is no "connection" variable maintained in > ECPG... instead, ECPGinternally maintains a global list of open connections. > When a client application issues an EXEC SQL, a connectionis retrieved from > the list, and the SQL statement is executed on that connection. The first > connection in thelist is the "default" connection, so if you don't specify a > named connection using "AT conn_name" ECPG grabs the firstconnection in the > list.> > I'm pretty sure what happens when you issue EXEC SQL SET CONNECTION is that it > sets thethe default connection, so each of your threads would simply have > shuffled the default connection. Then when each threadattempts to EXEC SQL > they grab the same connection... whichever connection was made the default by > the last threadto issue EXEC SQL SET CONNECTION.> > I believe this behaviour is consistent with other DBMS implementations of > embeddedSQL, but I'm shooting from the hip. Not sure on the consistency, that's one thing ESQL/C rarely is! Anyway you're right regarding the SET CONNECTION behaviour. However it'd be fairly simple to change things such that each thread keeps track of its "current" connection (set by connecting and SET CONNECTION) by using thread local storage. It'd be a definite improvement over having to specify the connection on each call! I'll probably do this at some point, but since i'm off to India on Monday for the rest of December it'll not be till the New Year at the earliest! L.
В списке pgsql-interfaces по дате отправления: