Previous fix for "x FULL JOIN y ON true" failed to handle the case
where there was also a WHERE-clause restriction that applied to the join. The check on restrictlist == NIL is really unnecessary anyway, because select_mergejoin_clauses already checked for and complained about any unmergejoinable join clauses. So just take it out.
This commit is contained in:
parent
88c59aeed8
commit
0a7b3a3649
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.82.2.2 2005/01/23 02:23:16 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.82.2.3 2005/05/24 18:03:24 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -498,15 +498,10 @@ match_unsorted_outer(Query *root,
|
|||||||
* nestloop path, but since mergejoin is our only join type that
|
* nestloop path, but since mergejoin is our only join type that
|
||||||
* supports FULL JOIN, it's necessary to generate a clauseless
|
* supports FULL JOIN, it's necessary to generate a clauseless
|
||||||
* mergejoin path instead.
|
* mergejoin path instead.
|
||||||
*
|
|
||||||
* Unfortunately this can't easily be extended to handle the case
|
|
||||||
* where there are joinclauses but none of them use mergejoinable
|
|
||||||
* operators; nodeMergejoin.c can only do a full join correctly if
|
|
||||||
* all the joinclauses are mergeclauses.
|
|
||||||
*/
|
*/
|
||||||
if (mergeclauses == NIL)
|
if (mergeclauses == NIL)
|
||||||
{
|
{
|
||||||
if (jointype == JOIN_FULL && restrictlist == NIL)
|
if (jointype == JOIN_FULL)
|
||||||
/* okay to try for mergejoin */ ;
|
/* okay to try for mergejoin */ ;
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user