Robert Haas <robertmhaas@gmail.com> writes:
> That's not what "running" means to me. Running means it's started and
> hasn't yet committed or rolled back.
A subxact definitely can't be considered committed until its topmost
parent commits. However, it could be known to be rolled back before
its parent. IIUC, the current situation is that we don't take
advantage of the latter case but just wait for the topmost parent.
One thing we need to be pretty careful of here is to not break the
promise of atomic commit. At topmost commit, all subxacts must
appear committed simultaneously. It's not quite clear to me whether
we need a similar guarantee in the rollback case. It seems like
we shouldn't, but maybe I'm missing something, in which case maybe
the current behavior is correct?
regards, tom lane