bug in pg_dump ALTER DATABASE

Started by Christopher Kings-Lynneover 21 years ago4 messages
#1Christopher Kings-Lynne
chriskl@familyhealth.com.au

As part of my testing, I noticed this bug. My database has a
search_path set in the database vars. It dumps lik ethis:

DROP DATABASE usa;
CREATE DATABASE usa WITH TEMPLATE = template0 OWNER = usadmin ENCODING =
'LATIN1';
ALTER DATABASE usa SET search_path TO 'public, contrib';

Notice the single quotes around the TO bit? That's completely broken.
Those '' must not be there.

Is a fix for this required for only search_path, or is it a more general
problem?

Chris

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Christopher Kings-Lynne (#1)
Re: bug in pg_dump ALTER DATABASE

Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:

Is a fix for this required for only search_path, or is it a more general
problem?

I think this has to be driven off the GUC_LIST_INPUT and/or
GUC_LIST_QUOTE flag bits (too late at night to remember just what those
two flags do, but one or both determines this). One small problem is
that pg_dump can't see the GUC flag bits AFAIK ...

regards, tom lane

#3Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Christopher Kings-Lynne (#1)
Re: bug in pg_dump ALTER DATABASE

As part of my testing, I noticed this bug. My database has a
search_path set in the database vars. It dumps lik ethis:

DROP DATABASE usa;
CREATE DATABASE usa WITH TEMPLATE = template0 OWNER = usadmin ENCODING =
'LATIN1';
ALTER DATABASE usa SET search_path TO 'public, contrib';

Notice the single quotes around the TO bit? That's completely broken.
Those '' must not be there.

Is a fix for this required for only search_path, or is it a more general
problem?

So what are we going to do about this problem?

The pg_settings view does not have enough information to determine it
generically. (It only says 'string', not 'list'...)

I propose that we modify pg_dumpall to hard-code the set of list-type
GUC variables for each backend version.

The current (CVS) list of such GUCs is:

* DateStyle
* preload_libraries
* search_path
* log_destination
* custom_variable_classes (probably doesn't need to be worried about)

Shall I go ahead and do this?

Chris

#4Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Christopher Kings-Lynne (#3)
Re: bug in pg_dump ALTER DATABASE

So what are we going to do about this problem?

The pg_settings view does not have enough information to determine it
generically. (It only says 'string', not 'list'...)

I propose that we modify pg_dumpall to hard-code the set of list-type
GUC variables for each backend version.

The current (CVS) list of such GUCs is:

* DateStyle
* preload_libraries
* search_path
* log_destination
* custom_variable_classes (probably doesn't need to be worried about)

Shall I go ahead and do this?

Oh, and we'll need to fix the pg_settings view for the future, because
otherwise it will make life difficult for GUI writies (like me)...

Chris