From: Tom Lane Date: Sun, 23 Apr 2017 17:10:57 +0000 (-0400) Subject: Fix order of arguments to SubTransSetParent(). X-Git-Tag: REL_10_BETA1~202 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0874d4f3e183757ba15a4b3f3bf563e0393dd9c2;p=postgresql 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 --- diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 49b6429218..79b3957d08 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -2142,7 +2142,7 @@ ProcessTwoPhaseBuffer(TransactionId xid, } if (setParent) - SubTransSetParent(xid, subxid, overwriteOK); + SubTransSetParent(subxid, xid, overwriteOK); } return buf;