Skip to content

Commit

Permalink
Fix order of arguments to SubTransSetParent().
Browse files Browse the repository at this point in the history
ProcessTwoPhaseBuffer (formerly StandbyRecoverPreparedTransactions)
mixed up the parent and child XIDs when calling SubTransSetParent to
record the transactions' relationship in pg_subtrans.

Remarkably, analysis by Simon Riggs suggests that this doesn't lead to
visible problems (at least, not in non-Assert builds).  That might
explain why we'd not noticed it before.  Nonetheless, it's surely wrong.

This code was born broken, so back-patch to all supported branches.

Discussion: https://postgr.es/m/20110.1492905318@sss.pgh.pa.us
  • Loading branch information
tglsfdc committed Apr 23, 2017
1 parent 11927e5 commit f588548
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/backend/access/transam/twophase.c
Expand Up @@ -1887,7 +1887,7 @@ StandbyRecoverPreparedTransactions(bool overwriteOK)
TransactionId subxid = subxids[i];

Assert(TransactionIdFollows(subxid, xid));
SubTransSetParent(xid, subxid, overwriteOK);
SubTransSetParent(subxid, xid, overwriteOK);
}

pfree(buf);
Expand Down

0 comments on commit f588548

Please sign in to comment.