diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c
index 640c36e5d1a10c907e5c4942489961c0dd98fc7c..30078cbb16119776329a94efcabbd6b00ef44b6b 100644
--- a/src/backend/storage/lmgr/lock.c
+++ b/src/backend/storage/lmgr/lock.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.19 1998/01/23 06:01:03 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.20 1998/01/23 22:16:46 momjian Exp $
  *
  * NOTES
  *	  Outside modules can create a lock table and acquire/release
@@ -708,6 +708,20 @@ LockResolveConflicts(LOCKTAB *ltable,
 		result->nHolding = 0;
 	}
 
+	{
+		/* ------------------------
+		 * If someone with a greater priority is waiting for the lock,
+		 * do not continue and share the lock, even if we can.  bjm
+		 * ------------------------
+		 */
+		int				myprio = ltable->ctl->prio[lockt];
+		PROC_QUEUE		*waitQueue = &(lock->waitProcs);
+		PROC			*topproc = (PROC *) MAKE_PTR(waitQueue->links.prev);
+
+		if (waitQueue->size && topproc->prio > myprio)
+			return STATUS_FOUND;
+	}
+
 	/* ----------------------------
 	 * first check for global conflicts: If no locks conflict
 	 * with mine, then I get the lock.
diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c
index 1df06815bff1544533b97801d83dd18a4d9104d5..b07b21d01db85aa6cfd48008d4b77349345815f5 100644
--- a/src/backend/storage/lmgr/proc.c
+++ b/src/backend/storage/lmgr/proc.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.26 1998/01/23 06:01:05 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.27 1998/01/23 22:16:48 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,7 +46,7 @@
  *		This is so that we can support more backends. (system-wide semaphore
  *		sets run out pretty fast.)				  -ay 4/95
  *
- * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.26 1998/01/23 06:01:05 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.27 1998/01/23 22:16:48 momjian Exp $
  */
 #include <sys/time.h>
 #include <unistd.h>
@@ -469,7 +469,7 @@ ProcSleep(PROC_QUEUE *queue,
 	proc = (PROC *) MAKE_PTR(queue->links.prev);
 	for (i = 0; i < queue->size; i++)
 	{
-		if (proc->prio < prio)
+		if (proc->prio >= prio)
 			proc = (PROC *) MAKE_PTR(proc->links.prev);
 		else
 			break;