[ 
https://issues.apache.org/jira/browse/HIVE-2512?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13146377#comment-13146377
 ] 

jirapos...@reviews.apache.org commented on HIVE-2512:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/2479/
-----------------------------------------------------------

(Updated 2011-11-08 16:03:21.111741)


Review request for hive and Ning Zhang.


Changes
-------

select key, count(1) cnt from src group by key order by count(1) limit 10;

Here order by is requested with the aggregate function in execution flow of 
this query in 
org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory.DefaultExprProcessor.getXpathOrFuncExprNodeDesc(ASTNode,
 boolean, ArrayList<ExprNodeDesc>, TypeCheckCtx) while constructing 
ExprNodeGenericFuncDesc it is expecting GenericUDF() but here it is requested 
with aggregate function so it is returning null and it is throwing 
NullPointerException

So before constructing ExprNodeGenericFuncDesc added a check if it is UDAF 
throw exception

And it should work with below queries ,

select key,min(key) from src group by key having min(key) > 100;
select key,min(key) as mininum from src group by key order by mininum;


Summary
-------

SemanticAnalyzer.genReduceSinkPlan() added a function validation check for 
orderby and sortby in the same flow clusterby also executing so it is throwing 
execption for the clusterby also.

Orderby and Sortby wont support the functions so need to add the function 
validation check. 
Now validation check is modified like it should check only for the orderby and 
sortby.


This addresses bug HIVE-2512.
    https://issues.apache.org/jira/browse/HIVE-2512


Diffs (updated)
-----

  trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ErrorMsg.java 1198626 
  trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java 
1198626 
  trunk/ql/src/test/queries/clientnegative/orderby_function.q PRE-CREATION 
  trunk/ql/src/test/queries/clientnegative/orderby_function1.q PRE-CREATION 
  trunk/ql/src/test/queries/clientnegative/orderby_function2.q PRE-CREATION 
  trunk/ql/src/test/queries/clientnegative/sortby_function.q PRE-CREATION 
  trunk/ql/src/test/queries/clientpositive/orderby_function.q PRE-CREATION 
  trunk/ql/src/test/results/clientnegative/orderby_function.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientnegative/orderby_function1.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientnegative/orderby_function2.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientnegative/sortby_function.q.out PRE-CREATION 
  trunk/ql/src/test/results/clientpositive/orderby_function.q.out PRE-CREATION 

Diff: https://reviews.apache.org/r/2479/diff


Testing
-------

All unit tests passed


Thanks,

chinna


                
> After HIVE-2145, Hive disallow any use of function in cluster-by clause
> -----------------------------------------------------------------------
>
>                 Key: HIVE-2512
>                 URL: https://issues.apache.org/jira/browse/HIVE-2512
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Ning Zhang
>            Assignee: Chinna Rao Lalam
>         Attachments: HIVE-2512.1.patch, HIVE-2512.2.patch, HIVE-2512.patch
>
>
> After HIVE-2145, the following query returns a semantic analysis error: 
> FROM src SELECT * cluster by rand();
> FAILED: Error in semantic analysis: functions are not supported in order by
> Looking back at HIVE-2145, it's clear that the patch is more restrictive than 
> necessary. 
> Chinna, are you able to work on it? Please let me know if you don't have 
> cycles to do it now. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to