Re: ecpg threading vs win32 - Mailing list pgsql-patches

From Michael Meskes
Subject Re: ecpg threading vs win32
Date
Msg-id 20070329091802.GA15578@feivel.credativ.de
Whole thread Raw
In response to Re: ecpg threading vs win32  (Magnus Hagander <magnus@hagander.net>)
Responses Re: ecpg threading vs win32
List 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 by date:

Previous
From: Koichi Suzuki
Date:
Subject: Re: [HACKERS] Full page writes improvement, code update
Next
From: "Simon Riggs"
Date:
Subject: Re: [HACKERS] Full page writes improvement, code update