aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/async.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2000-06-07 04:09:44 +0000
committerBruce Momjian <bruce@momjian.us>2000-06-07 04:09:44 +0000
commit7d301947e595eda323a441af499b432eb2886293 (patch)
tree244b96a7fa6a26f937f914e9ee8e229c5cfb57db /src/backend/commands/async.c
parent75b950f6681a1b933a5eb8ed828d749cab1c76e0 (diff)
downloadpostgresql-7d301947e595eda323a441af499b432eb2886293.tar.gz
postgresql-7d301947e595eda323a441af499b432eb2886293.zip
Re-order pg_listener index so it can later be used in an index scan.
Diffstat (limited to 'src/backend/commands/async.c')
-rw-r--r--src/backend/commands/async.c33
1 files changed, 9 insertions, 24 deletions
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index 23396108c80..f80ed611238 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);