You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Tamas Mate (JIRA)" <ji...@apache.org> on 2019/06/27 13:26:00 UTC
[jira] [Created] (IMPALA-8718) Incorrect AnalysisException with
outer join complex type column
Tamas Mate created IMPALA-8718:
----------------------------------
Summary: Incorrect AnalysisException with outer join complex type column
Key: IMPALA-8718
URL: https://issues.apache.org/jira/browse/IMPALA-8718
Project: IMPALA
Issue Type: Bug
Components: Frontend
Affects Versions: Impala 2.10.0
Reporter: Tamas Mate
Although user is not explicitly specifying {{IS}} {{NOT NULL}} predicate the query fails with:
{code:java}
org.apache.impala.common.AnalysisException: IS NOT NULL predicate does not support complex types: col3 IS NOT NULL.
{code}
When a complex type is on the right hand side of the join it is [wrapped|https://github.com/apache/impala/blob/master/fe/src/main/java/org/apache/impala/planner/SingleNodePlanner.java#L1114] by IsNullPredicate, as it could be null at the end of the join. Which is caught by this [condition|https://github.com/apache/impala/blob/master/fe/src/main/java/org/apache/impala/analysis/IsNullPredicate.java#L124] later. The following exception is thrown:
{code:java}
I0620 04:11:29.498865 474227 jni-util.cc:211] java.lang.IllegalStateException: org.apache.impala.common.AnalysisException: IS NOT NULL predicate does not support complex types: col3 IS NOT NULL
at org.apache.impala.analysis.Expr.analyzeNoThrow(Expr.java:362)
at org.apache.impala.analysis.TupleIsNullPredicate.requiresNullWrapping(TupleIsNullPredicate.java:158)
at org.apache.impala.analysis.TupleIsNullPredicate.wrapExpr(TupleIsNullPredicate.java:133)
at org.apache.impala.analysis.TupleIsNullPredicate.wrapExprs(TupleIsNullPredicate.java:122)
at org.apache.impala.planner.SingleNodePlanner.createInlineViewPlan(SingleNodePlanner.java:1042)
at org.apache.impala.planner.SingleNodePlanner.createTableRefNode(SingleNodePlanner.java:1454)
at org.apache.impala.planner.SingleNodePlanner.createTableRefsPlan(SingleNodePlanner.java:778)
at org.apache.impala.planner.SingleNodePlanner.createSelectPlan(SingleNodePlanner.java:616)
at org.apache.impala.planner.SingleNodePlanner.createQueryPlan(SingleNodePlanner.java:259)
at org.apache.impala.planner.SingleNodePlanner.createSingleNodePlan(SingleNodePlanner.java:149)
at org.apache.impala.planner.Planner.createPlan(Planner.java:98)
at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1005)
at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1101)
at org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:156)
Caused by: org.apache.impala.common.AnalysisException: IS NOT NULL predicate does not support complex types: col3 IS NOT NULL
at org.apache.impala.analysis.IsNullPredicate.analyzeImpl(IsNullPredicate.java:127)
at org.apache.impala.analysis.Expr.analyze(Expr.java:343)
at org.apache.impala.analysis.Expr.analyzeNoThrow(Expr.java:360)
... 13 more
{code}
I believe the nullable is necessary, but the error message for this condition is incorrect. The issue can be reproduced with the following queries.
{code:java}
create table sample_test_1
(col1 string,
col2 string,
col3 array<struct<col31:string,col32:int>>);
create table sample_test_2
(col1 string,
col2 string);
with leftSide as
(
select col1
from sample_test_2
),
rightSide as
(
select t.col1,
rank() over(order by t.col1) as rnk
from sample_test_1 t
left outer join t.col3
)
select *
from leftSide l
left join rightSide r
on l.col1 = r.col1
{code}
cc.: [~ychena]
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)