Reduce lock levels for ADD and DROP COLUMN
Simon Riggs <simon@2ndquadrant.com>
From: Simon Riggs <simon@2ndQuadrant.com>
To: pgsql-hackers@postgresql.org
Date: 2010-12-27T11:42:34Z
Lists: pgsql-hackers
Attachments
- alter_adddrop.v1.patch (text/x-patch) patch v1
Idea is to reduce lock level of ADD/DROP COLUMN from AccessExclusiveLock down to ShareRowExclusiveLock. To make it work, we need to recognise that we are adding a column without rewriting the table. That's a simple test at post parse analysis stage, but what I can't do is work out whether the column name used is a domain name which contains a constraint. So if we want this, then it seems we need to add a separate subcommand, so we can then throw an error if a domain is specified. ALTER TABLE foo ADD [COLUMN] colname CONCURRENTLY; Or other ideas? Do we really care? DROP ... RESTRICT works fine at reduced lock level, assuming I'm not missing anything... ALTER TABLE foo DROP [COLUMN] colname RESTRICT; Patch needs docs, tests and a check for the domain, so just a quick hack just to get my dev muscles back in shape after Christmas. (Jokes please). Comments? -- Simon Riggs http://www.2ndQuadrant.com/books/ PostgreSQL Development, 24x7 Support, Training and Services