On Tue, Jul 16, 2019 at 7:13 AM Amit Kapila <amit.kapil...@gmail.com> wrote: > > I also strongly suspect it is altogether wrong to do > > this before CommitSubTransaction sets s->state to TRANS_COMMIT; what > > if a subxact callback throws an error? > > Are you worried that it might lead to the execution of actions twice?
No, I'm worried that you are running code that is part of the commit path before the transaction has actually committed. CommitSubTransaction() is full of stuff which basically propagates whatever the subtransaction did out to the parent transaction, and all of that code runs after we've ruled out the possibility of an abort, but this very-similar-looking code runs while it's still possible for an abort to happen. That seems unlikely to be correct, and even if it is, it seems needlessly inconsistent. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company