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

Aihua Xu updated HIVE-20331:
----------------------------
    Status: Patch Available  (was: Open)

patch-1: The MR physical optimizer traverses the operator tree to generate the 
MR tasks starting from top TS operators. During the traverse, GenMRProcContext 
context is shared to carry over some necessary info across the optimizer rules, 
while some of the info like currUnionOp should be reset when the new TS is 
visited, otherwise, when the descendent  operators of such new TS were visited, 
 they would incorrectly refer to previous currUnionOp and later GenMRFileSink1 
would incorrectly optimize Union plan.

This patch resets some fields in the GenMRProcContext when the new TS is 
visited.

> Query with union all, lateral view and Join fails with "cannot find parent in 
> the child operator"
> -------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-20331
>                 URL: https://issues.apache.org/jira/browse/HIVE-20331
>             Project: Hive
>          Issue Type: Bug
>          Components: Physical Optimizer
>    Affects Versions: 2.1.1
>            Reporter: Aihua Xu
>            Assignee: Aihua Xu
>            Priority: Major
>         Attachments: HIVE-20331.1.patch
>
>
> The following query with Union, Lateral view and Join will fail during 
> execution with the exception below.
> {noformat}
> create table t1(col1 int);
> SELECT 1 AS `col1`
> FROM t1
> UNION ALL
>   SELECT 2 AS `col1`
>   FROM
>     (SELECT col1
>      FROM t1
>     ) x1
>     JOIN
>       (SELECT col1
>       FROM
>         (SELECT 
>           Row_Number() over (PARTITION BY col1 ORDER BY col1) AS `col1`
>         FROM t1
>         ) x2 lateral VIEW explode(map(10,1))`mapObj` AS `col2`, `col3`
>       ) `expdObj`      
> {noformat}
> {noformat}
> Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive internal 
> error: cannot find parent in the child operator!
>         at 
> org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:362) 
> ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
>         at 
> org.apache.hadoop.hive.ql.exec.MapOperator.initializeMapOperator(MapOperator.java:509)
>  ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
>         at 
> org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:116) 
> ~[hive-exec-4.0.0-SNAPSHOT.jar:4.0.0-SNAPSHOT]
> {noformat}
> After debugging, seems we have issues in GenMRFileSink1 class in which we are 
> setting incorrect aliasToWork to the MapWork.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to