Bruce Momjian <[EMAIL PROTECTED]> writes:
>       test=> CREATE UNIQUE INDEX shadow_index ON pg_shadow (usename);
>       CREATE
>       test=> select * from pg_shadow;
>       ERROR:  Index 'pg_shadow_sysid_index' does not exist
>       test=> \q
>       $ psql test
>       psql: FATAL 1:  Index 'pg_shadow_name_index' does not exist
>       $

> Notice the user wanted an index named shadow_index, but the error
> mentioned is pg_shadow_name_index.

What's failing is catcache lookups on pg_shadow.  The catcache has table
entries that claim that there are indexes on pg_shadow(usename) and
pg_shadow(usesysid).  The system would not work at all, except that
catcache's use of these indexes is defeated by sanity-check code that
notices that relhasindex is FALSE for pg_shadow (line 880 of
catcache.c).

As soon as you create an index on pg_shadow, relhasindex becomes TRUE
and catcache.c starts trying to use these nonexistent indexes for
routine operations like ACL permissions checks.  So, nothing works
anymore.

We ought to create those indexes someday ;-)

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

Reply via email to