> On Nov. 17, 2015, 5:27 p.m., Amareshwari Sriramadasu wrote:
> > lens-cube/src/main/java/org/apache/lens/cube/parse/SingleFactMultiStorageHQLContext.java,
> >  line 98
> > <https://reviews.apache.org/r/39895/diff/4/?file=1120735#file1120735line98>
> >
> >     Why does it required copyAST followed by new ASTNode() ?

new ASTNode is shortcut for creating just a single node(not the entire tree) 
based on the root of the constructor argument. This is just creating an 
`ASTNode(CommonToken(TOK_SELECT))`


> On Nov. 17, 2015, 5:27 p.m., Amareshwari Sriramadasu wrote:
> > lens-cube/src/main/java/org/apache/lens/cube/parse/SingleFactMultiStorageHQLContext.java,
> >  line 181
> > <https://reviews.apache.org/r/39895/diff/4/?file=1120735#file1120735line181>
> >
> >     Is intelligence required? :)

No. :)


> On Nov. 17, 2015, 5:27 p.m., Amareshwari Sriramadasu wrote:
> > lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java, 
> > line 441
> > <https://reviews.apache.org/r/39895/diff/4/?file=1120739#file1120739line441>
> >
> >     Can you share cube query and expected union query in a comment, cannot 
> > make much from looking at testcase.

Signature should be intuitive to understand: 

```
public static String getExpectedUnionQuery(String cubeName, List<String> 
storages, StoragePartitionProvider provider,
    String outerSelectPart, String outerWhere, String outerPostWhere, String 
innerQuerySelectPart,
    String innerWhere, String innerPostWhere) {
```

Wherever used, the query is supposed to be like: `outerselectpart from 
(innerselectpart from table1 where partitions and innerWhere innerPostWhere 
union all innerselectpart from table2 where partitions and innerWhere 
innerPostWhere) cubeName where outerWhere outerPostWhere`

postwhere is things like `group by`, `order by`, `having`, `limit` etc. 

Mentioning some complex queries here:

```
SELECT ( testcube . alias0 ) as `City ID` , (sum(( testcube . alias1 )) + max(( 
testcube . alias2 ))),  case  when (sum(( testcube . alias1 )) =  0 ) then  0  
else (sum(( testcube . alias3 )) / sum(( testcube . alias1 ))) end  as `Third 
measure`  FROM (SELECT ( testcube . cityid ) as `alias0` , sum(( testcube . 
msr2 )) as `alias1` , max(( testcube . msr3 )) as `alias2` , sum( case  when (( 
testcube . cityid ) =  'x' ) then ( testcube . msr21 ) else ( testcube . msr22 
) end ) as `alias3`  FROM TestQueryRewrite.c1_testfact testcube WHERE 
(((((((((((((((((((((((((((((((((((((((((((((((((((((((( testcube . dt ) =  
'2015-09-17-19' ) or (( testcube . dt ) =  '2015-09-17-20' )) or (( testcube . 
dt ) =  '2015-09-17-21' )) or (( testcube . dt ) =  '2015-09-17-22' )) or (( 
testcube . dt ) =  '2015-09-17-23' )) or (( testcube . dt ) =  '2015-09-18' )) 
or (( testcube . dt ) =  '2015-09-19' )) or (( testcube . dt ) =  '2015-09-20' 
)) or (( testcube . dt ) =  '2015-09-21' )) or (( testcube . dt ) 
 =  '2015-09-22' )) or (( testcube . dt ) =  '2015-09-23' )) or (( testcube . 
dt ) =  '2015-09-24' )) or (( testcube . dt ) =  '2015-09-25' )) or (( testcube 
. dt ) =  '2015-09-26' )) or (( testcube . dt ) =  '2015-09-27' )) or (( 
testcube . dt ) =  '2015-09-28' )) or (( testcube . dt ) =  '2015-09-29' )) or 
(( testcube . dt ) =  '2015-09-30' )) or (( testcube . dt ) =  '2015-11-01' )) 
or (( testcube . dt ) =  '2015-11-02' )) or (( testcube . dt ) =  '2015-11-03' 
)) or (( testcube . dt ) =  '2015-11-04' )) or (( testcube . dt ) =  
'2015-11-05' )) or (( testcube . dt ) =  '2015-11-06' )) or (( testcube . dt ) 
=  '2015-11-07' )) or (( testcube . dt ) =  '2015-11-08' )) or (( testcube . dt 
) =  '2015-11-09' )) or (( testcube . dt ) =  '2015-11-10' )) or (( testcube . 
dt ) =  '2015-11-11' )) or (( testcube . dt ) =  '2015-11-12' )) or (( testcube 
. dt ) =  '2015-11-13' )) or (( testcube . dt ) =  '2015-11-14' )) or (( 
testcube . dt ) =  '2015-11-15' )) or (( testcube . dt ) =  '2015-11-1
 6' )) or (( testcube . dt ) =  '2015-11-17-00' )) or (( testcube . dt ) =  
'2015-11-17-01' )) or (( testcube . dt ) =  '2015-11-17-02' )) or (( testcube . 
dt ) =  '2015-11-17-03' )) or (( testcube . dt ) =  '2015-11-17-04' )) or (( 
testcube . dt ) =  '2015-11-17-05' )) or (( testcube . dt ) =  '2015-11-17-06' 
)) or (( testcube . dt ) =  '2015-11-17-07' )) or (( testcube . dt ) =  
'2015-11-17-08' )) or (( testcube . dt ) =  '2015-11-17-09' )) or (( testcube . 
dt ) =  '2015-11-17-10' )) or (( testcube . dt ) =  '2015-11-17-11' )) or (( 
testcube . dt ) =  '2015-11-17-12' )) or (( testcube . dt ) =  '2015-11-17-13' 
)) or (( testcube . dt ) =  '2015-11-17-14' )) or (( testcube . dt ) =  
'2015-11-17-15' )) or (( testcube . dt ) =  '2015-11-17-16' )) or (( testcube . 
dt ) =  '2015-11-17-17' )) or (( testcube . dt ) =  '2015-11-17-18' )))) GROUP 
BY ( testcube . cityid ) UNION ALL SELECT ( testcube . cityid ) as `alias0` , 
sum(( testcube . msr2 )) as `alias1` , max(( testcube . msr3 )) as `a
 lias2` , sum( case  when (( testcube . cityid ) =  'x' ) then ( testcube . 
msr21 ) else ( testcube . msr22 ) end ) as `alias3`  FROM 
TestQueryRewrite.c2_testfact testcube WHERE (((( testcube . dt ) =  '2015-10' 
))) GROUP BY ( testcube . cityid )) testcube GROUP BY ( testcube . alias0 )
```

```
SELECT ( testcube . alias0 ) as `City ID` , max(( testcube . alias1 )) as 
`Third measure`  FROM (SELECT ( testcube . cityid ) as `alias0` , max(( 
testcube . msr3 )) as `alias1` , sum(( testcube . msr2 )) as `alias2` , sum( 
case  when (( testcube . cityid ) =  'x' ) then ( testcube . msr21 ) else ( 
testcube . msr22 ) end ) as `alias3`  FROM TestQueryRewrite.c1_testfact 
testcube WHERE (((((((((((((((((((((((((((((((((((((((((((((((((((((((( 
testcube . dt ) =  '2015-09-17-19' ) or (( testcube . dt ) =  '2015-09-17-20' 
)) or (( testcube . dt ) =  '2015-09-17-21' )) or (( testcube . dt ) =  
'2015-09-17-22' )) or (( testcube . dt ) =  '2015-09-17-23' )) or (( testcube . 
dt ) =  '2015-09-18' )) or (( testcube . dt ) =  '2015-09-19' )) or (( testcube 
. dt ) =  '2015-09-20' )) or (( testcube . dt ) =  '2015-09-21' )) or (( 
testcube . dt ) =  '2015-09-22' )) or (( testcube . dt ) =  '2015-09-23' )) or 
(( testcube . dt ) =  '2015-09-24' )) or (( testcube . dt ) =  '2015-09-25' )) 
or (( testcube
  . dt ) =  '2015-09-26' )) or (( testcube . dt ) =  '2015-09-27' )) or (( 
testcube . dt ) =  '2015-09-28' )) or (( testcube . dt ) =  '2015-09-29' )) or 
(( testcube . dt ) =  '2015-09-30' )) or (( testcube . dt ) =  '2015-11-01' )) 
or (( testcube . dt ) =  '2015-11-02' )) or (( testcube . dt ) =  '2015-11-03' 
)) or (( testcube . dt ) =  '2015-11-04' )) or (( testcube . dt ) =  
'2015-11-05' )) or (( testcube . dt ) =  '2015-11-06' )) or (( testcube . dt ) 
=  '2015-11-07' )) or (( testcube . dt ) =  '2015-11-08' )) or (( testcube . dt 
) =  '2015-11-09' )) or (( testcube . dt ) =  '2015-11-10' )) or (( testcube . 
dt ) =  '2015-11-11' )) or (( testcube . dt ) =  '2015-11-12' )) or (( testcube 
. dt ) =  '2015-11-13' )) or (( testcube . dt ) =  '2015-11-14' )) or (( 
testcube . dt ) =  '2015-11-15' )) or (( testcube . dt ) =  '2015-11-16' )) or 
(( testcube . dt ) =  '2015-11-17-00' )) or (( testcube . dt ) =  
'2015-11-17-01' )) or (( testcube . dt ) =  '2015-11-17-02' )) or (( testcube . 
d
 t ) =  '2015-11-17-03' )) or (( testcube . dt ) =  '2015-11-17-04' )) or (( 
testcube . dt ) =  '2015-11-17-05' )) or (( testcube . dt ) =  '2015-11-17-06' 
)) or (( testcube . dt ) =  '2015-11-17-07' )) or (( testcube . dt ) =  
'2015-11-17-08' )) or (( testcube . dt ) =  '2015-11-17-09' )) or (( testcube . 
dt ) =  '2015-11-17-10' )) or (( testcube . dt ) =  '2015-11-17-11' )) or (( 
testcube . dt ) =  '2015-11-17-12' )) or (( testcube . dt ) =  '2015-11-17-13' 
)) or (( testcube . dt ) =  '2015-11-17-14' )) or (( testcube . dt ) =  
'2015-11-17-15' )) or (( testcube . dt ) =  '2015-11-17-16' )) or (( testcube . 
dt ) =  '2015-11-17-17' )) or (( testcube . dt ) =  '2015-11-17-18' )))) GROUP 
BY ( testcube . cityid ) UNION ALL SELECT ( testcube . cityid ) as `alias0` , 
max(( testcube . msr3 )) as `alias1` , sum(( testcube . msr2 )) as `alias2` , 
sum( case  when (( testcube . cityid ) =  'x' ) then ( testcube . msr21 ) else 
( testcube . msr22 ) end ) as `alias3`  FROM TestQueryRewrite.c2_tes
 tfact testcube WHERE (((( testcube . dt ) =  '2015-10' ))) GROUP BY ( testcube 
. cityid )) testcube GROUP BY ( testcube . alias0 ) HAVING ( case  when (sum(( 
testcube . alias2 )) =  0 ) then  0  else (sum(( testcube . alias3 )) / sum(( 
testcube . alias2 ))) end  >  10 )
```

```
SELECT ( testcube . alias0 ), ( testcube . alias1 ) as `City ID` , max(( 
testcube . alias2 )) as `Measure 3` , count(( testcube . alias3 )), sum(( 
testcube . alias4 )) as `Measure 2`  FROM (SELECT ( testcube . zipcode ) as 
`alias0` , ( testcube . cityid ) as `alias1` , max(( testcube . msr3 )) as 
`alias2` , count(( testcube . msr4 )) as `alias3` , sum(( testcube . msr2 )) as 
`alias4`  FROM TestQueryRewrite.c1_testfact testcube WHERE 
(((((((((((((((((((((((((((((((((((((((((((((((((((((((( testcube . dt ) =  
'2015-09-17-19' ) or (( testcube . dt ) =  '2015-09-17-20' )) or (( testcube . 
dt ) =  '2015-09-17-21' )) or (( testcube . dt ) =  '2015-09-17-22' )) or (( 
testcube . dt ) =  '2015-09-17-23' )) or (( testcube . dt ) =  '2015-09-18' )) 
or (( testcube . dt ) =  '2015-09-19' )) or (( testcube . dt ) =  '2015-09-20' 
)) or (( testcube . dt ) =  '2015-09-21' )) or (( testcube . dt ) =  
'2015-09-22' )) or (( testcube . dt ) =  '2015-09-23' )) or (( testcube . dt ) 
=  '2015-09-24' )) or (
 ( testcube . dt ) =  '2015-09-25' )) or (( testcube . dt ) =  '2015-09-26' )) 
or (( testcube . dt ) =  '2015-09-27' )) or (( testcube . dt ) =  '2015-09-28' 
)) or (( testcube . dt ) =  '2015-09-29' )) or (( testcube . dt ) =  
'2015-09-30' )) or (( testcube . dt ) =  '2015-11-01' )) or (( testcube . dt ) 
=  '2015-11-02' )) or (( testcube . dt ) =  '2015-11-03' )) or (( testcube . dt 
) =  '2015-11-04' )) or (( testcube . dt ) =  '2015-11-05' )) or (( testcube . 
dt ) =  '2015-11-06' )) or (( testcube . dt ) =  '2015-11-07' )) or (( testcube 
. dt ) =  '2015-11-08' )) or (( testcube . dt ) =  '2015-11-09' )) or (( 
testcube . dt ) =  '2015-11-10' )) or (( testcube . dt ) =  '2015-11-11' )) or 
(( testcube . dt ) =  '2015-11-12' )) or (( testcube . dt ) =  '2015-11-13' )) 
or (( testcube . dt ) =  '2015-11-14' )) or (( testcube . dt ) =  '2015-11-15' 
)) or (( testcube . dt ) =  '2015-11-16' )) or (( testcube . dt ) =  
'2015-11-17-00' )) or (( testcube . dt ) =  '2015-11-17-01' )) or (( testc
 ube . dt ) =  '2015-11-17-02' )) or (( testcube . dt ) =  '2015-11-17-03' )) 
or (( testcube . dt ) =  '2015-11-17-04' )) or (( testcube . dt ) =  
'2015-11-17-05' )) or (( testcube . dt ) =  '2015-11-17-06' )) or (( testcube . 
dt ) =  '2015-11-17-07' )) or (( testcube . dt ) =  '2015-11-17-08' )) or (( 
testcube . dt ) =  '2015-11-17-09' )) or (( testcube . dt ) =  '2015-11-17-10' 
)) or (( testcube . dt ) =  '2015-11-17-11' )) or (( testcube . dt ) =  
'2015-11-17-12' )) or (( testcube . dt ) =  '2015-11-17-13' )) or (( testcube . 
dt ) =  '2015-11-17-14' )) or (( testcube . dt ) =  '2015-11-17-15' )) or (( 
testcube . dt ) =  '2015-11-17-16' )) or (( testcube . dt ) =  '2015-11-17-17' 
)) or (( testcube . dt ) =  '2015-11-17-18' )))) GROUP BY ( testcube . zipcode 
), ( testcube . cityid ) ORDER BY  testcube . cityid   desc  LIMIT 5 UNION ALL 
SELECT ( testcube . zipcode ) as `alias0` , ( testcube . cityid ) as `alias1` , 
max(( testcube . msr3 )) as `alias2` , count(( testcube . msr4 )) as 
 `alias3` , sum(( testcube . msr2 )) as `alias4`  FROM 
TestQueryRewrite.c2_testfact testcube WHERE (((( testcube . dt ) =  '2015-10' 
))) GROUP BY ( testcube . zipcode ), ( testcube . cityid ) ORDER BY  testcube . 
cityid   desc  LIMIT 5) testcube GROUP BY ( testcube . alias0 ), ( testcube . 
alias1 ) HAVING (count(( testcube . alias3 )) >  10 ) ORDER BY  testcube . 
alias1   desc  LIMIT 5
```


- Rajat


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


On Nov. 10, 2015, 2:51 a.m., Rajat Khandelwal wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/39895/
> -----------------------------------------------------------
> 
> (Updated Nov. 10, 2015, 2:51 a.m.)
> 
> 
> Review request for lens.
> 
> 
> Bugs: LENS-851
>     https://issues.apache.org/jira/browse/LENS-851
> 
> 
> Repository: lens
> 
> 
> Description
> -------
> 
> Will do further cleanup and refactoring. Putting this up for an early review.
> 
> 
> Diffs
> -----
> 
>   lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 
> 450d17202d7a06214ecd997d4bab68fe8351ab3e 
>   lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java 
> ea9badd8f0c20644ca2b6e82586fa33f599b781e 
>   lens-cube/src/main/java/org/apache/lens/cube/parse/SimpleHQLContext.java 
> 067a37a29b536a9ff03aae12a396e7bb99f9ba0f 
>   
> lens-cube/src/main/java/org/apache/lens/cube/parse/SingleFactMultiStorageHQLContext.java
>  15a98dd941bd7b4cb68369fb553d6722956430d6 
>   lens-cube/src/main/java/org/apache/lens/cube/parse/UnionHQLContext.java 
> 90058260b36879bbc149c3c33198d3daf1179b36 
>   lens-cube/src/test/java/org/apache/lens/cube/parse/CubeTestSetup.java 
> dc11b4ce4598bf6d1dc2dc7ad814bd8757ee34fd 
>   
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestAggregateResolver.java 
> 8da52635c72dfc5f669002f1c8dd1da1b9712b40 
>   lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java 
> d7484d83dc0a3f7810ab2109ec882b19b940803b 
>   
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java
>  64b1ac66566239f3a16e55fb5174467940fa0818 
>   
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java
>  9dcced06b533461c0f2e087709546fe7b66e89c2 
>   lens-cube/src/test/java/org/apache/lens/cube/parse/TestQuery.java 
> 8e35ea9bd9cd727cc25ff011a03d6a38a6f0229f 
> 
> Diff: https://reviews.apache.org/r/39895/diff/
> 
> 
> Testing
> -------
> 
> Tested for some queries in the test cases themselves. Need to add proper 
> asserts.
> 
> 
> Thanks,
> 
> Rajat Khandelwal
> 
>

Reply via email to