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

James Taylor commented on PHOENIX-4540:
---------------------------------------

The problem is occurring if one GROUP BY expression is contained by another 
GROUP BY expression. For example, with {{SELECT k/v FROM T GROUP BY k/v, v}} we 
end up replacing the k/v in the SELECT expressions with an expression to access 
the first part of the returned row key and then mistakenly also replace just 
the v part with an expression to access the second part of the returned row 
key. To fix, try changing the processing in 
ExpressionCompiler.wrapGroupByExpression() to detect if the replacement 
expression already contains a RowKeyColumnExpression and don't do that 
wrapping. You could optimize this by only doing this extra processing if one 
GROUP BY expression is contained by another GROUP BY expression.

 

> Client side evaluation of group by Expression in projection gives erroneous 
> result
> ----------------------------------------------------------------------------------
>
>                 Key: PHOENIX-4540
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4540
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Ankit Singhal
>            Priority: Major
>         Attachments: PHOENIX-4540.patch, PHOENIX-4540_unittest.patch
>
>
> If the columns involved in projected expression are not present in "group by" 
> clause, the client evaluation of the same expression will give an erroneous 
> result because of the absence of involved column value.
> Following queries will produce wrong result
> >select round(k/v,0) x from round_test group by x,v 
> >select k/v x from round_test group by x,v 
> but query runs fine if we add all columns so that client expression can be 
> evaluated
> >select round(k/v,0) x from round_test group by x,k,v //will produce right 
> >result
> >select k/v x from round_test group by x,k,v; 
> Why we need to re-evaluate the expression here, can't we use the same result 
> evaluated at server side during the "group by" 
> thoughts [~jamestaylor]?



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

Reply via email to