Re: bytea insert difference between 8.3 and 9.x - Mailing list pgsql-general

From Merlin Moncure
Subject Re: bytea insert difference between 8.3 and 9.x
Date
Msg-id CAHyXU0w+rSUZFxmnrLyANMZqqm7UhLf4L0j85BV0r96HX3BCVg@mail.gmail.com
Whole thread Raw
In response to bytea insert difference between 8.3 and 9.x  (Gregg Jaskiewicz <gryzman@gmail.com>)
List pgsql-general
On Mon, Sep 26, 2011 at 5:51 AM, Gregg Jaskiewicz <gryzman@gmail.com> wrote:
> So consider this code C++, using libpqxx:
>
> string = "INSERT INTO foo(x) VALUES( E'" + T.esc_raw(data) + "' )";
>
> foo(x) is bytea , before you ask.
>
> On 8.3, it works fine.
> On 9.x:
>
> ERROR:  invalid byte sequence for encoding "UTF8": 0x00 (if \000 is in
> the string).
>
> Now, I can take out the E'' and it will work fine on 9.X, but will
> whine about it on 8.3. (HINT:  Use the escape string syntax for
> escapes, e.g., E'\r\n'.)
>
>
> I need one piece of code that will work on both, what should I do in
> this case ?

urk -- I have to be honest -- that's a pretty lousy way to send bytea.
Personally, I'd encode the string as hex and send it like this:

"INSERT INTO foo(x) VALUES( decode('" + hex_string + "'))";

libpqxx doesn't have the ability to parameterize queries?

merlin

pgsql-general by date:

Previous
From: "Edson Carlos Ericksson Richter"
Date:
Subject: RES: Does postgresql 9.0.4 use index on PREFIX%SUFFIX queries?
Next
From: Merlin Moncure
Date:
Subject: Re: bytea insert difference between 8.3 and 9.x