postgres.git / summary / log / commit / refs

commit    2e14541c4992e5a2de6b5be2f7ed3f3062ed4ec1
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Sun Apr 23 17:10:57 2017 +0000
First released in: 10.0, 9.2.21, 9.3.17, 9.4.12, 9.5.7, 9.6.3

    Fix order of arguments to SubTransSetParent().
    
    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


src/backend/access/transam/twophase.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 84a77376690..3d2f04e81db 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -1923,7 +1923,7 @@ StandbyRecoverPreparedTransactions(bool overwriteOK) TransactionId subxid = subxids[i]; Assert(TransactionIdFollows(subxid, xid)); - SubTransSetParent(xid, subxid, overwriteOK); + SubTransSetParent(subxid, xid, overwriteOK); } } } [parent: 55cdda91c65b]