diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 8086b857b9..8e603c7d6a 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -697,7 +697,7 @@ AssignTransactionId(TransactionState s)
 
 	if (isSubXact)
 		SubTransSetParent(XidFromFullTransactionId(s->fullTransactionId),
-						  XidFromFullTransactionId(s->parent->fullTransactionId));
+						  XidFromFullTransactionId(XactTopFullTransactionId));
 
 	/*
 	 * If it's a top-level transaction, the predicate locking system needs to
