Re: Concurrent ALTER SEQUENCE RESTART Regression
Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: Michael Paquier <michael.paquier@gmail.com>
Cc: Jason Petersen <jason@citusdata.com>,
PostgreSQL mailing lists <pgsql-bugs@postgresql.org>
Date: 2017-04-26T16:15:53Z
Lists: pgsql-bugs, pgsql-hackers
On 4/25/17 21:24, Michael Paquier wrote: > Yes, and that's fine, taking a stronger lock on pg_sequence would be > disruptive for other sessions, including the ones updating pg_sequence > for different sequences. The point I am trying to make here is that > the code path updating pg_sequence should make sure that the > underlying object is properly locked first, so as the update is > concurrent-safe because this uses simple_heap_update that assumes that > the operation will be concurrent-safe. For example, take tablecmds.c, > we make sure that any relation ALTER TABLE works on gets a proper lock > with relation_open first, in what sequences would be different now > that they have their own catalog? Pretty much everything other than tables is a counterexample. git grep RowExclusiveLock src/backend/commands/*.c Only tables have an underlying object to lock. Most other DDL commands don't have anything else to lock and run DDL under RowExclusiveLock. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Make ALTER SEQUENCE, including RESTART, fully transactional.
- 3d79013b970d 10.0 landed
-
Modify sequence catalog tuple before invoking post alter hook.
- 665104557fdc 10.0 landed
-
Use weaker locks when updating pg_subscription_rel
- 521fd4795e3e 10.0 cited
-
Add pg_sequence system catalog
- 1753b1b02703 10.0 cited
-
Modify sequence state storage to eliminate dangling-pointer problem
- a2597ef17958 7.3.1 cited