Re: postgres_fdw bug in 9.6

Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>

From: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
To: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Cc: David Steele <david@pgmasters.net>, Robert Haas <robertmhaas@gmail.com>, Jeff Janes <jeff.janes@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-04-04T09:01:36Z
Lists: pgsql-hackers

Attachments

On 2017/04/04 14:38, Ashutosh Bapat wrote:
> Probably we should use "could not be created" instead of "was not
> created" in "... a local path suitable for EPQ checks was not created".

Done.

> "outer_path should not require relations from inner_path" may be
> reworded as "outer paths should not be parameterized by the inner
> relations".
>
> "neither path should require relations from the other path" may be
> reworded as "neither path should be parameterized by the the other
> joining relation".

Done.  I used "input" instead of "joining" in the latter, though.

>         Why JOIN_RIGHT is being treated differently from JOIN_LEFT? We
>         should be able
>         to create a nested loop join for JOIN_RIGHT?
>         +        case JOIN_RIGHT:
>         +        case JOIN_FULL:
>
>
>     I don't think so, because nestloop joins aren't supported for
>     JOIN_RIGHT.  See ExecInitNestLoop().
>
>
> Hmm, I see in match_unsorted_outer()
> 1254         case JOIN_RIGHT:
> 1255         case JOIN_FULL:
> 1256             nestjoinOK = false;
> 1257             useallclauses = true;
> 1258             break;

Yeah, I should have pointed that out as well.

I rebased the patch also.  Please find attached an updated version of 
the patch.

Best regards,
Etsuro Fujita

Commits

  1. Fix test case for 'outer pathkeys do not match mergeclauses' fix.

  2. postgres_fdw: Avoid 'outer pathkeys do not match mergeclauses' error.

  3. postgres_fdw: Consider foreign joining and foreign sorting together.

  4. Allow foreign and custom joins to handle EvalPlanQual rechecks.

  5. Allow FDWs to push down quals without breaking EvalPlanQual rechecks.