This patch fixes two bugs.
One is wrong projection push down (PPD). See the example, reproducing the bug:
The above query includes one left outer join (LOJ) and one join filter. Since this join filter R_NAME in ('AMERICA', 'ASIA') includes column references corresponding to the row preserved table region, the join filter is placed on the LOJ operator. It only results in the sub expression push down of RowConstantEval and replaces right expression of IN predicate by FieldEval. But, we assume that the RHS of InEval is always RowConstantEval. This is the main clause of this bug.
The second bug is that HashLeftOuterJoin results in wrong result when it has join filter corresponding to row preserved table like the above example query.
In order to fix this bug, we have to skip the right iterator of hash table when if the joined tuple is filtered.