Re: WIP: Join push-down for foreign tables

From: Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
To: Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Robert Haas <robertmhaas(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: WIP: Join push-down for foreign tables
Date: 2011-10-24 11:40:30
Message-ID: 4EA54EAE.2020405@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

(2011/10/21 23:53), Kohei KaiGai wrote:
> How about the current status of this patch, although it is still
> "Waiting on author".

I've found some issues for this CF item, and I would need some more
effort to solve them. So I'll mark this item as "Returned with
feedback", and I'll propose this idea again for next CF (2011-11). Then
I'll work with some other items in current CF (2011-09), which are
enough easy for me to work on.

> If Hanada-san would propose contrib/pgsql_fdw as a basis of join-pushdown
> feature, I'll likely volunteer to review the patch.
> I'm also interested in this feature. Hopefully, I'd like to try other
> kind of pushing
> down (such as aggregate, sort, ...) or updatable foreign tables. :-)

Thanks for the offer. I'd like to propose pgsql_fdw as a contrib module
for 9.2. I've attached tree patches of revised version of pgsql_fdw
which doesn't have join-push-down capability, but IMO it would be enough
for basis of various push-down enhancement. Note that I chose the name
"pgsql_fdw" to avoid naming conflict with existing validator
postgresql_fdw_validator, which has been in core since 8.4 and used by
contrib/dblink.

It might be useful and reasonable to integrate pgsql_fdw_validator into
postgresql_fdw_validator and use it as a common validator for
contrib/dblink and new FDW postgresql_fdw, but I didn't do so (at least
not yet) because it would confuse users of contrib/dblink by accepting
non-libpq options.

- fdw_helper_doc.patch
This patch adds new document section describing about FDW helper
functions into "Chapter 50. Writing A Foreign Data Wrapper". This can
be back-patched to 9.1 because this patch contains only functions which
were introduced at 9.1 release.

- fdw_helper_funcs.patch (requires above patch has been applied)
This patch contains two new FDW helper functions.
GetForeignColumnOptions(), which retrieves all FDW options of a column
of a foreign table. This would be useful not only for pgsql_fdw but
also any FDW which have per-column FDW options.
This patch also adds GetFdwOptionValue(), which returns finest-grained
FDW option value for an option set on given foreign table or its column.
This would be useful for FDWs which accept an option on multiple object
level, e.g. such as foreign table and foreign server; this kind of usage
was mentioned by David Fetter in this message.
http://archives.postgresql.org/pgsql-hackers/2011-10/msg00483.php

- pgsql_fdw.patch (requires above patches have been applied)
This patch provides FDW for external PostgreSQL servers. Note that this
FDW uses pgsql_fdw_validator for its validator, not a built-in
postgresql_fdw_validator. Please see SGML document for details of this FDW.

Regards,
--
Shigeru Hanada

Attachment Content-Type Size
fdw_helper_doc.patch text/plain 3.6 KB
fdw_helper_funcs.patch text/plain 8.1 KB
pgsql_fdw.patch text/plain 99.6 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2011-10-24 11:46:59 Re: Updated version of pg_receivexlog
Previous Message desmodemone 2011-10-24 11:31:07 Re: [9.1] unusable for large views