From: | Etsuro Fujita <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp> |
---|---|
To: | Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Odd system-column handling in postgres_fdw join pushdown patch |
Date: | 2016-03-23 02:50:48 |
Message-ID: | 56F20488.8010608@lab.ntt.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2016/03/22 21:10, Ashutosh Bapat wrote:
> On Tue, Mar 22, 2016 at 5:05 PM, Etsuro Fujita
> <fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp <mailto:fujita(dot)etsuro(at)lab(dot)ntt(dot)co(dot)jp>> wrote:
> On 2016/03/22 14:54, Ashutosh Bapat wrote:
> Earlier in this mail chain, I suggested that the core should
> take care
> of storing the values for these columns. But instead, I think, core
> should provide functions which can be used by FDWs, if they want, to
> return values for those columns. Something like Datum
> get_syscol_value(RelOptInfo/Relation, attno). The function will
> return
> Datum 0 for most of the columns and table's OID for tableoid. My
> 0.02.
> What I had in mind was (1) create_foreignscan_plan would create
> Lists from the ForeignScan's fdw_scan_tlist: (a) indexes/OID values
> of tableoids in fdw_scan_tlist, and (b) indexes of xids and cids in
> fdw_scan_tlist, and then (2) ForeignNext would set the OID values
> for the tableoid columns in the scan tuple, using the Lists (a), and
> appropriate values (0 or something) for the xid and cid columns in
> the scan tuple, using the List (b).
> Looks Ok to me, although, that way an FDW looses an ability to use its
> own values for those columns, in case it wants to. For example, while
> using postgres_fdw for sharding, it might help saving xmax, xmin, cmax,
> cmin from the foreign server and use them while communicating with the
> foreign server.
Yeah, it might be the case.
On second thoughts, I changed my mind; I think it'd be better for the
FDW's to set values for tableoids, xids, and cids in the scan tuple.
The reason other than your suggestion is because expressions in
fdw_scan_tlist that contain such columns are not necessarily simple Vars
and because such expressions might be evaluated more efficiently by the
FDW than core. We assume in postgres_fdw that expressions in
fdw_scan_tlist are always simple Vars, though.
I'm not sure it's worth providing functions you suggested, because we
can't assume that columns in the scan tuple are always simple Var
columns, as I said above.
Best regards,
Etsuro Fujita
From | Date | Subject | |
---|---|---|---|
Next Message | Constantin S. Pan | 2016-03-23 02:57:37 | Re: [WIP] speeding up GIN build with parallel workers |
Previous Message | Noah Misch | 2016-03-23 02:44:45 | Re: Missing rows with index scan when collation is not "C" (PostgreSQL 9.5) |