Re: BUG #4238: pg_class.relhasindex not updated by vacuum - Mailing list pgsql-bugs

From Lawrence Cohan
Subject Re: BUG #4238: pg_class.relhasindex not updated by vacuum
Date
Msg-id D125F8AF679AEE4390F3A546AFFA5CB00331A3DA@hermes.1shoppingcart.lan
Whole thread Raw
In response to BUG #4238: pg_class.relhasindex not updated by vacuum  ("Lawrence Cohan" <lawrencec@1shoppingcart.com>)
List pgsql-bugs
This is what's happening if we add the PK on the table and we were
expecting that ONLY if a user index like fooi was created the
relhasindex should be true.


create table foo(f1 int, id serial, CONSTRAINT foo_pkey PRIMARY KEY
(id));
select relhasindex from pg_class where relname =3D 'foo';=20
-------------
 t
(1 row)

create index fooi on foo(f1);=20
select relhasindex from pg_class where relname =3D 'foo';=20
-------------
 t
(1 row)

drop index fooi;
select relhasindex from pg_class where relname =3D 'foo';=20
-------------
 t
(1 row)

vacuum foo;
select relhasindex from pg_class where relname =3D 'foo';=20
-------------
 t
(1 row)

drop table foo;



Many thanks,
Lawrence Cohan.

-----Original Message-----
From: Lawrence Cohan=20
Sent: Friday, June 13, 2008 11:57 AM
To: 'Tom Lane'
Cc: pgsql-bugs@postgresql.org
Subject: RE: [BUGS] BUG #4238: pg_class.relhasindex not updated by
vacuum=20

Is it possible that because of the PKEY's we have on the tables that
flag is still showing "true"? In that case this is somewhat misleading
as the other flag relhaspkey from pg_class refers to the PK and its own
implicit index is not visible in PGADMIN UI for instance. The pg version
we are on in production is 8.2.5 not 8.3 yet.

Thanks,
Lawrence Cohan.

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]=20
Sent: Friday, June 13, 2008 11:44 AM
To: Lawrence Cohan
Cc: pgsql-bugs@postgresql.org
Subject: Re: [BUGS] BUG #4238: pg_class.relhasindex not updated by
vacuum=20

"Lawrence Cohan" <lawrencec@1shoppingcart.com> writes:
> We rely on this column to build a list of tables restricted to only
those
> that have indexes to be rebuilt with CONCURRENTLY however the column
is not
> updated as documentation says by the vacuum. After a successful
> analyze/vacuum/analyze against the entire database ALL tables from
pg_class
> have the pg_class.relhasindex =3D true even if they don't have any
indexes.

Works as documented for me ...

regression=3D# create table foo(f1 int);
CREATE TABLE
regression=3D# select relhasindex from pg_class where relname =3D 'foo';
 relhasindex=20
-------------
 f
(1 row)

regression=3D# create index fooi on foo(f1);
CREATE INDEX
regression=3D# select relhasindex from pg_class where relname =3D 'foo';
 relhasindex=20
-------------
 t
(1 row)

regression=3D# drop index fooi;
DROP INDEX
regression=3D# select relhasindex from pg_class where relname =3D 'foo';
 relhasindex=20
-------------
 t
(1 row)

regression=3D# vacuum foo;
VACUUM
regression=3D# select relhasindex from pg_class where relname =3D 'foo';
 relhasindex=20
-------------
 f
(1 row)

            regards, tom lane
Attention:
The information contained in this message and or attachments is intended on=
ly for the person or entity to which it is addressed and may =0D
contain confidential and/or privileged material.  Any review, retransmissio=
n, dissemination or other use of, or taking of any action in =0D
reliance upon, this information by persons or entities other than the inten=
ded recipient is prohibited. If you received this in error, please =0D
contact the sender and delete the material from any system and destroy any =
copies.

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #4238: pg_class.relhasindex not updated by vacuum
Next
From: "Lawrence Cohan"
Date:
Subject: Re: BUG #4238: pg_class.relhasindex not updated by vacuum