I am looking at how the system indexes are used.

In the past, I went through and changed all system table lookups that
return a single value into system cache lookups.

I now see several cases where we are doing heap scans of system tables,
rather than using indexes.  There are cases that can return several
rows, so we can't use the cache.  However, we could use index scans
rather than heap scans.

An interesting case is the pg_listener index in commands/async.c.  Our
previous index was by relname/pid.  By changing this index to
pid/relname, I can add index scans based in pid to prevent the many heap
scans in the file.  I am sure there are other places that can be
improved.

I can start fixing them, but as I remember, someone was thinking of
making heap/index scans use the same interface.  Can I get a status on
that?

-- 
  Bruce Momjian                        |  http://www.op.net/~candle
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Wed, 7 Jun 2000 00:11:37 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Use of system indexes
> -----Original Message-----
> From: pgsql-hackers-owner@hub.org [mailto:pgsql-hackers-owner@hub.org]On
> Behalf Of Bruce Momjian
>
> I am looking at how the system indexes are used.
>
> In the past, I went through and changed all system table lookups that
> return a single value into system cache lookups.
>
> I now see several cases where we are doing heap scans of system tables,
> rather than using indexes.  There are cases that can return several
> rows, so we can't use the cache.  However, we could use index scans
> rather than heap scans.
>

[snip]

>
> I can start fixing them, but as I remember, someone was thinking of
> making heap/index scans use the same interface.  Can I get a status on
> that?
>

In my trial implementation of ALTER TABLE DROP COLUMN in command.c,
there is a trial using
systable_beginscan(),systable_endscan(),systable_getnext()
functions.
However there would better unification of system table scan.

Regards.

Hiroshi Inoue
Inoue@tpf.co.jp


Wed, 7 Jun 2000 15:19:45 +0900
"Hiroshi Inoue" <Inoue@tpf.co.jp>
RE: Use of system indexes
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> An interesting case is the pg_listener index in commands/async.c.  Our
> previous index was by relname/pid.  By changing this index to
> pid/relname, I can add index scans based in pid to prevent the many heap
> scans in the file.  I am sure there are other places that can be
> improved.

My opinion about that is that the pg_listener operations are better off
with no indexes at all.  pg_listener is small and *very* frequently
updated...

			regards, tom lane

Wed, 07 Jun 2000 03:35:40 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: Use of system indexes 