On 3/27/06, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> "Merlin Moncure" <mmoncure@gmail.com> writes:
> > I am getting a deadlock which I can't explain...although maybe
> > somebody else can...here's the situation:
>
> TRUNCATE requires exclusive lock, and won't release it until end of
> transaction. Since you've already read something from the target
> table before attempting TRUNCATE, you already have AccessShareLock
> and are attempting to acquire AccessExclusiveLock. Classic deadly
> embrace.
duh. Anyways, I moved the update() above read part and this
eliminated most of the deadlocks...but I still got a few. Throwing a
'lock table mat_table' before truncate killed them all though.
Merlin