Re: Optimization for updating foreign tables in Postgres FDW - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: Optimization for updating foreign tables in Postgres FDW
Date
Msg-id CAB7nPqQ5RBHo59Mbb3SCOqsnVG-p5nRuUtuXkr6R_=4Kv9kLhg@mail.gmail.com
Whole thread Raw
In response to Re: Optimization for updating foreign tables in Postgres FDW  (Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>)
Responses Re: Optimization for updating foreign tables in Postgres FDW  (Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>)
List pgsql-hackers
On Thu, Apr 14, 2016 at 10:44 AM, Etsuro Fujita
<fujita.etsuro@lab.ntt.co.jp> wrote:
> On 2016/04/13 21:50, Michael Paquier wrote:
>> On Wed, Apr 13, 2016 at 9:46 PM, Robert Haas <robertmhaas@gmail.com>
>> wrote:
>>> On Tue, Apr 12, 2016 at 10:24 PM, Etsuro Fujita
>>> <fujita.etsuro@lab.ntt.co.jp> wrote:
>>>>>
>>>>> How about we encapsulate the while (PQisBusy(...)) loop into a new
>>>>> function pgfdw_get_result(), which can be called after first calling
>>>>> PQsendQueryParams()?  So then this code will say dmstate->result =
>>>>> pgfdw_get_result(dmstate->conn).  And we can do something similar for
>>>>> the other call to PQexecParams() in create_cursor().  Then let's also
>>>>> add something like pgfdw_exec_query() which calls PQsendQuery() and
>>>>> then pgfdw_get_result, and use that to replace all of the existing
>>>>> calls to PQexec().
>>>>>
>>>>> Then all the SQL postgres_fdw executes would be interruptible, not
>>>>> just the new stuff.
>
> I would be happy if you work on that.

OK, so I have finished with the attached. One thing that I noticed in
the previous patch version is that it completely ignored cases where
multiple PGresult could be returned by server, say when multiple
queries are sent in the same string: PQexec gets always the last one,
so I think that we had better do the same here. I have switched all
the PQexec calls to a custom routine that combines
PQsendQuery/PQgetResult, and PQexecParams is switched to
PQsendQueryParams/PQgetResult. This structure allows all queries run
though postgres_fdw.c to be interruptible.
--
Michael

Attachment

pgsql-hackers by date:

Previous
From: Fujii Masao
Date:
Subject: Re: [COMMITTERS] pgsql: Add regression tests for multiple synchronous standbys.
Next
From: Michael Paquier
Date:
Subject: Rework help interface of vcregress.pl