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-13T19:14:52Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > On Wed, Mar 13, 2019 at 2:26 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> I think that RelationBuildPartitionDesc could use some additional cleanup >> or at least better commenting. In particular, it's neither documented nor >> obvious to the naked eye why rel->rd_partdesc mustn't get set till the >> very end. As the complainant, I'm willing to go fix that, but do you want >> to push your patch first so it doesn't get broken? Or I could include >> your patch in the cleanup. > It seems kinda obvious to me why rel->rd_partdesc can't get set until > the end. Isn't it just that you'd better not set a permanent pointer > to a data structure until you're past any code that might ERROR, which > is pretty much everything? That principle applies to lots of > PostgreSQL code, not just this. Yeah, but usually there's some comment pointing it out. I also wonder if there aren't corner-case bugs; it seems a bit bogus for example that rd_pdcxt is created without any thought as to whether it might be set already. It's not clear whether this has been written with the level of paranoia that's appropriate for messing with a relcache entry, and some comments would make it a lot clearer (a) if that is true and (b) what assumptions are implicitly being shared with relcache.c. Meanwhile, who's going to take point on cleaning up rd_partcheck? I don't really understand this code well enough to know whether that can share one of the existing partitioning-related sub-contexts. 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