From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
---|---|
To: | James Robinson <jlrobins(at)socialserve(dot)com> |
Cc: | Hackers Development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: ALTER TABLE ... DISABLE TRIGGER vs. AccessExclusiveLock |
Date: | 2010-07-27 19:36:48 |
Message-ID: | AANLkTimA9OKvwLaOXNuhchWLVDFQgF12guTnmH8qfMj6@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Jul 27, 2010 at 3:07 PM, James Robinson
<jlrobins(at)socialserve(dot)com> wrote:
> Experience and a read through backend/commands/tablecmds.c's AlterTable()
> indicate that ALTER TABLE ... DISABLE TRIGGER obtains an exclusive lock on
> the table (as does any ALTER TABLE).
>
> Blocking other readers from a table when we've, within the body of a
> transaction performing a bulk update operation where we don't want / need
> triggers to fire, seems at first glance to be over-kill. I can see how
> AlterTable()'s complex logic is made less complex through 'get and keep a
> big lock', since most of its operational modes really do need exclusive
> access, but is it strictly required for ... DISABLE / REENABLE TRIGGER?
>
> Could, say, RowExclusiveLock hypothetically provide adequate protection,
> allowing concurrent reads, but blocking out any other writers (for ENABLE /
> DISABLE TRIGGER) -- such as if driven through a new statement other than
> ALTER TABLE -- such as "DISABLE TRIGGER foo ON tbar" ?
Funny you should mention this. There is a pending patch to do
something very much along these line.
https://commitfest.postgresql.org/action/patch_view?id=347
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2010-07-27 19:50:08 | Re: page corruption on 8.3+ that makes it to standby |
Previous Message | Robert Haas | 2010-07-27 19:34:45 | Re: do we need to postpone beta4? |