Description
should the result of query A:
select s.aa, s.bb, c.key keyc from (select a.key aa, b.key bb from src a left outer join src b on a.key=b.key) s left outer join src c on s.bb=c.key and s.bb<10 where s.aa<20;
be the same as query B:
select a.key keya, b.key keyb, c.key keyc from src a left outer join src b on a.key=b.key left outer join src c on b.key=c.key and b.key<10 where a.key<20;
?
Currently, the result is different, query B gets wrong result!
In SemanticAnalyzer.java, mergeJoins():
ArrayList<ArrayList<ASTNode>> filters = target.getFilters();
for (int i = 0; i < nodeRightAliases.length; i++) {
filters.add(node.getFilters().get(i + 1));
}
filters in node.getFilters().get(0) are lost.