Re: ecpg threading vs win32
От | Michael Meskes |
---|---|
Тема | Re: ecpg threading vs win32 |
Дата | |
Msg-id | 20070329091802.GA15578@feivel.credativ.de обсуждение исходный текст |
Ответ на | Re: ecpg threading vs win32 (Magnus Hagander <magnus@hagander.net>) |
Ответы |
Re: ecpg threading vs win32
|
Список | pgsql-patches |
On Mon, Mar 19, 2007 at 09:48:19AM +0100, Magnus Hagander wrote: > > Q2. Do we need to use PQescapeStringConn() instead of PQescapeString()? > > PQescapeString() is used to escape literals, and the documentation says > > PQescapeStringConn() should be used in multi-threaded client programs. > > http://momjian.us/main/writings/pgsql/sgml/libpq-exec.html#LIBPQ-EXEC-ESCAPE-STRING > > | PQescapeString can be used safely in single-threaded client programs > > | that work with only one PostgreSQL connection at a time > > Seems so, but that's unrelated to this patch ;-) I'll leave the final > comment on that up to Michael. Looking at the source code it seems to me that the connection argument is only used once in PQescapeStringInternal which both functions call. Here's the snippet: if (conn) printfPQExpBuffer(&conn->errorMessage, libpq_gettext("incomplete multibyte character\n")); So this essantially is only to get an error message into the connection structure. However, having an empty connection makes PQescapeStringConn return an error and an empty string which I consider a problem. I have to check that in detail but we may run into a usage of PQescapeString without an open connection which then would fail. Michael -- Michael Meskes Email: Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org) ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
В списке pgsql-patches по дате отправления: