Re: BUG #13736: pg_dump should use E'' quotes - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #13736: pg_dump should use E'' quotes
Date
Msg-id 3219.1445895186@sss.pgh.pa.us
Whole thread Raw
In response to BUG #13736: pg_dump should use E'' quotes  (felipe@felipegasper.com)
Responses Re: BUG #13736: pg_dump should use E'' quotes  ("David G. Johnston" <david.g.johnston@gmail.com>)
Re: BUG #13736: pg_dump should use E'' quotes  (Peter Eisentraut <peter_e@gmx.net>)
List pgsql-bugs
felipe@felipegasper.com writes:
> When dumping a DB whose name has a backslash in it, I get a warning like:

> ------
> pg_dump: WARNING:  nonstandard use of \\ in a string literal
> LINE 1: ...) AS description FROM pg_database WHERE datname = 'i have / ...
>                                                              ^
> HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.
> ------

It took me some time to reproduce that, but I eventually realized that
you must have standard_conforming_strings turned off in your database
settings.  This has been a deprecated setting since 9.1.

> pg_dump should be using PostgreSQL’s own recommended syntax, should it not?
> Is there anything that would break from making this change?

Yes.  For one thing, there would immediately be zero chance of loading
view definitions produced by pg_dump into any other DBMS, or even into old
versions of PG, without painstaking hand-editing to remove all the E's
(and then also fix the string contents, which would likely be actively
wrong without E).

We could avoid the problem by having pg_dump force
standard_conforming_strings to ON rather than adopting the prevailing
database setting, but again that would complicate back-porting its output
to older PG versions.  It might also annoy people who are accustomed to
seeing old-style strings in their dumps; presumably people who are still
using standard_conforming_strings = OFF are a bit set in their ways.

Basically there are a number of tradeoffs here and avoiding a purely
cosmetic warning is the consideration that loses out.

At some point we might decide that backward compatibility to old PG
versions is no longer of interest; but what we'd probably do then is have
pg_dump force standard_conforming_strings to ON, not adopt E'' syntax.

            regards, tom lane

pgsql-bugs by date:

Previous
From: felipe@felipegasper.com
Date:
Subject: BUG #13736: pg_dump should use E'' quotes
Next
From: "David G. Johnston"
Date:
Subject: Re: BUG #13736: pg_dump should use E'' quotes