Robert Haas <robertmh...@gmail.com> writes: > On Thu, Mar 14, 2019 at 12:36 PM Tom Lane <t...@sss.pgh.pa.us> wrote: >> Hmm, I wonder why not. I suppose the answer is that >> the leak is worse in HEAD than before, but how come?
> I'd like to know that, too, but right now I don't. BTW, after closer study of 898e5e329 I have a theory as to why it made things worse for CCA animals: it causes relcache entries to be held open (via incremented refcounts) throughout planning, which they were not before. This means that, during each of the many RelationCacheInvalidate events that will occur during a planning cycle, we have to rebuild those relcache entries; previously they were just dropped once and that was the end of it till execution. You noted correctly that the existing PartitionDesc structure would generally get preserved during each reload --- but that has exactly zip to do with the amount of transient space consumed by execution of RelationBuildDesc. We still build a transient PartitionDesc that we then elect not to install. And besides that there's all the not-partitioning-related stuff that RelationBuildDesc can leak. This is probably largely irrelevant for non-CCA situations, since we don't expect forced relcache invals to occur often otherwise. But it seems to fit the facts, particularly that hyrax is only dying on queries that involve moderately large partitioning structures and hence quite a few relations pinned by PartitionDirectory entries. I remain of the opinion that we ought not have PartitionDirectories pinning relcache entries ... but this particular effect isn't really significant to that argument, I think. regards, tom lane