Lewis Kapell <lkapell@setonhome.org> wrote:
> My company is using Postgres 8.3.8. We have some tables with
> bytea columns that store file data such as the contents of PDF or
> RTF files.
Yeah, we do a lot of that, too.
> The escape_string_warning parameter is on, and inserting this kind
> of data causes the backslash warning to be generated, since the
> backslash character appears in the raw data of these types of
> files.
We turn that off.
> I have updated much of our code to use the E'' syntax in order to
> suppress these messages.
If you do that, you'd better be doing something to make sure you
have cured the problem the messages warned of; otherwise you're
going to have corrupted documents. Are you using prepared
statements and setting the values through those (recommended) or
escaping the backslashes, etc. yourself?
> I am trying to figure out what the repercussions would be if I
> were to turn on the standard_conforming_strings parameter.
With that on, absolutely all characters are taken as part of the
literal except for apostrophes. That makes it a bit easier to do
the escaping, and could result in a slight reduction in statement
size.
> None of our code actually uses a backslash to escape a double-
> quote, but I don't know how this would affect the bytea values
> which I discussed above. How are backslashes affected if they are
> actually part of the raw data?
If you're just throwing them inside a E'xxx' literal that you build
yourself, it sounds like you've currently got a problem. If you are
using parameters on prepared statements, it shouldn't matter much.
-Kevin