From:
Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
To:
Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc:
Robert Haas <robertmhaas(at)gmail(dot)com>,
Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at>,
Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>,
Hitoshi Harada <umi(dot)tanuki(at)gmail(dot)com>,
Martijn van Oosterhout <kleptog(at)svana(dot)org>,
PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject:
Re: pgsql_fdw, FDW for PostgreSQL server
Date:
2011-12-14 14:02:28
Message-ID:
4EE8AC74.3020200@gmail.com (view raw or flat )
Thread:
2011-10-25 09:11:00 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-10-25 10:15:21 from Magnus Hagander <magnus(at)hagander(dot)net>
2011-10-25 12:08:37 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-10-25 12:24:39 from Magnus Hagander <magnus(at)hagander(dot)net>
2011-10-25 12:39:37 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2011-10-25 12:51:53 from Stephen Frost <sfrost(at)snowman(dot)net>
2011-10-26 14:49:17 from Dimitri Fontaine <dimitri(at)2ndQuadrant(dot)fr>
2011-10-25 13:22:37 from Marko Kreen <markokr(at)gmail(dot)com>
2011-10-26 08:26:00 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-10-26 14:37:00 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-10-26 16:47:31 from Magnus Hagander <magnus(at)hagander(dot)net>
2011-10-26 17:25:32 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-10-26 17:27:38 from Magnus Hagander <magnus(at)hagander(dot)net>
2011-10-26 17:30:46 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-10-26 14:44:48 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-10-26 14:57:48 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2011-10-28 13:51:06 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-10-29 07:25:46 from Hitoshi Harada <umi(dot)tanuki(at)gmail(dot)com>
2011-10-29 12:17:34 from Martijn van Oosterhout <kleptog(at)svana(dot)org>
2011-10-29 15:13:45 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-10-29 21:34:49 from Hitoshi Harada <umi(dot)tanuki(at)gmail(dot)com>
2011-10-29 21:42:36 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-10-30 02:34:06 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-10-31 08:14:23 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-10-31 12:24:09 from Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
2011-11-15 16:55:08 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-11-19 17:42:39 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2011-11-28 11:00:23 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-11-28 13:59:31 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-11-29 09:25:53 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2011-12-07 07:34:45 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-12-10 07:49:40 from Greg Smith <greg(at)2ndQuadrant(dot)com>
2011-12-12 13:59:59 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-12-13 02:46:10 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-12-13 05:46:37 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-12-13 09:57:49 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2011-12-13 11:04:18 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2011-12-13 11:44:04 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-12-13 12:22:24 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-12-14 14:02:28 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-12-19 19:13:02 from Greg Smith <greg(at)2ndQuadrant(dot)com>
2012-01-29 19:39:19 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2012-01-31 18:56:09 from Robert Haas <robertmhaas(at)gmail(dot)com>
2012-02-02 02:32:03 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-02 09:24:55 from Marko Kreen <markokr(at)gmail(dot)com>
2012-02-06 00:28:48 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-08 12:24:40 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-01 11:15:57 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-05 20:08:10 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2012-02-06 08:37:16 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-08 11:51:29 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-10 11:39:55 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-13 11:50:34 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-02-14 06:15:54 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-14 08:40:48 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-02-14 10:42:30 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-14 11:40:27 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-02-14 14:50:21 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-02-15 11:50:16 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-02-21 11:25:25 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-03-05 09:21:19 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-05 12:00:46 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-03-05 12:05:58 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-03-05 13:03:29 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-05 17:58:11 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-05 21:19:40 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-06 12:09:53 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-14 09:09:54 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-15 15:09:57 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2012-02-16 13:41:01 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-16 15:15:55 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-02-17 00:52:50 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-17 12:08:47 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-02-20 09:18:33 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-02-20 14:57:02 from "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov>
2012-02-20 15:51:17 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-02-20 15:58:23 from "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov>
2012-02-20 23:07:58 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-23 05:14:07 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-24 22:31:47 from Peter Eisentraut <peter_e(at)gmx(dot)net>
2012-02-28 07:46:54 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-28 15:27:36 from Robert Haas <robertmhaas(at)gmail(dot)com>
2012-02-28 16:02:27 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-02-28 16:20:36 from Robert Haas <robertmhaas(at)gmail(dot)com>
2012-02-28 19:07:08 from Peter Eisentraut <peter_e(at)gmx(dot)net>
2012-02-29 10:34:23 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-29 10:37:46 from Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
2012-02-29 15:33:04 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-01 11:56:02 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-01 17:00:36 from Peter Eisentraut <peter_e(at)gmx(dot)net>
2012-03-02 01:35:32 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-06 18:39:40 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-07 20:44:38 from Peter Eisentraut <peter_e(at)gmx(dot)net>
2012-04-11 09:30:43 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-28 19:33:08 from "David E(dot) Wheeler" <david(at)justatheory(dot)com>
2012-03-06 10:09:08 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-03-06 12:37:20 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-06 14:47:39 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-03-10 03:35:52 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-07 00:01:46 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-07 12:47:59 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-07 23:38:31 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-08 10:18:03 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-08 16:18:02 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-09 05:00:01 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-09 12:54:03 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-03-09 14:48:51 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-12 04:04:12 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-03-12 08:07:30 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-03-10 02:52:18 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-10 16:34:33 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-15 14:06:18 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-26 09:46:20 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-27 09:36:54 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-03-27 11:14:09 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-27 11:49:07 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-03-28 07:18:36 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-03-28 12:25:45 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-29 15:46:03 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-04-03 13:31:46 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-04-04 06:43:34 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-04-04 14:16:24 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-04-05 16:29:23 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-04-06 10:39:36 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-04-06 12:54:57 from Kyotaro HORIGUCHI <kyota(dot)horiguchi(at)gmail(dot)com>
2012-04-06 14:20:18 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-04-06 16:14:31 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-04-06 16:38:22 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-04-07 01:32:33 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-04-07 20:19:21 from Thom Brown <thom(at)linux(dot)com>
2012-04-09 05:37:53 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-04-09 05:41:35 from Gerald Devotta <gdevotta(at)newtglobal(dot)com>
2012-04-09 09:11:39 from Thom Brown <thom(at)linux(dot)com>
2012-04-06 11:44:52 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-28 12:07:21 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-03-28 13:11:47 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-04-05 12:36:09 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-04-05 12:49:03 from "Etsuro Fujita" <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2012-03-27 11:32:16 from Thom Brown <thom(at)linux(dot)com>
2012-03-28 01:41:01 from Shigeru HANADA <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-28 07:13:29 from Thom Brown <thom(at)linux(dot)com>
2012-03-28 07:39:18 from Thom Brown <thom(at)linux(dot)com>
2012-03-28 11:00:40 from Thom Brown <thom(at)linux(dot)com>
2012-03-10 03:33:49 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-03-10 16:38:51 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2012-03-10 17:13:17 from Martijn van Oosterhout <kleptog(at)svana(dot)org>
2012-03-12 09:08:10 from "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
2012-02-16 17:02:59 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2012-02-17 05:08:42 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2012-02-18 21:07:14 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2012-02-16 17:38:01 from Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
2011-11-25 08:27:53 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2011-11-28 11:50:27 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
2011-11-29 04:16:01 from Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>
2011-10-30 01:22:23 from Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
Lists:
pgsql-hackers
(2011/12/13 14:46), Tom Lane wrote:
> Shigeru Hanada<shigeru(dot)hanada(at)gmail(dot)com> writes:
>> Agreed. How about to add a per-column boolean FDW option, say
>> "pushdown", to pgsql_fdw? Users can tell pgsql_fdw that the column can
>> be pushed down safely by setting this option to true.
>
> [ itch... ] That doesn't seem like the right level of granularity.
> ISTM the problem is with whether specific operators have the same
> meaning at the far end as they do locally. If you try to attach the
> flag to columns, you have to promise that *every* operator on that
> column means what it does locally, which is likely to not be the
> case ever if you look hard enough. Plus, having to set the flag on
> each individual column of the same datatype seems pretty tedious.
Indeed, I too think that labeling on each columns is not the best way,
but at that time I thought that it's a practical way, in a way. IOW, I
chose per-column FDW options as a compromise between never-push-down and
indiscriminate-push-down.
Anyway, ISTM that we should consider various mapping for
functions, operators and collations to support push-down in general
way, but it would be hard to accomplish in this CF.
Here I'd like to propose three incremental patches:
1) fdw_helper_funcs_v3.patch: This is not specific to pgsql_fdw, but
probably useful for every FDWs which use FDW options. This patch
provides some functions which help retrieving FDW options from catalogs.
This patch also enhances document about existing FDW helper functions.
2) pgsql_fdw_v5.patch: This patch provides simple pgsql_fdw
which does *NOT* support any push-down. All data in remote table are
retrieved for each foreign scan, and conditions are always evaluated on
local side. This is safe about semantics difference between local and
remote, but very inefficient especially for large remote tables.
3) pgsql_fdw_pushdown_v1.patch: This patch adds limited push-down
capability to pgsql_fdw which is implemented by previous patch. The
criteria for pushing down is little complex. I modified pgsql_fdw to
*NOT* push down conditions which contain any of:
a) expression whose result collation is valid
b) expression whose input collation is valid
c) expression whose result type is user-defined
d) expression which uses user-defined function
e) array expression whose elements has user-defined type
f) expression which uses user-defined operator
g) expression which uses mutable function
As the result, pgsql_fdw can push down very limited conditions such as
numeric comparisons, but it would be still useful. I hope that these
restriction are enough to avoid problems about semantics difference
between remote and local.
To implement d), I added exprFunction to nodefuncs.c which returns Oid
of function which is used in the expression node, but I'm not sure that
it should be there. Should we have it inside pgsql_fdw?
I'd like to thank everyone who commented on this topic!
Regards,
--
Shigeru Hanada
In response to
Responses
pgsql-hackers by date
Next :From: Alvaro HerreraDate: 2011-12-14 14:05:24
Subject : Re: Command Triggers
Previous :From : Robert HaasDate : 2011-12-14 14:00:12
Subject : Re: COUNT(*) and index-only scans