Re: pg_restore --clean failing due to dependancies

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Arnaud Lesauvage <arnaud(dot)lesauvage(at)codata(dot)eu>
Cc: pgsql-general(at)postgreSQL(dot)org
Subject: Re: pg_restore --clean failing due to dependancies
Date: 2016-11-16 19:05:04
Message-ID: 17509.1479323104@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Arnaud Lesauvage <arnaud(dot)lesauvage(at)codata(dot)eu> writes:
> [ dump from problematic database ]

OK, thanks for the test case. The problem here is that pg_dump is setting
up a circular dependency that it doesn't know how to break correctly.
You've got a couple of views that are implicitly dependent on the primary
keys of their underlying tables, because they use a GROUP BY the primary
key without also grouping by other columns they use post-grouping. That
means that pg_dump has to dump the view definition after the creation of
the primary key, but it also needs to put the view out sooner than that
for other reasons. It manages to deal with that okay in the default mode,
but when you have --clean in there, it ends up generating an illegal DROP
RULE command.

This is something we ought to fix, but it's not exactly trivial to do.
In the meantime I'd suggest changing the view definitions to not assume
that the underlying tables have primary keys. It looks like in
view_temp_export_geo_recherche_extra_sites_projets you need to add
c.official_language_id to the GROUP BY, and similarly in
view_temp_export_geo_recherche_offtrad_sites.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Andreas Brandl 2016-11-16 19:25:27 Re: Change column type from int to bigint - quickest way
Previous Message Rich Shepard 2016-11-16 16:17:01 Re: Upgrade from 9.5.4 to 9.6.1