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]