On Thu, Dec 21, 2017 at 12:43 PM, Alvaro Herrera
<alvhe...@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

Reply via email to