Re: Spurious error messages from pg_restore
От | Evan Martin |
---|---|
Тема | Re: Spurious error messages from pg_restore |
Дата | |
Msg-id | 522768F6.8000209@realityexists.net обсуждение исходный текст |
Ответ на | Re: Spurious error messages from pg_restore (Adrian Klaver <adrian.klaver@gmail.com>) |
Список | pgsql-general |
I'm not sure I see the problem. The rule name is only unique within the table, so it would not replace a rule on a different table (or view, as is the case here) than the one being restored. Functions names should be schema-qualified and if I'm restoring a function from a backup I would want any existing function with the same signature to be overwritten. On 04.09.2013 18:20, Adrian Klaver wrote: > On 09/04/2013 07:02 AM, Evan Martin wrote: > >> Also, even without --clean I get 3 errors: >> >> pg_restore: [archiver (db)] Error while PROCESSING TOC: >> pg_restore: [archiver (db)] Error from TOC entry 6755; 2618 4417788 RULE >> geometry_columns_delete em >> pg_restore: [archiver (db)] could not execute query: ERROR: rule >> "geometry_columns_delete" for relation "geometry_columns" already exists >> Command was: CREATE RULE geometry_columns_delete AS ON DELETE TO >> geometry_columns DO INSTEAD NOTHING; >> >> (and same for "geometry_columns_insert" and "geometry_columns_update") >> >> This is probably because I have PostGIS installed as an extension (in >> both the source and target databases), which creates those rules. Could >> pg_restore use CREATE OR REPLACE whenever possible to avoid this? > > I could see where CREATE OR REPLACE would lead to hidden corruption. > It is in entirely possible for a RULE or FUNCTION to have the same > name in different databases, but have different code under the name. > Blindly REPLACEing would get you past the error messages, however it > is possible that it leads to all sorts of headaches later. > >
В списке pgsql-general по дате отправления: