Re: ATTACH/DETACH PARTITION CONCURRENTLY
Amit Langote <amitlangote09@gmail.com>
From: Amit Langote <amitlangote09@gmail.com>
To: michael@paquier.xyz
Cc: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>,
Robert Haas <robertmhaas@gmail.com>, David Rowley <david.rowley@2ndquadrant.com>,
Alvaro Herrera <alvherre@2ndquadrant.com>, Andres Freund <andres@anarazel.de>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Simon Riggs <simon@2ndquadrant.com>
Date: 2018-11-16T04:54:30Z
Lists: pgsql-hackers
On Fri, Nov 16, 2018 at 1:00 PM Michael Paquier <michael@paquier.xyz> wrote: > On Fri, Nov 16, 2018 at 10:57:57AM +0900, Amit Langote wrote: > > Maybe partition_bounds_create() should've had a MemoryContext argument to > > pass it the context we want it to create the PartitionBoundInfo in. That > > way, we can simply pass rd_pdcxt to it and avoid making a copy. As is, > > we're now allocating two copies of PartitionBoundInfo, one in the > > CurrentMemoryContext and another in rd_pdcxt, whereas the previous code > > would only allocate the latter. Maybe we should fix it as being a regression. > > Not sure about what you mean by regression here, The regression is, as I mentioned, that the new code allocates two copies of PartitionBoundInfo whereas only one would be allocated before. > but passing the memory > context as an argument has sense as you can remove the extra partition > bound copy, as it has sense to use an array instead of a list for > performance, which may matter if many partitions are handled when > building the cache. So cleaning up both things at the same time would > be nice. Maybe, the patch to add the memory context argument to partition_bound_create and other related static functions in partbound.c should be its own patch, as that seems to be a separate issue. OTOH, other changes needed to implement Robert's proposal of using PartitionBoundSpec and Oid arrays instead of existing lists should be in the same patch. Thanks, Amit
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