Re: Oddity in EXPLAIN for foreign/custom join pushdown plans

From: Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
To: Kouhei Kaigai <kaigai(at)ak(dot)jp(dot)nec(dot)com>, Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>
Cc: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Oddity in EXPLAIN for foreign/custom join pushdown plans
Date: 2016-08-02 04:19:00
Message-ID: c24b6c5e-a485-06d7-664e-63609c864d4e@lab.ntt.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2016/08/01 22:25, Kouhei Kaigai wrote:

I wrote:
>>> a broader
>>> word like "Processing" seems to work well because we allow various
>>> kinds of operations to the remote side, in addition to scans/joins,
>>> to be performed in that one Foreign Scan node indicated by "Foreign
>>> Processing", such as aggregation, window functions, distinct, order
>>> by, row locking, table modification, or combinations of them.

>> On 2016/07/29 13:28, Ashutosh Bapat wrote:
>>> "Scan" is a better word than "Processing". From plan's perspective it's
>>> ultimately a Scan (on the data produced by the foreign server) and not
>>> processing.

I wrote:
>> Exactly, but one thing I'm concerned about is the table modification
>> case; the EXPLAIN output would be something like this:
>>
>> Foreign Scan
>> Remote SQL: INSERT INTO remote_table VALUES ...
>>
>> That would be strange, so I think a more broader word is better. I
>> don't think "Foreign Processing" is best. "Foreign Upper" might be much
>> better because the corresponding path is created by calling
>> GetForeignUpperPaths.

> Be "Foreign %s", and gives "Insert" label by postgres_fdw; which knows
> the ForeignScan node actually insert tuples.
> From the standpoint of users, it looks "Foreign Insert".

My concern here is EXPLAIN for foreign joins. I think it's another
problem how we handle Foreign Scan plan nodes representing
post-scan/join operations in EXPLAIN, so I'd like to leave that for
another patch.

I wrote:
>> Also for a Foreign Scan representing a foreign join, I think "Foreign
>> Join" is better than "Foreign Scan". Here is an example:
>>
>> Foreign Join on foreign_table1, foreign_table2
>> Remote SQL: SELECT ... FROM remote_table1 INNER JOIN remote_table2
>> WHERE ...
>>
>> I think "Foreign Join" better indicates that foreign tables listed after
>> that (ie, foreign_table1 and foreign_table2 in the example) are joining
>> (or component) tables of this join, than "Foreign Scan".

> Postgres_fdw knows it is remote join. It is quite easy to tell the core
> this ForeignScan node is "Join". Also, it knows which tables are involved in.

Yeah, we can do that.

> We can add hint information to control relations name to be printed.

For foreign joins, it would make sense to add such a functionality when
necessary, for example when we extend the pushdown feature so that we
can do what you proposed upthread.

Best regards,
Etsuro Fujita

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kyotaro HORIGUCHI 2016-08-02 04:26:36 Re: Wrong defeinition of pq_putmessage_noblock since 9.5
Previous Message Robert Haas 2016-08-02 03:40:40 Re: old_snapshot_threshold allows heap:toast disagreement