Re: Foreign join pushdown vs EvalPlanQual - Mailing list pgsql-hackers

From Etsuro Fujita
Subject Re: Foreign join pushdown vs EvalPlanQual
Date
Msg-id 56172DCE.7080604@lab.ntt.co.jp
Whole thread Raw
In response to Re: Foreign join pushdown vs EvalPlanQual  (Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>)
Responses Re: Foreign join pushdown vs EvalPlanQual  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
Re: Foreign join pushdown vs EvalPlanQual  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
On 2015/10/08 19:55, Etsuro Fujita wrote:
> I noticed that the approach using a column to populate the foreign
> scan's slot directly wouldn't work well in some cases.  For example,
> consider:
>
> SELECT * FROM verysmall v LEFT JOIN (bigft1 JOIN bigft2 ON bigft1.x =
> bigft2.x) ON v.q = bigft1.q AND v.r = bigft2.r FOR UPDATE OF v;

Oops, I should have written "JOIN", not "LEFT JOIN".

> The best plan is presumably something like this as you said before:
>
> LockRows
> -> Nested Loop
>     -> Seq Scan on verysmall v
>     -> Foreign Scan on bigft1 and bigft2
>          Remote SQL: SELECT * FROM bigft1 JOIN bigft2 ON bigft1.x =
> bigft2.x AND bigft1.q = $1 AND bigft2.r = $2
>
> Consider the EvalPlanQual testing to see if the updated version of a
> tuple in v satisfies the query.  If we use the column in the testing, we
> would get the wrong results in some cases.

More precisely, we would get the wrong result when the value of v.q or 
v.r in the updated version has changed.

I don't have a good idea for this, so would an approach using an local 
join execution plan be the good way to go?

Best regards,
Etsuro Fujita




pgsql-hackers by date:

Previous
From: Stephen Frost
Date:
Subject: Re: RLS bug in expanding security quals
Next
From: Stephen Frost
Date:
Subject: Re: Multi-tenancy with RLS