Re: PQescapeByteaConn - returns wrong string for PG9.1 Beta3
От | Florian Pflug |
---|---|
Тема | Re: PQescapeByteaConn - returns wrong string for PG9.1 Beta3 |
Дата | |
Msg-id | F3FDB41A-4352-4367-B905-0BB4546CB7E1@phlo.org обсуждение исходный текст |
Ответ на | Re: PQescapeByteaConn - returns wrong string for PG9.1 Beta3 (Alvaro Herrera <alvherre@commandprompt.com>) |
Список | pgsql-hackers |
On Jul27, 2011, at 20:05 , Alvaro Herrera wrote: > Excerpts from Petro Meier's message of mié jul 27 02:51:22 -0400 2011: > >> If I use PQescapeByteaConn() for a conenction to a PG9.1 Beta3 server, >> this function returns (e.g.) "\xea2abd8ef31...(and so on.)...". >> >> Here the problem: there should be a second backslash in the prefix. >> The SQL Statement which uses this string (INSERT statement in my case) >> returns with an error ("Invalid byte sequence..."). If I add the second >> backslash manually everything works fine. > > You're just being bitten by the fact that the > standard_conforming_strings setting changed its default from false to > true. If you want the old behavior, you can just flip the switch, but > the recommended action is to change your expectations. You can use E'' > if you want backslashes to continue working without changing the switch. Hm, but PQescapeByteaConn() shouldn't produce a literal that the server later rejects, no matter what standard_conforming_strings is set to. It looks like PQescapeByteaConn() does the right thing here, though - it doesn't escape the backslash in it's result when dealing with 9.1, presumably because that server has wstandard_conforming_strings set to on. But why then is the server rejecting the result? The only way I can see that make that happend would be to prefix the string returned by PQescapeByteaConn() with 'E'. @OP: Could you post the code fragment that causes the error? best regards, Florian Pflug
В списке pgsql-hackers по дате отправления: