Re: [COMMITTERS] pgsql: Only try to push down foreign joins if the user mapping OIDs mat

From: Andres Freund <andres(at)anarazel(dot)de>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [COMMITTERS] pgsql: Only try to push down foreign joins if the user mapping OIDs mat
Date: 2016-03-12 19:46:25
Message-ID: 20160312194625.txlzu22xykgpu66n@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

Hi,

On 2016-03-12 11:56:24 -0500, Robert Haas wrote:
> On Fri, Mar 11, 2016 at 10:15 PM, Andres Freund <andres(at)anarazel(dot)de> wrote:
> > On 2016-01-28 19:09:01 +0000, Robert Haas wrote:
> >> Only try to push down foreign joins if the user mapping OIDs match.
> >>
> >> Previously, the foreign join pushdown infrastructure left the question
> >> of security entirely up to individual FDWs, but it would be easy for
> >> a foreign data wrapper to inadvertently open up subtle security holes
> >> that way. So, make it the core code's job to determine which user
> >> mapping OID is relevant, and don't attempt join pushdown unless it's
> >> the same for all relevant relations.
> >>
> >> Per a suggestion from Tom Lane. Shigeru Hanada and Ashutosh Bapat,
> >> reviewed by Etsuro Fujita and KaiGai Kohei, with some further
> >> changes by me.
> >
> > I noticed that this breaks some citus regression tests in a minor
> > manner. Namely previously file_fdw worked without a user mapping, now it
> > doesn't appear to anymore.
> >
> > This is easy enough to fix, and it's perfectly ok for us to fix this,
> > but I do wonder if that's not going to cause trouble for others.
>
> Hmm, I didn't intend to change that. If that commit broke something,
> there's obviously a hole in our regression test coverage.

CREATE EXTENSION file_fdw;
CREATE SERVER file_server FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE agg_csv (
a int2,
b float4
) SERVER file_server
OPTIONS (format 'csv', filename '/home/andres/src/postgresql/contrib/file_fdw/data/agg.csv', header 'true', delimiter ';', quote '@', escape '"', null '');

SELECT * FROM agg_csv;

worked in 9.5, but doesn't in master. The difference apears to be the
check that's now in build_simple_rel() - there was nothing hitting the
user mapping code before for file_fdw.

- Andres

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2016-03-12 20:17:39 pgsql: Include portability/mem.h into fd.c for MAP_FAILED.
Previous Message Tom Lane 2016-03-12 17:40:36 Re: [COMMITTERS] pgsql: Provide much better wait information in pg_stat_activity.

Browse pgsql-hackers by date

  From Date Subject
Next Message David G. Johnston 2016-03-12 20:01:11 Re: Performance improvement for joins where outer side is unique
Previous Message David G. Johnston 2016-03-12 19:37:03 Re: Performance improvement for joins where outer side is unique