Tom, The query which you gave returns me 0 rows.
select ctid,xmin,xmax,* from pg_index where indexrelid in (select indexrelid from pg_index group by 1 having count(*)>1); Regards, Bhakti On Sat, Feb 26, 2011 at 10:55 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Bhakti Ghatkar <bghat...@zedo.com> writes: > > We were running full vacuum on DB when we encountered the error below; > > > INFO: vacuuming "pg_catalog.pg_index" > > *vacuumdb: vacuuming of database "rpt_production" failed: ERROR: > duplicate > > key value violates unique constraint "pg_index_indexrelid_index"* > > DETAIL: Key (indexrelid)=(2678) already exists. > > That's pretty bizarre, but what makes you think it has anything to do > with temp tables? OID 2678 is pg_index_indexrelid_index itself. > It looks to me like you must have duplicate rows in pg_index for that > index (and maybe others?), and the problem is exposed during vacuum full > because it tries to rebuild the indexes. > > Could we see the output of > > select ctid,xmin,xmax,* from pg_index where indexrelid in > (select indexrelid from pg_index group by 1 having count(*)>1); > > regards, tom lane >