Re: FDW oddity

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: FDW oddity
Дата
Msg-id 5529D062.90005@dunslane.net
обсуждение исходный текст
Ответ на Re: FDW oddity  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-hackers
On 04/11/2015 07:30 PM, Andrew Dunstan wrote:
>
> On 04/11/2015 05:10 PM, Tom Lane wrote:
>> Andrew Dunstan <andrew@dunslane.net> writes:
>>> I have just noticed something slightly odd. The traces (obtained by
>>> setting client_min_messages to debug1) from the blackhole FDW show that
>>> the handler function is called each time an INSERT is performed. 
>>> This is
>>> not the case for SELECT, UPDATE or DELETE. It looks at first glance 
>>> like
>>> a buglet. Can anyone suggest why this should be so?
>> What do you mean by "the handler function", and for that matter what do
>> you define as "each time"?  The ExecForeignInsert method certainly ought
>> to be called once per row inserted, but the same is true of
>> ExecForeignUpdate and ExecForeignDelete.  The setup methods such as
>> BeginForeignModify should only be called once per query though.
>
>
> I mean this function:
>
>    Datum
>    blackhole_fdw_handler(PG_FUNCTION_ARGS)
>    {
>         FdwRoutine *fdwroutine = makeNode(FdwRoutine);
>
>         elog(DEBUG1,"entering function %s",__func__);
>
>         /* assign the handlers for the FDW */
>
>      ...
>    }
>
> And it is called at the beginning of every INSERT statement, before 
> blackholePlanForeignModify() is called


FYI, The FDW is available here: 
<https://bitbucket.org/adunstan/blackhole_fdw>

And here are the traces (notice the second call to blackhole_fdw_handler):
   [andrew@emma inst.bhtest.5709]$ bin/psql   psql (9.5devel)   Type "help" for help.
   andrew=# create extension blackhole_fdw;   CREATE EXTENSION   andrew=# create server blackhole foreign data wrapper
blackhole_fdw;  CREATE SERVER   andrew=# create foreign table bh(a text, b int) server blackhole;   CREATE FOREIGN
TABLE  andrew=# set client_min_messages = debug1;   SET   andrew=# insert into bh select 'a',x from
generate_series(1,5)x;   DEBUG:  entering function blackhole_fdw_handler   DEBUG:  entering function
blackholePlanForeignModify  DEBUG:  entering function blackhole_fdw_handler   DEBUG:  entering function
blackholeBeginForeignModify  DEBUG:  entering function blackholeExecForeignInsert   DEBUG:  entering function
blackholeExecForeignInsert  DEBUG:  entering function blackholeExecForeignInsert   DEBUG:  entering function
blackholeExecForeignInsert  DEBUG:  entering function blackholeExecForeignInsert   DEBUG:  entering function
blackholeEndForeignModify  INSERT 0 5   andrew=# insert into bh select 'a',x from generate_series(1,5) x;   DEBUG:
enteringfunction blackhole_fdw_handler   DEBUG:  entering function blackholePlanForeignModify   DEBUG:  entering
functionblackholeBeginForeignModify   DEBUG:  entering function blackholeExecForeignInsert   DEBUG:  entering function
blackholeExecForeignInsert  DEBUG:  entering function blackholeExecForeignInsert   DEBUG:  entering function
blackholeExecForeignInsert  DEBUG:  entering function blackholeExecForeignInsert   DEBUG:  entering function
blackholeEndForeignModify  INSERT 0 5   andrew=#
 

cheers

andrew





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

Предыдущее
От: David Rowley
Дата:
Сообщение: Remove some duplicated words in comments
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: moving from contrib to bin