Re: hyrax vs. RelationBuildPartitionDesc
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-03-13T17:15:45Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > On Wed, Mar 13, 2019 at 12:42 PM Alvaro Herrera > <alvherre@2ndquadrant.com> wrote: >> I remember going over this code's memory allocation strategy a bit to >> avoid the copy while not incurring potential leaks CacheMemoryContext; >> as I recall, my idea was to use two contexts, one of which is temporary >> and used for any potentially leaky callees, and destroyed at the end of >> the function, and the other contains the good stuff and is reparented to >> CacheMemoryContext at the end. So if you have any accidental leaks, >> they don't affect a long-lived context. You have to be mindful of not >> calling leaky code when you're using the permanent one. > Well, that assumes that the functions which allocate the good stuff do > not also leak, which seems a bit fragile. I'm a bit confused as to why there's an issue here at all. The usual plan for computed-on-demand relcache sub-structures is that we compute a working copy that we're going to return to the caller using the caller's context (which is presumably statement-duration at most) and then do the equivalent of copyObject to stash a long-lived copy into the relcache context. Is this case being done differently, and if so why? If it's being done the same, where are we leaking? I recall having noticed someplace where I thought the relcache partition support was simply failing to make provisions for cleaning up a cached structure at relcache entry drop, but I didn't have time to pursue it right then. Let me see if I can reconstruct what I was worried about. regards, tom lane
Commits
-
Load relcache entries' partitioning data on-demand, not immediately.
- 5b9312378e2f 13.0 landed
-
Prevent memory leaks associated with relcache rd_partcheck structures.
- d4c50b4b1f86 10.8 landed
- 5f1433ac5e7f 12.0 landed
- 089e4d405d0f 11.3 landed
-
Don't copy PartitionBoundInfo in set_relation_partition_info.
- c8151e642368 12.0 landed
-
Further reduce memory footprint of CLOBBER_CACHE_ALWAYS testing.
- d3f48dfae42f 12.0 landed
-
Fix some oversights in commit 2455ab488.
- de570047993b 12.0 landed
-
Defend against leaks into RelationBuildPartitionDesc.
- 2455ab48844c 12.0 landed
-
Allow ATTACH PARTITION with only ShareUpdateExclusiveLock.
- 898e5e3290a7 12.0 cited