Re: Thinking about inventing MemoryContextSetParent

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Thinking about inventing MemoryContextSetParent
Дата
Msg-id 17244.1315867693@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Thinking about inventing MemoryContextSetParent  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-hackers
Alvaro Herrera <alvherre@commandprompt.com> writes:
> Excerpts from Tom Lane's message of sáb sep 10 19:03:23 -0300 2011:
>> I'm considering inventing a new mcxt.c primitive,
>> 
>> void MemoryContextSetParent(MemoryContext context, MemoryContext new_parent);
>> 
>> which would have the effect of delinking "context" from its current
>> parent context and attaching it as a child of the new specified parent.
>> (Any child contexts that it has would naturally follow along.)
>> Because of the way that mcxt.c handles parent/child links, there is no
>> palloc required and so the operation cannot fail.

> Interesting.  I wonder whether we could use this somehow to fix
> performance problems in certain subtransaction code paths that "reassign
> stuff to the parent"; instead of moving pointers or memory around,
> perhaps we could do something like this.  Not that I have actually
> looked into it.

Yeah, I think it would be worth looking for places where we are either
copying lots-o-stuff or else jumping through weird hoops to avoid doing
that.  I'm about halfway through rewriting the plancache and SPIPlan
stuff using this mechanism, and it seems to be coming out a whole lot
nicer --- it'll probably end up with less parse-tree-copying overall,
and much less risk of leaking memory when you hit an error partway
through constructing a cached plan.  (The existing SPI code gets a
completely failing grade on that aspect :-(.)
        regards, tom lane


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Dermot
Дата:
Сообщение: Sponsored development
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [WIP] Caching constant stable expressions per execution