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);
(select indexrelid from pg_index group by 1 having count(*)>1);
Regards,
Bhakti
On Sat, Feb 26, 2011 at 10:55 PM, Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
Bhakti Ghatkar <bghatkar@xxxxxxxx> writes:
> We were running full vacuum on DB when we encountered the error below;
> INFO: vacuuming "pg_catalog.pg_index"That's pretty bizarre, but what makes you think it has anything to do
> *vacuumdb: vacuuming of database "rpt_production" failed: ERROR: duplicate
> key value violates unique constraint "pg_index_indexrelid_index"*
> DETAIL: Key (indexrelid)=(2678) already exists.
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