On 05/12/2014 06:26 PM, Andres Freund wrote:
>> >With the new "commit-in-progress" status in clog, we won't need the
>> >sub-committed clog status anymore. The "commit-in-progress" status will
>> >achieve the same thing.
> Wouldn't that cause many spurious waits? Because commit-in-progress
> needs to be waited on, but a sub-committed xact surely not?
Ah, no. Even today, a subxid isn't marked as sub-committed, until you
commit the top-level transaction. The sub-commit state is a very
transient state during the commit process, used to make the commit of
the sub-transactions and the top-level transaction appear atomic. The
commit-in-progress state would be a similarly short-lived state. You
mark the subxids and the top xid as commit-in-progress just before the
XLogInsert() of the commit record, and you replace them with the real
LSNs right after XLogInsert().
- Heikki