On 03/02/2015 07:14 PM, Andres Freund wrote:
> On 2015-03-02 19:11:15 +0200, Heikki Linnakangas wrote:
>> Come to think of it, it would be cleaner anyway to move the
>> XLogBeginInsert() and XLogInsert() calls inside XactEmitCommitRecord. Then
>> those structs don't need to be static either.
>
> That was my first thought as well - but it doesn't easily work because
> of the way commit/abort records are embedded into twophase.c. I
> couldn't come with a simple way to change that, and anythign non simple
> imo defeats the purpose.
Pass the prepared XID as yet another argument to XactEmitCommitRecord,
and have XactEmitCommitRecord emit the xl_xact_commit_prepared part of
the record too. It might even make sense to handle the prepared XID like
all the other optional fields and add an xinfo flag for it.
- Heikki