Re: pgsql: Get rid of copy_partition_key
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-12-21T21:22:40Z
Lists: pgsql-hackers
On Thu, Dec 21, 2017 at 12:43 PM, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > Get rid of copy_partition_key > > That function currently exists to avoid leaking memory in > CacheMemoryContext in case of trouble while the partition key is being > built, but there's a better way: allocate everything in a memcxt that > goes away if the current (sub)transaction fails, and once the partition > key is built and no further errors can occur, make the memcxt permanent > by making it a child of CacheMemoryContext. I'm not saying this commit is wrong, but it's a weaker form of protection than we had before. For instance, suppose that while building the partition key we do a bunch of random palloc's that are only used transiently when constructing the key. In the old coding, those go into the temp context and get blown up immediately; only what we copy to the new context ends up there. In the new way, they stick around for as long as the relcache entry does. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
Protect against hypothetical memory leaks in RelationGetPartitionKey
- be2343221fb7 11.0 landed
-
Get rid of copy_partition_key
- 8a0596cb656e 11.0 cited