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>,
Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-04-12T19:47:19Z
Lists: pgsql-hackers
Attachments
- fix-rd_partcheck-management-2.patch (text/x-diff) patch
Robert Haas <robertmhaas@gmail.com> writes: > As a parenthetical note, I observe that relcache.c seems to know > almost nothing about rd_partcheck. rd_partkey and rd_partdesc both > have handling in RelationClearRelation(), but rd_partcheck does not, > and I suspect that's wrong. So the problems are probably not confined > to the relcache-drop-time problem that you observed. I concluded that that's not parenthetical but pretty relevant... Attached is a revised version of Amit's patch at [1] that makes these data structures be treated more similarly. I also added some Asserts and comment improvements to address the complaints I made upthread about under-documentation of all this logic. I also cleaned up the problem the code had with failing to distinguish "partcheck list is NIL" from "partcheck list hasn't been computed yet". For a relation with no such constraints, generate_partition_qual would do the full pushups every time. I'm not sure if the case actually occurs commonly enough that that's a performance problem, but failure to account for it made my added assertions fall over :-( and I thought fixing it was better than weakening the assertions. I haven't made back-patch versions yet. I'd expect they could be substantially the same, except the two new fields have to go at the end of struct RelationData to avoid ABI breaks. Oh: we might also need some change in RelationCacheInitializePhase3, depending on the decision about [2]. regards, tom lane [1] https://www.postgresql.org/message-id/036852f2-ba7f-7a1f-21c6-00bc3515eda3@lab.ntt.co.jp [2] https://www.postgresql.org/message-id/5706.1555093031@sss.pgh.pa.us
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