Re: pg_restore causing deadlocks on partitioned tables
От | Amit Langote |
---|---|
Тема | Re: pg_restore causing deadlocks on partitioned tables |
Дата | |
Msg-id | CA+HiwqE3cY+i-4eXOxfm-Ec6z-+TJJivcfoGzCHXG37zDsTWPg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: pg_restore causing deadlocks on partitioned tables (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: pg_restore causing deadlocks on partitioned tables
|
Список | pgsql-hackers |
On Tue, Sep 15, 2020 at 7:28 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > I wrote: > > However, the deadlock report suggests, and manual experimentation > > confirms, that > > > (1) TRUNCATE on a partition tries to get AccessShareLock on the parent; > > The reason for this is that > > (a) ExecuteTruncateGuts calls InitResultRelInfo, because it might > need that to fire TRUNCATE triggers for the child relation. > > (b) InitResultRelInfo calls RelationGetPartitionQual, which > of course(?) must access the parent table. > > AFAICS, it is utterly silly for InitResultRelInfo to be forcing > a partition qual to be computed when we might not need it. > We could flush ResultRelInfo.ri_PartitionCheck altogether and > have anything that was reading it instead do > RelationGetPartitionQual(ResultRelInfo.ri_RelationDesc). > > Actually it looks like most of the places reading it are > just interested in non-nullness; can't those be nuked from > orbit in favor of testing rel->rd_rel->relispartition? Yeah, makes sense. Please see attached a patch to do that. -- Amit Langote EnterpriseDB: http://www.enterprisedb.com
Вложения
В списке pgsql-hackers по дате отправления: