Re: [BUGS] BUG #7873: pg_restore --clean tries to drop tables that don't exist

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Josh Kupershmidt <schmiddy(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Bruce Momjian <bruce(at)momjian(dot)us>, Dave Rolsky <autarch(at)urth(dot)org>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [BUGS] BUG #7873: pg_restore --clean tries to drop tables that don't exist
Date: 2013-07-02 09:39:50
Message-ID: CAFj8pRBswhH0n-Yr4hvvO93p35DTY_te313VGBb_Gkpmi9Vz8Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

Hello

2013/3/8 Josh Kupershmidt <schmiddy(at)gmail(dot)com>:
> On Fri, Mar 8, 2013 at 2:23 AM, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> wrote:
>> 2013/3/8 Josh Kupershmidt <schmiddy(at)gmail(dot)com>:
>
>>> Cool. I think it would also be useful to check that --clean may only
>>> be used with --format=p to avoid any confusion there. (This issue
>>> could be addressed in a separate patch if you'd rather not lard this
>>> patch.)
>>
>> no
>>
>> some people - like we in our company would to use this feature for
>> quiet and strict mode for plain text format too.
>>
>> enabling this feature has zero overhead so there are no reason block
>> it anywhere.
>
> I'm not sure I understand what you're getting at, but maybe my
> proposal wasn't so clear. Right now, you can specify --clean along
> with -Fc to pg_dump, and pg_dump will not complain even though this
> combination is nonsense. I am proposing that pg_dump error out in this
> case, i.e.
>
> $ pg_dump -Fc --file=test.dump --clean -d test
> pg_dump: option --clean only valid with plain format dump
>
> Although this lack of an error a (IMO) misfeature of existing pg_dump,
> so if you'd rather leave this issue aside for your patch, that is
> fine.
>

I tested last patch and I am thinking so this patch has sense for
custom format too

[postgres(at)localhost ~]$ /usr/local/pgsql/bin/pg_dump --clean -t a
-Fc postgres > dump
[postgres(at)localhost ~]$ psql -c "drop table a"
DROP TABLE
[postgres(at)localhost ~]$ pg_restore --clean -d postgres dump
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 171; 1259 16462 TABLE
a postgres
pg_restore: [archiver (db)] could not execute query: ERROR: table "a"
does not exist
Command was: DROP TABLE public.a;

WARNING: errors ignored on restore: 1

[postgres(at)localhost ~]$ /usr/local/pgsql/bin/pg_dump --if-exist
--clean -t a -Fc postgres > dump
[postgres(at)localhost ~]$ psql -c "drop table a"
DROP TABLE
[postgres(at)localhost ~]$ pg_restore --clean -d postgres dump

So limit for plain format is not too strict

Regards

Pavel

> Josh

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Dean Rasheed 2013-07-02 10:42:58 Re: BUG #8275: Updateable View based on inheritance (partition) throws Error on INSERT Statement
Previous Message Heikki Linnakangas 2013-07-02 09:17:20 Re: Postgres crash? could not write to log file: No space left on device

Browse pgsql-hackers by date

  From Date Subject
Next Message Jeevan Chalke 2013-07-02 09:48:31 Re: checking variadic "any" argument in parser - should be array
Previous Message Tatsuo Ishii 2013-07-02 09:30:37 Re: [9.4 CF 1] The Commitfest Slacker List