diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2017-04-23 13:10:57 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2017-04-23 13:10:57 -0400 |
commit | a66e01bbcc8808674ade41d38cfba711a36b8b15 (patch) | |
tree | ca9707d31a05ba7b69e425ded892031bb0ea2afc | |
parent | f91160c56e71df112209b15212deb8adf46e0680 (diff) | |
download | postgresql-a66e01bbcc8808674ade41d38cfba711a36b8b15.tar.gz postgresql-a66e01bbcc8808674ade41d38cfba711a36b8b15.zip |
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
-rw-r--r-- | src/backend/access/transam/twophase.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 6f82e546cb3..a2804c8f033 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -1934,7 +1934,7 @@ StandbyRecoverPreparedTransactions(bool overwriteOK) TransactionId subxid = subxids[i]; Assert(TransactionIdFollows(subxid, xid)); - SubTransSetParent(xid, subxid, overwriteOK); + SubTransSetParent(subxid, xid, overwriteOK); } } } |