Re: pg_dump and backslash escapes - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: pg_dump and backslash escapes
Date
Msg-id 200605140227.k4E2RBU16874@candle.pha.pa.us
Whole thread Raw
In response to Re: pg_dump and backslash escapes  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: pg_dump and backslash escapes
List pgsql-hackers
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> >     -- Set escape environment for possible loading into version >= 8.2.
> >     -- If variables are not supported, suppress error messages.
> >     SET client_min_messages = panic;
> >     SET log_min_messages = log;
> >     SET log_min_error_statement = panic;
> >     SET escape_string_warning = off;
> >     SET standard_conforming_strings = off;
> >     RESET log_min_error_statement;
> >     RESET log_min_messages;
> >     RESET client_min_messages;
> 
> Thrashing about with the message level settings like that is useless.
> Either the command will work or it won't.  And we've not bothered to
> try to suppress warnings for any of the other SET commands pg_dump
> issues.  AFAICS all you've accomplished here is to make the dump

Well, the issue with back branches is there is no way to know if the
dump is going to be loaded into the same back-branch, or a newer one,
so I figured we would have to suppress any SET because in the existing
branch, it would fail.

We have discussed the idea of coding the PostgreSQL version number in
the dump somehow so the backend could adjust its behavior based on that
version.  For example, you do SET pg_dump_version = 7.3 and sql standard
strings and backslash warnings are turned off.  That could be
backpatched, I guess.

> dependent on even more GUC variables than it needs to be (consider
> what will happen if we remove/redefine the log level variables in
> future).

True.

> I don't particularly like the way that pg_dump is behaving at the
> moment, ie cluttering the output with E'' strings.  That makes it

Well, it should only do that if there is a backslash in the string.  I
tested a CHECK string and that is how it behaved.

> unnecessarily hard to use the output to load into other databases
> or older PG versions.  What I'd like to do is SET

True.

> standard_conforming_strings appropriately (this probably has to be
> a command line option, since it'll depend on where you want to use
> the output) and then not use E'' strings at all.

Yes, we could do that, but are you saying it is a pg_dump flag, and then
you have to make sure you load into something that has the same
behavior?  That seems quite error-prone.  Having the SET in the dump
seems easier, and it would eliminate the need for E'' in the pg_dump
file.

What if we do something like SET NO VALIDATOR var='val' and if the SET is
not understood, no error is generated?

--  Bruce Momjian   http://candle.pha.pa.us EnterpriseDB    http://www.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Upcoming releases
Next
From: Thomas Hallgren
Date:
Subject: Creating a SHELL type [Was: User Defined Types in Java]