diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c
index d930c66c..ff9b9caa 100644
--- a/src/backend/storage/lmgr/lock.c
+++ b/src/backend/storage/lmgr/lock.c
@@ -743,6 +743,20 @@ LockHasWaiters(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock)
 	 */
 	partitionLock = LockHashPartitionLock(locallock->hashcode);
 
+	/*
+	 * If the lock was acquired via the fast path, locallock->lock and
+	 * locallock->proclock will be NULL.  We must transfer the lock to the
+	 * main lock table before we can inspect LOCK->waitMask.
+	 */
+	if (locallock->lock == NULL)
+	{
+		PROCLOCK   *fp_proclock;
+
+		fp_proclock = FastPathGetRelationLockEntry(locallock);
+		locallock->lock = fp_proclock->tag.myLock;
+		locallock->proclock = fp_proclock;
+	}
+
 	LWLockAcquire(partitionLock, LW_SHARED);
 
 	/*
