Alex Behm has posted comments on this change. Change subject: IMPALA-3071: Fix assignment of On-clause predicates belonging to an inner join. ......................................................................
Patch Set 2: (1 comment) http://gerrit.cloudera.org:8080/#/c/2309/2/fe/src/main/java/com/cloudera/impala/analysis/Analyzer.java File fe/src/main/java/com/cloudera/impala/analysis/Analyzer.java: Line 1150: if (tids.size() > 1 || isOuterJoined(tids.get(0)) > it looks like this would also capture b.x < 15 in Let's talk f2f about how to proceed here. Notice how the existing function is also wrong in the sense that evalByJoin() may return true for predicates that do not have to be assigned to a join. Like you said isOjJoinConjunct(e) does not mean we need to assign at a join, and similarly isFullOuterJoined(tid) does not mean all predicates bound by tid must be evaluated at a join (the predicates could appear below the full outer join). I tried correcting evalByJoin() to do exactly what it says, but it it difficult because we need to analyze the structure of the TableRefs more closely (which clause does the predicate come from, where are tuples outer joined first/tast, etc.). We basically need to do an analysis similar to my first patch set where we "simulate" a push down. -- To view, visit http://gerrit.cloudera.org:8080/2309 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: comment Gerrit-Change-Id: Iffef7718679d48f866fa90fd3257f182cbb385ae Gerrit-PatchSet: 2 Gerrit-Project: Impala Gerrit-Branch: cdh5-2.5.0_5.7.0 Gerrit-Owner: Alex Behm <[email protected]> Gerrit-Reviewer: Alex Behm <[email protected]> Gerrit-Reviewer: Marcel Kornacker <[email protected]> Gerrit-HasComments: Yes
