Re: Getting ERROR: could not open file "base/13164/t3_16388" withpartition table with ON COMMIT
От | Amit Langote |
---|---|
Тема | Re: Getting ERROR: could not open file "base/13164/t3_16388" withpartition table with ON COMMIT |
Дата | |
Msg-id | c2600ebb-d17e-5721-c90f-55e4a3577d4d@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: Getting ERROR: could not open file "base/13164/t3_16388" withpartition table with ON COMMIT (Alvaro Herrera <alvherre@2ndquadrant.com>) |
Список | pgsql-hackers |
On 2018/11/06 4:37, Alvaro Herrera wrote: > On 2018-Nov-02, Amit Langote wrote: > >> Well, performDeletion *does* drop the child, because when the parent is >> dropped due to its ON COMMIT DROP action, it's done using: >> >> /* >> * Since this is an automatic drop, rather than one >> * directly initiated by the user, we pass the >> * PERFORM_DELETION_INTERNAL flag. >> */ >> performDeletion(&object, >> DROP_CASCADE, PERFORM_DELETION_INTERNAL); >> >> Note the DROP_CASCADE, which means its children will be deleted as part of >> this. > > I think this code should collect all the OIDs to be dropped, then use a > single performMultipleDeletions() at the end, after the heap_truncate > call is done. That seems better to me than a relkind check. I've posted in a new thread about this: * ON COMMIT actions and inheritance * https://www.postgresql.org/message-id/68f17907-ec98-1192-f99f-8011400517f5%40lab.ntt.co.jp I've to say that what you suggest seems to be a more elegant way to fix this issue. My patch fixes it by reconstructing the oids_to_truncate list by removing the OIDs of children that were dropped via the ON COMMIT DROP action of the parent using a SearchSysCacheExists1 test. Thanks, Amit
В списке pgsql-hackers по дате отправления: