Re: FDW oddity

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: FDW oddity
Date: 2015-04-12 08:18:38
Message-ID: 552A2A5E.8060005@dunslane.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)dunslane(dot)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

Seems to be explained by this comment in createplan.c:

/*
* If possible, we want to get the FdwRoutine from our
RelOptInfo for
* the table. But sometimes we don't have a RelOptInfo and
must get
* it the hard way. (In INSERT, the target relation is not
scanned,
* so it's not a baserel; and there are also corner cases for
* updatable views where the target rel isn't a baserel.)
*/

cheers

andrew

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message 彭瑞华 2015-04-12 11:52:33 Re: WIP Patch for GROUPING SETS phase 1
Previous Message Heikki Linnakangas 2015-04-12 07:51:42 Re: Remove some duplicated words in comments