You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Harish Butani (JIRA)" <ji...@apache.org> on 2013/12/13 23:26:07 UTC

[jira] [Created] (HIVE-6030) Introduce Explain SubQuery Rewrite command

Harish Butani created HIVE-6030:
-----------------------------------

             Summary: Introduce Explain SubQuery Rewrite command
                 Key: HIVE-6030
                 URL: https://issues.apache.org/jira/browse/HIVE-6030
             Project: Hive
          Issue Type: Improvement
            Reporter: Harish Butani


There are several transformations happening for SubQuery predicates(HIVE-784). It is hard to tell from the explain plan how the Query is executed. 
So the goal is to introduce an explain subquery rewrite command that will show the details on the rewrite. Fo e.g.:
{noformat}
-- non corr e.g.
explain subquery rewrite select * from src where src.key in (select key from src s1 where s1.key > '9');

-- outputs:
select * from src left semi join (select key from src s1 where s1.key > '9') sq_1  on src.key = sq_1.key where 1 = 1

-- corr e.g.
explain subquery rewrite select * from src where src.key in (select key from src s1 where s1.key > '9');

-- outputs
select key 
  from src b left semi join (select min(value), a.key as sq_corr_0 
     from (select key, value, rank() over(partition by key order by value) as r from src) a 
     where r <= 2 
     group by a.key) sq_1  on b.key = sq_1.sq_corr_0 and b.value = sq_1._c0 where 1 = 1 and key < '9'
{noformat}

There are multiple rewrite cases:
- corr vs non-cor
- when 'not in' operator  is involved
- a where clause predicate vs. a having clause predicate

Not sure if it will be possible to output a valid Hive SQL query for all cases; but at least provide the user enough information to assemble a valid Hive query.

Breaking this down into multiple subtasks.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)