| 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: | Whole Thread | Raw Message | 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
| 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 |