Hello Quanlong Huang, Tim Armstrong, Impala Public Jenkins, I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/14813 to look at the new patch set (#2). Change subject: IMPALA-9162: Do not apply inferred predicate to outer joins ...................................................................... IMPALA-9162: Do not apply inferred predicate to outer joins When the planner migrates predicates to inline views, it also creates equivalent predicates based on the value transfer graph which is built by transitive relationships among join conditions. These newly inferred predicates are placed typically as 'other predicates' of an inner or outer join. However, for outer joins, this has the effect of adding extra predicates in the WHERE clause which is incorrect since it may filter NULL values. Since the original query did not have null filtering conditions in the WHERE clause, we should not add new ones. This fix does 2 things: - At the time of creating the values transfer graph in Analyzer, don't add a directed edge between two slots if the first slot references the output tuple of an outer join. - During the migration of conjuncts to inline views, analyze the predicate of type A <op> B and if it is an inferred predicate AND either the left or right slots reference the output tuple of an outer join, the inferred predicate is ignored. This serves as a safety check in case any unqualified predicate 'fell through' until this stage of planning. Note that simple queries with combination of inner and outer joins may not reproduce the problem. Due to the nature of predicate inferencing, some combination of subqueries, inner joins, outer joins is needed. For the query pattern, please see the example in the JIRA. Tests: - Added plan tests with left and right outer joins to inline-view.test - Manually ran few queries on impala shell to verify result correctness: by checking that NULL values are being produced for outer joins. - Ran regression tests on jenkins Change-Id: Ie9521bd768c4b333069c34d5c1e11b10ea535827 --- M fe/src/main/java/org/apache/impala/analysis/Analyzer.java M fe/src/main/java/org/apache/impala/analysis/BinaryPredicate.java M fe/src/main/java/org/apache/impala/planner/SingleNodePlanner.java M testdata/workloads/functional-planner/queries/PlannerTest/inline-view.test 4 files changed, 169 insertions(+), 21 deletions(-) git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/13/14813/2 -- To view, visit http://gerrit.cloudera.org:8080/14813 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie9521bd768c4b333069c34d5c1e11b10ea535827 Gerrit-Change-Number: 14813 Gerrit-PatchSet: 2 Gerrit-Owner: Aman Sinha <amsi...@cloudera.com> Gerrit-Reviewer: Aman Sinha <amsi...@cloudera.com> Gerrit-Reviewer: Impala Public Jenkins <impala-public-jenk...@cloudera.com> Gerrit-Reviewer: Quanlong Huang <huangquanl...@gmail.com> Gerrit-Reviewer: Tim Armstrong <tarmstr...@cloudera.com>