> 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 > >