diff options
author | Bruce Momjian <bruce@momjian.us> | 2000-06-07 04:09:44 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2000-06-07 04:09:44 +0000 |
commit | 7d301947e595eda323a441af499b432eb2886293 (patch) | |
tree | 244b96a7fa6a26f937f914e9ee8e229c5cfb57db /src/backend/commands/async.c | |
parent | 75b950f6681a1b933a5eb8ed828d749cab1c76e0 (diff) | |
download | postgresql-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.c | 33 |
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); |