On Tue, Nov 27, 2012 at 12:02 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> The point of not wanting to open the index NoLock (and for that matter
> of having DROP INDEX CONCURRENTLY take AccessExclusiveLock once it
> thinks nobody is touching the index) is to make sure that if somehow
> somebody is touching the index anyway, they don't see the index's
> catalog entries as corrupt. They'll either all be there or all not.
> It's only a belt-and-suspenders safety measure, but I don't want to
> give it up.
+1. There's a whole crapload of commits that I did for 9.2 with
commit messages like "improve concurrent DDL in case XYZ". A lot of
that had to do with fixing cases where we were examining system
catalogs in unsafe ways before locks had been taken. I didn't manage
to fix them all, unfortunately, but it's significantly better than it
used to be, and I'd really like it if we could try not to go
backwards.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company