identify_locking_dependencies is broken for schema-only dumps

Поиск
Список
Период
Сортировка
От Robert Haas
Тема identify_locking_dependencies is broken for schema-only dumps
Дата
Msg-id CA+TgmobhgWgQOWJZ2ZH6JPMZYu_8pWkosns=u4pPdjMDw0QrAw@mail.gmail.com
обсуждение исходный текст
Ответы Re: identify_locking_dependencies is broken for schema-only dumps  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
This can lead to deadlocks during parallel restore.  Test case:

create table bar (a int primary key, b int);
create table baz (z int, a int references bar);
create view foo as select a, b, sum(1) from bar group by a union all
select z, a, 0 from baz;

I dumped this with: pg_dump -Fc -s -f test.dmp
Then: while (dropdb rhaas; createdb; pg_restore -O -d rhaas -j3
test.dmp); do true; done

This quickly fails for me with:

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2155; 2606 47822 FK
CONSTRAINT baz_a_fkey rhaas
pg_restore: [archiver (db)] could not execute query: ERROR:  deadlock detected
DETAIL:  Process 81791 waits for AccessExclusiveLock on relation 47862
of database 47861; blocked by process 81789.
Process 81789 waits for AccessShareLock on relation 47865 of database
47861; blocked by process 81791.
HINT:  See server log for query details.
    Command was: ALTER TABLE ONLY baz
    ADD CONSTRAINT baz_a_fkey FOREIGN KEY (a) REFERENCES bar(a);
WARNING: errors ignored on restore: 2

The attached patch seems to fix it for me.

Comments?

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: GCC memory barriers are missing "cc" clobbers
Следующее
От: Andrew Gierth
Дата:
Сообщение: Re: Final Patch for GROUPING SETS