diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c
index 899981265377957df6d80b7b1ca42bcaf8ade630..e9cf37d7e38c0d8f9f9b3cbe231d3e60dcff9183 100644
--- a/src/backend/catalog/indexing.c
+++ b/src/backend/catalog/indexing.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.63 2000/06/07 02:44:35 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.64 2000/06/07 04:09:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -51,7 +51,7 @@ char	   *Name_pg_inherits_indices[Num_pg_inherits_indices] =
 char	   *Name_pg_language_indices[Num_pg_language_indices] =
 {LanguageOidIndex, LanguageNameIndex};
 char	   *Name_pg_listener_indices[Num_pg_listener_indices] =
-{ListenerRelnamePidIndex};
+{ListenerPidRelnameIndex};
 char	   *Name_pg_opclass_indices[Num_pg_opclass_indices] =
 {OpclassNameIndex, OpclassDeftypeIndex};
 char	   *Name_pg_operator_indices[Num_pg_operator_indices] =
@@ -653,7 +653,7 @@ LanguageOidIndexScan(Relation heapRelation, Oid lanId)
 
 
 HeapTuple
-ListenerRelnamePidIndexScan(Relation heapRelation, char *relName, int4 pid)
+ListenerPidRelnameIndexScan(Relation heapRelation, int4 pid, char *relName)
 {
 	Relation	idesc;
 	ScanKeyData skey[2];
@@ -662,16 +662,16 @@ ListenerRelnamePidIndexScan(Relation heapRelation, char *relName, int4 pid)
 	ScanKeyEntryInitialize(&skey[0],
 						   (bits16) 0x0,
 						   (AttrNumber) 1,
-						   (RegProcedure) F_NAMEEQ,
-						   PointerGetDatum(relName));
+						   (RegProcedure) F_INT4EQ,
+						   Int32GetDatum(pid));
 
 	ScanKeyEntryInitialize(&skey[1],
 						   (bits16) 0x0,
 						   (AttrNumber) 2,
-						   (RegProcedure) F_INT4EQ,
-						   Int32GetDatum(pid));
+						   (RegProcedure) F_NAMEEQ,
+						   PointerGetDatum(relName));
 
-	idesc = index_openr(ListenerRelnamePidIndex);
+	idesc = index_openr(ListenerPidRelnameIndex);
 	tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 2);
 
 	index_close(idesc);
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index 23396108c8060e2ab64414bce2542278d4225ed6..f80ed61123871de24990ef5a9e52723bea874cd0 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.63 2000/06/04 01:44:29 petere Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.64 2000/06/07 04:09:34 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -159,7 +159,6 @@ Async_Notify(char *relname)
 	/* no point in making duplicate entries in the list ... */
 	if (!AsyncExistsPendingNotify(relname))
 	{
-
 		/*
 		 * We allocate list memory from the global malloc pool to ensure
 		 * that it will live until we want to use it.  This is probably
@@ -202,7 +201,6 @@ Async_Listen(char *relname, int pid)
 	Datum		d;
 	int			i;
 	bool		isnull;
-	int			alreadyListener = 0;
 	TupleDesc	tupDesc;
 
 	if (Trace_notify)
@@ -212,25 +210,12 @@ Async_Listen(char *relname, int pid)
 	tdesc = RelationGetDescr(lRel);
 
 	/* Detect whether we are already listening on this relname */
-	scan = heap_beginscan(lRel, 0, SnapshotNow, 0, (ScanKey) NULL);
-	while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
-	{
-		d = heap_getattr(tuple, Anum_pg_listener_relname, tdesc, &isnull);
-		if (!strncmp((char *) DatumGetPointer(d), relname, NAMEDATALEN))
-		{
-			d = heap_getattr(tuple, Anum_pg_listener_pid, tdesc, &isnull);
-			if (DatumGetInt32(d) == pid)
-			{
-				alreadyListener = 1;
-				/* No need to scan the rest of the table */
-				break;
-			}
-		}
-	}
-	heap_endscan(scan);
-
-	if (alreadyListener)
+	tuple = SearchSysCacheTuple(LISTENREL, Int32GetDatum(pid),
+								PointerGetDatum(relname),
+								0, 0);
+	if (tuple != NULL)
 	{
+		/* No need to scan the rest of the table */
 		heap_close(lRel, AccessExclusiveLock);
 		elog(NOTICE, "Async_Listen: We are already listening on %s", relname);
 		return;
@@ -313,9 +298,9 @@ Async_Unlisten(char *relname, int pid)
 
 	lRel = heap_openr(ListenerRelationName, AccessExclusiveLock);
 	/* Note we assume there can be only one matching tuple. */
-	lTuple = SearchSysCacheTuple(LISTENREL, PointerGetDatum(relname),
-								 Int32GetDatum(pid),
-								 0, 0);
+	lTuple = SearchSysCacheTuple(LISTENREL, Int32GetDatum(pid),
+								PointerGetDatum(relname),
+								0, 0);
 	if (lTuple != NULL)
 		heap_delete(lRel, &lTuple->t_self, NULL);
 	heap_close(lRel, AccessExclusiveLock);
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index 38fa01e0d68a1b1130692af2e87b9a15ca11bd01..429b32d382490384de9ebad9223bfa81ec13a880 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.52 2000/06/07 02:44:37 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.53 2000/06/07 04:09:36 momjian Exp $
  *
  * NOTES
  *	  These routines allow the parser/planner/executor to perform
@@ -241,14 +241,14 @@ static struct cachedesc cacheinfo[] = {
 	{ListenerRelationName,		/* LISTENREL */
 		2,
 		{
-			Anum_pg_listener_relname,
 			Anum_pg_listener_pid,
+			Anum_pg_listener_relname,
 			0,
 			0
 		},
 		sizeof(FormData_pg_listener),
-		ListenerRelnamePidIndex,
-	ListenerRelnamePidIndexScan},
+		ListenerPidRelnameIndex,
+	ListenerPidRelnameIndexScan},
 	{OperatorRelationName,		/* OPERNAME */
 		4,
 		{
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h
index cfa4b31aa7cae6185dfa25cd115bd1034473000d..009b4be2137e1e9982241da88ddfc8eb7eb19726 100644
--- a/src/include/catalog/catversion.h
+++ b/src/include/catalog/catversion.h
@@ -37,7 +37,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: catversion.h,v 1.25 2000/06/07 03:02:08 momjian Exp $
+ * $Id: catversion.h,v 1.26 2000/06/07 04:09:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,6 +53,6 @@
  */
 
 /*							yyyymmddN */
-#define CATALOG_VERSION_NO	200006061
+#define CATALOG_VERSION_NO	200006071
 
 #endif
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index c621bb042e328c34fc99280b106a02def01bfa56..cc6903d1f38a7decbe18404189fa90eace6b3562 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: indexing.h,v 1.38 2000/06/07 02:44:40 momjian Exp $
+ * $Id: indexing.h,v 1.39 2000/06/07 04:09:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -63,7 +63,7 @@
 #define InheritsRelidSeqnoIndex		"pg_inherits_relid_seqno_index"
 #define LanguageNameIndex			"pg_language_name_index"
 #define LanguageOidIndex			"pg_language_oid_index"
-#define ListenerRelnamePidIndex		"pg_listener_relname_pid_index"
+#define ListenerPidRelnameIndex		"pg_listener_pid_relname_index"
 #define OpclassDeftypeIndex			"pg_opclass_deftype_index"
 #define OpclassNameIndex			"pg_opclass_name_index"
 #define OperatorNameIndex			"pg_operator_oprname_l_r_k_index"
@@ -141,7 +141,7 @@ extern HeapTuple InheritsRelidSeqnoIndexScan(Relation heapRelation, Oid relid,
 							int4 seqno);
 extern HeapTuple LanguageNameIndexScan(Relation heapRelation, char *lanName);
 extern HeapTuple LanguageOidIndexScan(Relation heapRelation, Oid lanId);
-extern HeapTuple ListenerRelnamePidIndexScan(Relation heapRelation, char *relName, int4 pid);
+extern HeapTuple ListenerPidRelnameIndexScan(Relation heapRelation, int4 pid, char *relName);
 extern HeapTuple OpclassDeftypeIndexScan(Relation heapRelation, Oid defType);
 extern HeapTuple OpclassNameIndexScan(Relation heapRelation, char *opcName);
 extern HeapTuple OperatorNameIndexScan(Relation heapRelation,
@@ -190,7 +190,7 @@ DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index on pg_index using btree(indexreli
 DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops));
 DECLARE_UNIQUE_INDEX(pg_language_name_index on pg_language using btree(lanname name_ops));
 DECLARE_UNIQUE_INDEX(pg_language_oid_index on pg_language using btree(oid oid_ops));
-DECLARE_UNIQUE_INDEX(pg_listener_relname_pid_index on pg_listener using btree(relname name_ops, listenerpid int4_ops));
+DECLARE_UNIQUE_INDEX(pg_listener_pid_relname_index on pg_listener using btree(listenerpid int4_ops, relname name_ops));
 /* This column needs to allow multiple zero entries, but is in the cache */
 DECLARE_INDEX(pg_opclass_deftype_index on pg_opclass using btree(opcdeftype oid_ops));
 DECLARE_UNIQUE_INDEX(pg_opclass_name_index on pg_opclass using btree(opcname name_ops));