diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index 2cd6282..e98baf2 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -1089,8 +1089,8 @@ select_operator_clauses(PlannerInfo *root, if (joinremovalOK && restrictinfo->mergeopfamilies != NIL) { Expr *expr = (Expr *) restrictinfo->clause; - Node *outernode = restrictinfo->outer_is_left ? get_leftop(expr) - : get_rightop(expr); + Node *outernode = restrictinfo->outer_is_left ? get_rightop(expr) + : get_leftop(expr); if (IsA(outernode, Var)) { poc->joinremovalclause_list = diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 105bee5..245dbcf 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -1265,8 +1265,8 @@ relation_is_distinct_for(RelOptInfo *rel, List *colnos, List *restrictlist) * index column is one of the opfamilies to which the opclause's * opearator belongs. */ - if (rinfo != NULL - && list_member_oid(rinfo->mergeopfamilies, ind->opfamily[c])) + if (rinfo == NULL + || !list_member_oid(rinfo->mergeopfamilies, ind->opfamily[c])) break; }