Re: ATTACH/DETACH PARTITION CONCURRENTLY
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Simon Riggs <simon@2ndquadrant.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-11-06T19:05:57Z
Lists: pgsql-hackers
On Tue, Nov 6, 2018 at 2:01 PM Simon Riggs <simon@2ndquadrant.com> wrote: > If you can remove the ERROR without any other adverse effects, that sounds great. > > Please let us know what, if any, adverse effects would be caused so we can discuss. Thanks Well, I've already written about this in two previous emails on this thread, so I'm not sure exactly what you think is missing. But to state the problem again: If you don't throw an error when a partition is concurrently detached and then someone routes a tuple to that portion of the key space, what DO you do? Continue inserting tuples into the table even though it's no longer a partition? Throw tuples destined for that partition away? You can make an argument for both of those behaviors, but they're both pretty strange. The first one means that for an arbitrarily long period of time after detaching a partition, the partition may continue to receive inserts that were destined for its former parent. The second one means that your data can disappear into the ether. I don't like either of those things. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
Allow ATTACH PARTITION with only ShareUpdateExclusiveLock.
- 898e5e3290a7 12.0 landed
-
Change lock acquisition order in expand_inherited_rtentry.
- f4b6341d5fcb 12.0 landed
-
Move code for managing PartitionDescs into a new file, partdesc.c
- 1bb5e7821810 12.0 landed
-
Remove more redundant relation locking during executor startup.
- f2343653f5b2 12.0 cited
-
Add assertions that we hold some relevant lock during relation open.
- b04aeb0a053e 12.0 cited
-
Try to acquire relation locks in RangeVarGetRelid.
- 4240e429d0c2 9.2.0 cited