| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> | 
|---|---|
| To: | Bhakti Ghatkar <bghatkar(at)zedo(dot)com> | 
| Cc: | pgsql-performance(at)postgresql(dot)org | 
| Subject: | Re: Vacuum problem due to temp tables | 
| Date: | 2011-02-26 17:25:32 | 
| Message-ID: | 20323.1298741132@sss.pgh.pa.us | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-performance | 
Bhakti Ghatkar <bghatkar(at)zedo(dot)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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Florian Weimer | 2011-02-26 20:54:50 | Re: Picking out the most recent row using a time stamp column | 
| Previous Message | Dave Johansen | 2011-02-26 13:44:28 | Re: Picking out the most recent row using a time stamp column |