Re: SELECT blocking on ALTER TABLE ADD FOREIGN KEY

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: jim(at)nasby(dot)net
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: SELECT blocking on ALTER TABLE ADD FOREIGN KEY
Date: 2003-06-11 19:19:14
Message-ID: 21168.1055359154@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

"Jim C. Nasby" <jim(at)nasby(dot)net> writes:
> Is it really necessary to block reads on a table that is affected by
> adding a foreign key constraint?

It's trickier than you seem to think. The command is adding an index,
which at some point is going to affect plans for SELECTs on the table.
It might be safe --- I don't think other processes can see the index
until the ALTER commits --- but in general we do not risk doing schema
modifications on tables with less than exclusive lock.

You'd also have to think about whether this wouldn't increase the risk
of deadlocks. For example, if you are doing several ALTERs in a
transaction, what happens when a later ALTER of the same table *does*
need exclusive lock? Upgrading a lock is a sure ticket to deadlock
problems.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2003-06-11 19:22:58 Re: Please, apply patch for current CVS
Previous Message Bruce Momjian 2003-06-11 18:46:10 Re: Please, apply patch for current CVS