On Tue, Sep 5, 2017 at 12:24 PM, Michael Paquier <michael.paqu...@gmail.com> wrote: > On Tue, Sep 5, 2017 at 12:05 PM, Masahiko Sawada <sawada.m...@gmail.com> > wrote: >> In get_rel_oids() we often switch the memory context to vac_context >> and switch back. As a result almost code in get_rel_oids() is working >> in vac_context. Maybe we can switch memory context before and after >> the calling get_rel_oids? > > I thought about that as well, and it seemed to me that the current > patch approach is less bug-prone for the future if get_rel_oids() gets > called in some future code paths.
Okay, I agree. Also I found that dedupe_relations() eventually allocates the list in current memory context that may not be vac_context and set it to *relations at the end of that function. I think we should switch the memory context to vac_context before doing that. Or to more simplify the code maybe we can do the all treatment of the relations list after switching to vac_context. For example, oldcontext = MemoryContextSwtichTo(vac_context) relations = copyObject(relations); get_rel_oids(&relations); check_colums_exist(relations); dedupe_relations(&relations); MemoryContextSwtichTo(oldcontext); Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers