Re: Bug in -c CLI option of pg_dump/pg_restore

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Guillaume Lelarge <guillaume(at)lelarge(dot)info>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Bug in -c CLI option of pg_dump/pg_restore
Date: 2012-10-20 18:28:30
Message-ID: 2060.1350757710@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I wrote:
> It looks like I broke this in commit
> 4317e0246c645f60c39e6572644cff1cb03b4c65, because I removed this from
> _tocEntryRequired():

> - /* Ignore DATABASE entry unless we should create it */
> - if (!ropt->createDB && strcmp(te->desc, "DATABASE") == 0)
> - return 0;

Actually, on closer look, this change provides the foundation needed to
do more than just fix this bug. We can also make the combination
"pg_dump -C -c" work sanely, which it never has before. I propose that
we fix this with the attached patch (plus probably some documentation
changes, though I've not looked yet to see what the docs say about it).
With this fix, the output for "-C -c" looks like

DROP DATABASE regression;
CREATE DATABASE regression WITH ...
ALTER DATABASE regression OWNER ...
\connect regression
... etc ...

which seems to me to be just about exactly what one would expect.

The patch also gets rid of a kluge in PrintTOCSummary, which was needed
because of the old coding in _tocEntryRequired(), but no longer is.

regards, tom lane

Attachment Content-Type Size
fix-pg_dump-clean-mode.patch text/x-patch 2.3 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2012-10-20 19:10:08 Re: enhanced error fields
Previous Message Kohei KaiGai 2012-10-20 18:16:36 Re: FDW for PostgreSQL