[ 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)