You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "pengdou1990 (Jira)" <ji...@apache.org> on 2021/09/01 04:21:00 UTC
[jira] [Created] (IMPALA-10902) In the case of outer join
connections, avoid unnecessary BE check
pengdou1990 created IMPALA-10902:
------------------------------------
Summary: In the case of outer join connections, avoid unnecessary BE check
Key: IMPALA-10902
URL: https://issues.apache.org/jira/browse/IMPALA-10902
Project: IMPALA
Issue Type: Improvement
Reporter: pengdou1990
It is incorrect to propagate predicates into a plan subtree that is on the
nullable side of an outer join if the predicate evaluates to true when all its referenced tuples are NULL. For example:
{code:java}
select * from (select A.a, B.b, B.col from A left join B on A.a=B.b) v
where v.col is null{code}
In this query (v.col is null) should not be evaluated at the scanner of B.
To Resolve the problem, outer join child nodes has to ensure the predicate response true if all related slots are null by call the following function.
{code:java}
org.apache.impala.analysis.Analyzer#isTrueWithNullSlots
{code}
the function finally call expensive BE Native function.
if the sql contains hundreds of outer join and the predicate is instance of inPredicate and in predicate has thousands of literal, the BE Native function will be called hundreds time, cause create single node quite slow, as long as several seconds
As some predicate can check is True With Null Slots in FE, so it needn't to check at BE, if we avoid unnecessary BE check, the creation of single node plan create procedure may be accelerated
--
This message was sent by Atlassian Jira
(v8.3.4#803005)