[ 
https://issues.apache.org/jira/browse/IMPALA-5562?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Behm resolved IMPALA-5562.
------------------------------------
       Resolution: Fixed
    Fix Version/s: Impala 2.10.0

commit 00535ab1709e8aa5149a2609a5c912455e3678f8
Author: Alex Behm <alex.b...@cloudera.com>
Date:   Thu Jun 22 11:40:06 2017 -0700

    IMPALA-5562: Only recomputeMemLayout() if tuple has a layout.
    
    For queries where plan generation is terminated early due to LIMIT 0
    or similar, some tuples may not have a mem layout because no PlanNode
    has been generated to materialize them. The fix is to make
    recomputeMemLayout() a no-op if the tuple does not have an existing
    mem layout.
    
    Testing:
    - added regression test
    
    Change-Id: I08548c6bfa7dbf4655e55636605bebb89d2a2239
    Reviewed-on: http://gerrit.cloudera.org:8080/7264
    Reviewed-by: Lars Volker <l...@cloudera.com>
    Tested-by: Impala Public Jenkins


> Query involving nested array and limit 0 hits IllegalStateException
> -------------------------------------------------------------------
>
>                 Key: IMPALA-5562
>                 URL: https://issues.apache.org/jira/browse/IMPALA-5562
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Frontend
>    Affects Versions: Impala 2.9.0
>            Reporter: Alexander Behm
>            Assignee: Alexander Behm
>            Priority: Blocker
>              Labels: regression
>             Fix For: Impala 2.10.0
>
>
> Queries involving nested collections (array and map) and limit 0 hit a 
> Preconditions check.
> {code}
> explain select * from tpch_nested_parquet.customer c, c.c_orders limit 0;
> ERROR: IllegalStateException: null
> {code}
> Stack:
> {code}
> I0622 11:26:44.929339 23672 jni-util.cc:176] java.lang.IllegalStateException
>       at 
> com.google.common.base.Preconditions.checkState(Preconditions.java:129)
>       at 
> org.apache.impala.analysis.TupleDescriptor.recomputeMemLayout(TupleDescriptor.java:239)
>       at 
> org.apache.impala.planner.SingleNodePlanner.unmarkCollectionSlots(SingleNodePlanner.java:242)
>       at 
> org.apache.impala.planner.SingleNodePlanner.createEmptyNode(SingleNodePlanner.java:217)
>       at 
> org.apache.impala.planner.SingleNodePlanner.createQueryPlan(SingleNodePlanner.java:252)
>       at 
> org.apache.impala.planner.SingleNodePlanner.createSingleNodePlan(SingleNodePlanner.java:149)
>       at org.apache.impala.planner.Planner.createPlan(Planner.java:90)
>       at 
> org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1008)
>       at 
> org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1104)
>       at 
> org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:156)
> {code}
> *Workaround*
> Use LIMIT 1 instead of LIMIT 0.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to