"Mikael Carneholm" <[EMAIL PROTECTED]> writes:
> dfol=> select pgc.oid, pgc.relname from pg_class pgc where pgc.oid in (68950, 
> 68122);
>   oid  |         relname          
> -------+--------------------------
>  68950 | vehicle_unit_data_200407
>  68122 | vehicle_unit_data_200301

> NOTICE:  Clustering idx_vehicle_unit_data_200407_person_information__id on 
> vehicle_unit_data_200407
> ERROR:  deadlock detected
> DETAIL:  Process 29022 waits for AccessExclusiveLock on relation 68950 of 
> database 16390; blocked by process 15865.
> Process 15865 waits for AccessShareLock on relation 68122 of database 16390; 
> blocked by process 29022.

> So it seems that it was the clustering of 
> idx_vehicle_unit_data_200407_person_information__id on 
> vehicle_unit_data_200407 that caused the deadlock.

Hmm, the CLUSTER on vehicle_unit_data_200407 wouldn't have taken any
lock on vehicle_unit_data_200301.  Were you perhaps issuing a series
of CLUSTERs inside a transaction block?  That would pile up exclusive
locks on all the tables involved, which is certainly deadlock-prone.

I'm also wondering where that NOTICE "Clustering ..." came from, because
there is no such message anywhere in the 8.1 PG sources.  You *sure*
this is 8.1?

There's something funny about 15865 too; you said that was an autovacuum
process but I don't think so.  VACUUM doesn't take AccessShareLock;
there's a different lock type that that tries to acquire.  And it
doesn't take any locks at all on more than one user table at a time.

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to