On Wed, Apr 6, 2016 at 5:58 AM, Alvaro Herrera <alvhe...@2ndquadrant.com> wrote: > Robbie Harwood wrote: >> Alvaro Herrera <alvhe...@2ndquadrant.com> writes: >> > It seems to me that the right solution for this is to create a new >> > memory context which is a direct child of TopMemoryContext, so that >> > palloc can be used, and so that it can be reset separately, and that it >> > doesn't suffer from resets of other contexts. (I think Michael's point >> > is that if those chunks were it a context of their own, you wouldn't >> > need the pfrees but a MemCxtReset would be enough.) >> >> Hmm, that's also an option. I read Michael's point as arguing for >> calloc()/free() rather than a new context, but I could be wrong. > > Yeah, if you weren't using stringinfos that would be an option, but > since you are I think that's out of the question.
To be honest, my first thought about that was to create a private memory context only dedicated to those buffers, save it in pg_gssinfo and remove those pfree calls as the memory context would clean up itself with inheritance. Regarding the calloc/free stuff, should I be a committer I would have given it a spin to see how the code gets uglier or better and would have done a final decision depending on that (you are true about the repalloc/pfree calls in memory contexts btw, I forgot that). >> A question, though: it it valuable for the context to be reset()able >> separately? If there were more than just these two buffers going into >> it, I could see it being convenient - especially if it were for >> different encryption types, for instance - but it seems like it would be >> overkill? > > If two buffers is all, I think retail pfrees are fine. I haven't > actually read the patch. Those are the only two buffers present per session. -- Michael -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers