Re: dblink memory leak

Поиск
Список
Период
Сортировка
От Itagaki Takahiro
Тема Re: dblink memory leak
Дата
Msg-id 20091005120001.9CE4.52131E4D@oss.ntt.co.jp
обсуждение исходный текст
Ответ на Re: dblink memory leak  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: dblink memory leak  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Tom Lane <tgl@sss.pgh.pa.us> wrote:

> I think what you want to do instead is use PG_TRY blocks to ensure that
> transient results are cleaned up.

I think PG_TRY blocks are not enough, too. PG_TRY requires a statement
block, but we need to return from dblink functions per tuple.
Error and interruption can occur at the caller:
   ExecMakeTableFunctionResult()   {       for (;;)       {
*here*      CHECK_FOR_INTERRUPTS();           result = FunctionCallInvoke(&fcinfo);  => { PG_TRY ... END }           if
(rsinfo.isDone== ExprEndResult)               break;           tuplestore_puttuple(tupstore, &tmptup);       }   }
 

Also, we should think SRF-functions might not be called repeatedly
until max_calls whether the transaction is committed or rollbacked
because we might have some optimization in FunctionScan in the future.
For example:   SELECT * FROM dblink() LIMIT 3
might call dblink() only 3 times if we optimize executor logic
(it should not occur for now, though).

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center




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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: dblink memory leak
Следующее
От: KaiGai Kohei
Дата:
Сообщение: Re: Privileges and inheritance