diff --git a/src/backend/access/transam/varsup.c b/src/backend/access/transam/varsup.c index 500335bd6f..555bb134f5 100644 --- a/src/backend/access/transam/varsup.c +++ b/src/backend/access/transam/varsup.c @@ -21,7 +21,6 @@ #include "miscadmin.h" #include "postmaster/autovacuum.h" #include "storage/pmsignal.h" -#include "storage/predicate.h" #include "storage/proc.h" #include "utils/builtins.h" #include "utils/syscache.h" @@ -162,10 +161,6 @@ GetNewTransactionId(bool isSubXact) ExtendCLOG(xid); ExtendSUBTRANS(xid); - /* If it's top level, the predicate locking system also needs to know. */ - if (!isSubXact) - RegisterPredicateLockingXid(xid); - /* * Now advance the nextXid counter. This must not happen until after we * have successfully completed ExtendCLOG() --- if that routine fails, we diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 8a4c4eccd7..2ca1c14549 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -454,6 +454,13 @@ AssignTransactionId(TransactionState s) if (isSubXact) SubTransSetParent(s->transactionId, s->parent->transactionId, false); + /* + * If it's a top-level transaction, the predicate locking system needs to + * be told about it too. + */ + if (!isSubXact) + RegisterPredicateLockingXid(s->transactionId); + /* * Acquire lock on the transaction XID. (We assume this cannot block.) We * have to ensure that the lock is assigned to the transaction's own