You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lens.apache.org by Rajat Khandelwal <ra...@gmail.com> on 2015/01/15 08:52:30 UTC
Review Request 29919: LENS-149: The error for no candidate fact table
found to answer is too verbose
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
LENS-149: The error for no candidate fact table found to answer is too verbose
Diffs
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java c282b3dbc8b85209d0f9f61ec7dafeba0065816b
Diff: https://reviews.apache.org/r/29919/diff/
Testing
-------
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Amareshwari Sriramadasu <am...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review68226
-----------------------------------------------------------
Some more comments
* Can you include unit test?
* Should we add more information about the prune cause - missing column for COLUMN_NOT_FOUND?
* Having a precedence among the errors and showing one cause help user? Can you put the sample error with changes suggested now?
- Amareshwari Sriramadasu
On Jan. 15, 2015, 7:54 a.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 15, 2015, 7:54 a.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing error -> list of facts instead of list of fact -> error. Many facts have same error, makes the error a bit compact.
> 2. converting getters/setters to annotations.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java c282b3dbc8b85209d0f9f61ec7dafeba0065816b
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Amareshwari Sriramadasu <am...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review68897
-----------------------------------------------------------
Other changes look good. Can you update brief errors for examples you provided?
- Amareshwari Sriramadasu
On Jan. 21, 2015, 10:44 a.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 21, 2015, 10:44 a.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
> 2. converting getters/setters to annotations.
> 3. Many testcases were using this pattern:
>
> ```
> SemanticException th = null;
> try{
> rewrite(something, something);
> Assert.fail("Should have thrown exception");
> } catch (SemanticException e) {
> e.printStackTrace();
> th = e;
> }
> Assert.assertNotNull(th);
> //Other asserts on th
> ```
>
> Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
> 4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
> 5. Modified test cases to check prune cause wherever possible.
> 6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
>
>
> There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
> lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java ce62b65f35c610267d452b32e9a21c1673bb5c2f
> lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java 19deea6a4a7bfee9d3e1a59542d556d7446e324c
> lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java 28f6aa469bfe7c74a3c4da6bb402962f52933f49
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
> [INFO] Lens .............................................. SUCCESS [1.627s]
> [INFO] Lens API .......................................... SUCCESS [6.922s]
> [INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
> [INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
> [INFO] Lens DB storage ................................... SUCCESS [12.629s]
> [INFO] Lens Query Library ................................ SUCCESS [5.685s]
> [INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
> [INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
> [INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
> [INFO] Lens Server ....................................... SUCCESS [5:01.175s]
> [INFO] Lens client ....................................... SUCCESS [27.307s]
> [INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
> [INFO] Lens Examples ..................................... SUCCESS [1.011s]
> [INFO] Lens Distribution ................................. SUCCESS [4.181s]
> [INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
> [INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 20:11.370s
> [INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
> [INFO] Final Memory: 110M/1420M
> [INFO] ------------------------------------------------------------------------
>
> Some examples of the error json:
>
> ```
> {
> "testfact3_base,testfact3_raw_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "cityid"
> ]
> },
> "testfact2_raw_base,testfact2_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "msr3",
> "msr13"
> ]
> }
> }
> ```
>
> ```
> {
> "summary2,testfact2_raw,summary3": {
> "cause": "INVALID_DENORM_TABLE"
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C2": "UNSUPPORTED"
> }
> },
> "summary1,cheapfact,testfactmonthly,testfact2,testfact": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "dim2big1",
> "dim2"
> ]
> }
> }
> ```
>
>
> ```
> {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> },
> "updatePeriodCauses": {}
> },
> "summary1": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary1": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary2": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary3": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary3": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary4": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> ```
>
> ```
> {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
> "cause": "MORE_WEIGHT"
> },
> "testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-18",
> "2015-01-17-18",
> "2015-01-17-19",
> "2015-01-17-20",
> "2015-01-17-21",
> "2015-01-17-22",
> "2015-01-17-23",
> "2015-01-19-00",
> "2015-01-19-01",
> "2015-01-19-02",
> "2015-01-19-03",
> "2015-01-19-04",
> "2015-01-19-05",
> "2015-01-19-06",
> "2015-01-19-07",
> "2015-01-19-08",
> "2015-01-19-09",
> "2015-01-19-10",
> "2015-01-19-11",
> "2015-01-19-12",
> "2015-01-19-13",
> "2015-01-19-14",
> "2015-01-19-15",
> "2015-01-19-16",
> "2015-01-19-17"
> ]
> },
> "testfactmonthly": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> ```
>
>
> ```
> {
> "testfact2_raw,summary4,testfactmonthly,testfact2": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> },
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary1": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary2": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,summary3,testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-18",
> "2015-01-17-19",
> "2015-01-17-20",
> "2015-01-17-21",
> "2015-01-17-22",
> "2015-01-17-23",
> "2015-01-17-18-45",
> "2015-01-17-18-46",
> "2015-01-17-18-47",
> "2015-01-17-18-48",
> "2015-01-17-18-49",
> "2015-01-17-18-50",
> "2015-01-17-18-51",
> "2015-01-17-18-52",
> "2015-01-17-18-53",
> "2015-01-17-18-54",
> "2015-01-17-18-55",
> "2015-01-17-18-56",
> "2015-01-17-18-57",
> "2015-01-17-18-58",
> "2015-01-17-18-59"
> ]
> },
> "summary3": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary3": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary4": "PART_COL_DOES_NOT_EXIST"
> }
> }
> }
> ```
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
> On Jan. 22, 2015, 10:56 a.m., Amareshwari Sriramadasu wrote:
> > Changes look fine. Can you update the brief errors for examples?
already done. Inside json
- Rajat
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review69159
-----------------------------------------------------------
On Jan. 22, 2015, 10:51 a.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 22, 2015, 10:51 a.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
> 2. converting getters/setters to annotations.
> 3. Many testcases were using this pattern:
>
> ```
> SemanticException th = null;
> try{
> rewrite(something, something);
> Assert.fail("Should have thrown exception");
> } catch (SemanticException e) {
> e.printStackTrace();
> th = e;
> }
> Assert.assertNotNull(th);
> //Other asserts on th
> ```
>
> Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
> 4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
> 5. Modified test cases to check prune cause wherever possible.
> 6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
>
>
> There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Lens Checkstyle Rules ............................. SUCCESS [2.671s]
> [INFO] Lens .............................................. SUCCESS [1.890s]
> [INFO] Lens API .......................................... SUCCESS [6.569s]
> [INFO] Lens API for server and extensions ................ SUCCESS [7.130s]
> [INFO] Lens Cube ......................................... SUCCESS [7:08.405s]
> [INFO] Lens DB storage ................................... SUCCESS [12.492s]
> [INFO] Lens Query Library ................................ SUCCESS [5.427s]
> [INFO] Lens Hive Driver .................................. SUCCESS [3:16.284s]
> [INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.694s]
> [INFO] Lens Driver for JDBC .............................. SUCCESS [29.635s]
> [INFO] Lens Server ....................................... SUCCESS [5:12.396s]
> [INFO] Lens client ....................................... SUCCESS [22.350s]
> [INFO] Lens CLI .......................................... SUCCESS [1:58.029s]
> [INFO] Lens Examples ..................................... SUCCESS [1.054s]
> [INFO] Lens Distribution ................................. SUCCESS [4.236s]
> [INFO] Lens Client Distribution .......................... SUCCESS [7.791s]
> [INFO] Lens ML Lib ....................................... SUCCESS [47.096s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 20:08.261s
> [INFO] Finished at: Thu Jan 22 10:26:55 UTC 2015
> [INFO] Final Memory: 110M/1221M
> [INFO] ------------------------------------------------------------------------
>
> Some examples of the error json:
>
> ```
> {
> "brief": "Column Sets: [[msr3, msr13], [cityid]] are not queriable together",
> "details": {
> "testfact3_base,testfact3_raw_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "cityid"
> ]
> },
> "testfact2_raw_base,testfact2_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "msr3",
> "msr13"
> ]
> }
> }
> }
> ```
>
> ```
> {
> "brief": "No candidate storages for any table",
> "details": {
> "summary2,testfact2_raw,summary3": {
> "cause": "INVALID_DENORM_TABLE"
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C2": "UNSUPPORTED"
> }
> },
> "summary1,cheapfact,testfactmonthly,testfact2,testfact": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "dim2big1",
> "dim2"
> ]
> }
> }
> }
> ```
> ```
> {
> "brief": "No fact update periods for given range",
> "details": {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1,summary2,summary3,summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> }
> ```
>
> ```
> {
> "brief": "No candidate storages for any table",
> "details": {
> "statetable": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c1": "NO_PARTITIONS"
> }
> }
> }
> }
> ```
>
> ```
> {
> "brief": "Missing partitions for the cube table: [[2015-01-21, 2015-01-20-15, 2015-01-20-16, 2015-01-20-17, 2015-01-20-18, 2015-01-20-19, 2015-01-20-20, 2015-01-20-21, 2015-01-20-22, 2015-01-20-23, 2015-01-22-00, 2015-01-22-01, 2015-01-22-02, 2015-01-22-03, 2015-01-22-04, 2015-01-22-05, 2015-01-22-06, 2015-01-22-07, 2015-01-22-08, 2015-01-22-09, 2015-01-22-10, 2015-01-22-11, 2015-01-22-12, 2015-01-22-13, 2015-01-22-14]]",
> "details": {
> "summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
> "cause": "MORE_WEIGHT"
> },
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-21",
> "2015-01-20-15",
> "2015-01-20-16",
> "2015-01-20-17",
> "2015-01-20-18",
> "2015-01-20-19",
> "2015-01-20-20",
> "2015-01-20-21",
> "2015-01-20-22",
> "2015-01-20-23",
> "2015-01-22-00",
> "2015-01-22-01",
> "2015-01-22-02",
> "2015-01-22-03",
> "2015-01-22-04",
> "2015-01-22-05",
> "2015-01-22-06",
> "2015-01-22-07",
> "2015-01-22-08",
> "2015-01-22-09",
> "2015-01-22-10",
> "2015-01-22-11",
> "2015-01-22-12",
> "2015-01-22-13",
> "2015-01-22-14"
> ]
> },
> "testfactmonthly": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> }
> ```
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Amareshwari Sriramadasu <am...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review69159
-----------------------------------------------------------
Changes look fine. Can you update the brief errors for examples?
- Amareshwari Sriramadasu
On Jan. 22, 2015, 10:51 a.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 22, 2015, 10:51 a.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
> 2. converting getters/setters to annotations.
> 3. Many testcases were using this pattern:
>
> ```
> SemanticException th = null;
> try{
> rewrite(something, something);
> Assert.fail("Should have thrown exception");
> } catch (SemanticException e) {
> e.printStackTrace();
> th = e;
> }
> Assert.assertNotNull(th);
> //Other asserts on th
> ```
>
> Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
> 4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
> 5. Modified test cases to check prune cause wherever possible.
> 6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
>
>
> There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Lens Checkstyle Rules ............................. SUCCESS [2.671s]
> [INFO] Lens .............................................. SUCCESS [1.890s]
> [INFO] Lens API .......................................... SUCCESS [6.569s]
> [INFO] Lens API for server and extensions ................ SUCCESS [7.130s]
> [INFO] Lens Cube ......................................... SUCCESS [7:08.405s]
> [INFO] Lens DB storage ................................... SUCCESS [12.492s]
> [INFO] Lens Query Library ................................ SUCCESS [5.427s]
> [INFO] Lens Hive Driver .................................. SUCCESS [3:16.284s]
> [INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.694s]
> [INFO] Lens Driver for JDBC .............................. SUCCESS [29.635s]
> [INFO] Lens Server ....................................... SUCCESS [5:12.396s]
> [INFO] Lens client ....................................... SUCCESS [22.350s]
> [INFO] Lens CLI .......................................... SUCCESS [1:58.029s]
> [INFO] Lens Examples ..................................... SUCCESS [1.054s]
> [INFO] Lens Distribution ................................. SUCCESS [4.236s]
> [INFO] Lens Client Distribution .......................... SUCCESS [7.791s]
> [INFO] Lens ML Lib ....................................... SUCCESS [47.096s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 20:08.261s
> [INFO] Finished at: Thu Jan 22 10:26:55 UTC 2015
> [INFO] Final Memory: 110M/1221M
> [INFO] ------------------------------------------------------------------------
>
> Some examples of the error json:
>
> ```
> {
> "brief": "Column Sets: [[msr3, msr13], [cityid]] are not queriable together",
> "details": {
> "testfact3_base,testfact3_raw_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "cityid"
> ]
> },
> "testfact2_raw_base,testfact2_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "msr3",
> "msr13"
> ]
> }
> }
> }
> ```
>
> ```
> {
> "brief": "No candidate storages for any table",
> "details": {
> "summary2,testfact2_raw,summary3": {
> "cause": "INVALID_DENORM_TABLE"
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C2": "UNSUPPORTED"
> }
> },
> "summary1,cheapfact,testfactmonthly,testfact2,testfact": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "dim2big1",
> "dim2"
> ]
> }
> }
> }
> ```
> ```
> {
> "brief": "No fact update periods for given range",
> "details": {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1,summary2,summary3,summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> }
> ```
>
> ```
> {
> "brief": "No candidate storages for any table",
> "details": {
> "statetable": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c1": "NO_PARTITIONS"
> }
> }
> }
> }
> ```
>
> ```
> {
> "brief": "Missing partitions for the cube table: [[2015-01-21, 2015-01-20-15, 2015-01-20-16, 2015-01-20-17, 2015-01-20-18, 2015-01-20-19, 2015-01-20-20, 2015-01-20-21, 2015-01-20-22, 2015-01-20-23, 2015-01-22-00, 2015-01-22-01, 2015-01-22-02, 2015-01-22-03, 2015-01-22-04, 2015-01-22-05, 2015-01-22-06, 2015-01-22-07, 2015-01-22-08, 2015-01-22-09, 2015-01-22-10, 2015-01-22-11, 2015-01-22-12, 2015-01-22-13, 2015-01-22-14]]",
> "details": {
> "summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
> "cause": "MORE_WEIGHT"
> },
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-21",
> "2015-01-20-15",
> "2015-01-20-16",
> "2015-01-20-17",
> "2015-01-20-18",
> "2015-01-20-19",
> "2015-01-20-20",
> "2015-01-20-21",
> "2015-01-20-22",
> "2015-01-20-23",
> "2015-01-22-00",
> "2015-01-22-01",
> "2015-01-22-02",
> "2015-01-22-03",
> "2015-01-22-04",
> "2015-01-22-05",
> "2015-01-22-06",
> "2015-01-22-07",
> "2015-01-22-08",
> "2015-01-22-09",
> "2015-01-22-10",
> "2015-01-22-11",
> "2015-01-22-12",
> "2015-01-22-13",
> "2015-01-22-14"
> ]
> },
> "testfactmonthly": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> }
> ```
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Amareshwari Sriramadasu <am...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review69158
-----------------------------------------------------------
Ship it!
Ship It!
- Amareshwari Sriramadasu
On Jan. 22, 2015, 10:51 a.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 22, 2015, 10:51 a.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
> 2. converting getters/setters to annotations.
> 3. Many testcases were using this pattern:
>
> ```
> SemanticException th = null;
> try{
> rewrite(something, something);
> Assert.fail("Should have thrown exception");
> } catch (SemanticException e) {
> e.printStackTrace();
> th = e;
> }
> Assert.assertNotNull(th);
> //Other asserts on th
> ```
>
> Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
> 4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
> 5. Modified test cases to check prune cause wherever possible.
> 6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
>
>
> There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Lens Checkstyle Rules ............................. SUCCESS [2.671s]
> [INFO] Lens .............................................. SUCCESS [1.890s]
> [INFO] Lens API .......................................... SUCCESS [6.569s]
> [INFO] Lens API for server and extensions ................ SUCCESS [7.130s]
> [INFO] Lens Cube ......................................... SUCCESS [7:08.405s]
> [INFO] Lens DB storage ................................... SUCCESS [12.492s]
> [INFO] Lens Query Library ................................ SUCCESS [5.427s]
> [INFO] Lens Hive Driver .................................. SUCCESS [3:16.284s]
> [INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.694s]
> [INFO] Lens Driver for JDBC .............................. SUCCESS [29.635s]
> [INFO] Lens Server ....................................... SUCCESS [5:12.396s]
> [INFO] Lens client ....................................... SUCCESS [22.350s]
> [INFO] Lens CLI .......................................... SUCCESS [1:58.029s]
> [INFO] Lens Examples ..................................... SUCCESS [1.054s]
> [INFO] Lens Distribution ................................. SUCCESS [4.236s]
> [INFO] Lens Client Distribution .......................... SUCCESS [7.791s]
> [INFO] Lens ML Lib ....................................... SUCCESS [47.096s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 20:08.261s
> [INFO] Finished at: Thu Jan 22 10:26:55 UTC 2015
> [INFO] Final Memory: 110M/1221M
> [INFO] ------------------------------------------------------------------------
>
> Some examples of the error json:
>
> ```
> {
> "brief": "Column Sets: [[msr3, msr13], [cityid]] are not queriable together",
> "details": {
> "testfact3_base,testfact3_raw_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "cityid"
> ]
> },
> "testfact2_raw_base,testfact2_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "msr3",
> "msr13"
> ]
> }
> }
> }
> ```
>
> ```
> {
> "brief": "No candidate storages for any table",
> "details": {
> "summary2,testfact2_raw,summary3": {
> "cause": "INVALID_DENORM_TABLE"
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C2": "UNSUPPORTED"
> }
> },
> "summary1,cheapfact,testfactmonthly,testfact2,testfact": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "dim2big1",
> "dim2"
> ]
> }
> }
> }
> ```
> ```
> {
> "brief": "No fact update periods for given range",
> "details": {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1,summary2,summary3,summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> }
> ```
>
> ```
> {
> "brief": "No candidate storages for any table",
> "details": {
> "statetable": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c1": "NO_PARTITIONS"
> }
> }
> }
> }
> ```
>
> ```
> {
> "brief": "Missing partitions for the cube table: [[2015-01-21, 2015-01-20-15, 2015-01-20-16, 2015-01-20-17, 2015-01-20-18, 2015-01-20-19, 2015-01-20-20, 2015-01-20-21, 2015-01-20-22, 2015-01-20-23, 2015-01-22-00, 2015-01-22-01, 2015-01-22-02, 2015-01-22-03, 2015-01-22-04, 2015-01-22-05, 2015-01-22-06, 2015-01-22-07, 2015-01-22-08, 2015-01-22-09, 2015-01-22-10, 2015-01-22-11, 2015-01-22-12, 2015-01-22-13, 2015-01-22-14]]",
> "details": {
> "summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
> "cause": "MORE_WEIGHT"
> },
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-21",
> "2015-01-20-15",
> "2015-01-20-16",
> "2015-01-20-17",
> "2015-01-20-18",
> "2015-01-20-19",
> "2015-01-20-20",
> "2015-01-20-21",
> "2015-01-20-22",
> "2015-01-20-23",
> "2015-01-22-00",
> "2015-01-22-01",
> "2015-01-22-02",
> "2015-01-22-03",
> "2015-01-22-04",
> "2015-01-22-05",
> "2015-01-22-06",
> "2015-01-22-07",
> "2015-01-22-08",
> "2015-01-22-09",
> "2015-01-22-10",
> "2015-01-22-11",
> "2015-01-22-12",
> "2015-01-22-13",
> "2015-01-22-14"
> ]
> },
> "testfactmonthly": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> }
> ```
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 22, 2015, 10:51 a.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
2. converting getters/setters to annotations.
3. Many testcases were using this pattern:
```
SemanticException th = null;
try{
rewrite(something, something);
Assert.fail("Should have thrown exception");
} catch (SemanticException e) {
e.printStackTrace();
th = e;
}
Assert.assertNotNull(th);
//Other asserts on th
```
Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
5. Modified test cases to check prune cause wherever possible.
6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
Diffs (updated)
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
Diff: https://reviews.apache.org/r/29919/diff/
Testing (updated)
-------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Lens Checkstyle Rules ............................. SUCCESS [2.671s]
[INFO] Lens .............................................. SUCCESS [1.890s]
[INFO] Lens API .......................................... SUCCESS [6.569s]
[INFO] Lens API for server and extensions ................ SUCCESS [7.130s]
[INFO] Lens Cube ......................................... SUCCESS [7:08.405s]
[INFO] Lens DB storage ................................... SUCCESS [12.492s]
[INFO] Lens Query Library ................................ SUCCESS [5.427s]
[INFO] Lens Hive Driver .................................. SUCCESS [3:16.284s]
[INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.694s]
[INFO] Lens Driver for JDBC .............................. SUCCESS [29.635s]
[INFO] Lens Server ....................................... SUCCESS [5:12.396s]
[INFO] Lens client ....................................... SUCCESS [22.350s]
[INFO] Lens CLI .......................................... SUCCESS [1:58.029s]
[INFO] Lens Examples ..................................... SUCCESS [1.054s]
[INFO] Lens Distribution ................................. SUCCESS [4.236s]
[INFO] Lens Client Distribution .......................... SUCCESS [7.791s]
[INFO] Lens ML Lib ....................................... SUCCESS [47.096s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20:08.261s
[INFO] Finished at: Thu Jan 22 10:26:55 UTC 2015
[INFO] Final Memory: 110M/1221M
[INFO] ------------------------------------------------------------------------
Some examples of the error json:
```
{
"brief": "Column Sets: [[msr3, msr13], [cityid]] are not queriable together",
"details": {
"testfact3_base,testfact3_raw_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"cityid"
]
},
"testfact2_raw_base,testfact2_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"msr3",
"msr13"
]
}
}
}
```
```
{
"brief": "No candidate storages for any table",
"details": {
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"dim2big1",
"dim2"
]
}
}
}
```
```
{
"brief": "No fact update periods for given range",
"details": {
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1,summary2,summary3,summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
}
```
```
{
"brief": "No candidate storages for any table",
"details": {
"statetable": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c1": "NO_PARTITIONS"
}
}
}
}
```
```
{
"brief": "Missing partitions for the cube table: [[2015-01-21, 2015-01-20-15, 2015-01-20-16, 2015-01-20-17, 2015-01-20-18, 2015-01-20-19, 2015-01-20-20, 2015-01-20-21, 2015-01-20-22, 2015-01-20-23, 2015-01-22-00, 2015-01-22-01, 2015-01-22-02, 2015-01-22-03, 2015-01-22-04, 2015-01-22-05, 2015-01-22-06, 2015-01-22-07, 2015-01-22-08, 2015-01-22-09, 2015-01-22-10, 2015-01-22-11, 2015-01-22-12, 2015-01-22-13, 2015-01-22-14]]",
"details": {
"summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
"cause": "MORE_WEIGHT"
},
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-21",
"2015-01-20-15",
"2015-01-20-16",
"2015-01-20-17",
"2015-01-20-18",
"2015-01-20-19",
"2015-01-20-20",
"2015-01-20-21",
"2015-01-20-22",
"2015-01-20-23",
"2015-01-22-00",
"2015-01-22-01",
"2015-01-22-02",
"2015-01-22-03",
"2015-01-22-04",
"2015-01-22-05",
"2015-01-22-06",
"2015-01-22-07",
"2015-01-22-08",
"2015-01-22-09",
"2015-01-22-10",
"2015-01-22-11",
"2015-01-22-12",
"2015-01-22-13",
"2015-01-22-14"
]
},
"testfactmonthly": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
}
```
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 22, 2015, 7:02 a.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
2. converting getters/setters to annotations.
3. Many testcases were using this pattern:
```
SemanticException th = null;
try{
rewrite(something, something);
Assert.fail("Should have thrown exception");
} catch (SemanticException e) {
e.printStackTrace();
th = e;
}
Assert.assertNotNull(th);
//Other asserts on th
```
Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
5. Modified test cases to check prune cause wherever possible.
6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
Diffs (updated)
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
Diff: https://reviews.apache.org/r/29919/diff/
Testing
-------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
[INFO] Lens .............................................. SUCCESS [1.627s]
[INFO] Lens API .......................................... SUCCESS [6.922s]
[INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
[INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
[INFO] Lens DB storage ................................... SUCCESS [12.629s]
[INFO] Lens Query Library ................................ SUCCESS [5.685s]
[INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
[INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
[INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
[INFO] Lens Server ....................................... SUCCESS [5:01.175s]
[INFO] Lens client ....................................... SUCCESS [27.307s]
[INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
[INFO] Lens Examples ..................................... SUCCESS [1.011s]
[INFO] Lens Distribution ................................. SUCCESS [4.181s]
[INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
[INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20:11.370s
[INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
[INFO] Final Memory: 110M/1420M
[INFO] ------------------------------------------------------------------------
Some examples of the error json:
```
{
"testfact3_base,testfact3_raw_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"cityid"
]
},
"testfact2_raw_base,testfact2_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"msr3",
"msr13"
]
}
}
```
```
{
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"dim2big1",
"dim2"
]
}
}
```
```
{
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
},
"updatePeriodCauses": {}
},
"summary1": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary1": "PART_COL_DOES_NOT_EXIST"
}
},
"summary2": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary3": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary3": "PART_COL_DOES_NOT_EXIST"
}
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary4": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
```
```
{
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
"cause": "MORE_WEIGHT"
},
"testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-18",
"2015-01-17-18",
"2015-01-17-19",
"2015-01-17-20",
"2015-01-17-21",
"2015-01-17-22",
"2015-01-17-23",
"2015-01-19-00",
"2015-01-19-01",
"2015-01-19-02",
"2015-01-19-03",
"2015-01-19-04",
"2015-01-19-05",
"2015-01-19-06",
"2015-01-19-07",
"2015-01-19-08",
"2015-01-19-09",
"2015-01-19-10",
"2015-01-19-11",
"2015-01-19-12",
"2015-01-19-13",
"2015-01-19-14",
"2015-01-19-15",
"2015-01-19-16",
"2015-01-19-17"
]
},
"testfactmonthly": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
```
```
{
"testfact2_raw,summary4,testfactmonthly,testfact2": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
},
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary1": "PART_COL_DOES_NOT_EXIST"
}
},
"summary2": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,summary3,testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-18",
"2015-01-17-19",
"2015-01-17-20",
"2015-01-17-21",
"2015-01-17-22",
"2015-01-17-23",
"2015-01-17-18-45",
"2015-01-17-18-46",
"2015-01-17-18-47",
"2015-01-17-18-48",
"2015-01-17-18-49",
"2015-01-17-18-50",
"2015-01-17-18-51",
"2015-01-17-18-52",
"2015-01-17-18-53",
"2015-01-17-18-54",
"2015-01-17-18-55",
"2015-01-17-18-56",
"2015-01-17-18-57",
"2015-01-17-18-58",
"2015-01-17-18-59"
]
},
"summary3": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary3": "PART_COL_DOES_NOT_EXIST"
}
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary4": "PART_COL_DOES_NOT_EXIST"
}
}
}
```
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 22, 2015, 6:35 a.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
2. converting getters/setters to annotations.
3. Many testcases were using this pattern:
```
SemanticException th = null;
try{
rewrite(something, something);
Assert.fail("Should have thrown exception");
} catch (SemanticException e) {
e.printStackTrace();
th = e;
}
Assert.assertNotNull(th);
//Other asserts on th
```
Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
5. Modified test cases to check prune cause wherever possible.
6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
Diffs (updated)
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
Diff: https://reviews.apache.org/r/29919/diff/
Testing
-------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
[INFO] Lens .............................................. SUCCESS [1.627s]
[INFO] Lens API .......................................... SUCCESS [6.922s]
[INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
[INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
[INFO] Lens DB storage ................................... SUCCESS [12.629s]
[INFO] Lens Query Library ................................ SUCCESS [5.685s]
[INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
[INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
[INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
[INFO] Lens Server ....................................... SUCCESS [5:01.175s]
[INFO] Lens client ....................................... SUCCESS [27.307s]
[INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
[INFO] Lens Examples ..................................... SUCCESS [1.011s]
[INFO] Lens Distribution ................................. SUCCESS [4.181s]
[INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
[INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20:11.370s
[INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
[INFO] Final Memory: 110M/1420M
[INFO] ------------------------------------------------------------------------
Some examples of the error json:
```
{
"testfact3_base,testfact3_raw_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"cityid"
]
},
"testfact2_raw_base,testfact2_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"msr3",
"msr13"
]
}
}
```
```
{
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"dim2big1",
"dim2"
]
}
}
```
```
{
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
},
"updatePeriodCauses": {}
},
"summary1": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary1": "PART_COL_DOES_NOT_EXIST"
}
},
"summary2": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary3": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary3": "PART_COL_DOES_NOT_EXIST"
}
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary4": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
```
```
{
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
"cause": "MORE_WEIGHT"
},
"testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-18",
"2015-01-17-18",
"2015-01-17-19",
"2015-01-17-20",
"2015-01-17-21",
"2015-01-17-22",
"2015-01-17-23",
"2015-01-19-00",
"2015-01-19-01",
"2015-01-19-02",
"2015-01-19-03",
"2015-01-19-04",
"2015-01-19-05",
"2015-01-19-06",
"2015-01-19-07",
"2015-01-19-08",
"2015-01-19-09",
"2015-01-19-10",
"2015-01-19-11",
"2015-01-19-12",
"2015-01-19-13",
"2015-01-19-14",
"2015-01-19-15",
"2015-01-19-16",
"2015-01-19-17"
]
},
"testfactmonthly": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
```
```
{
"testfact2_raw,summary4,testfactmonthly,testfact2": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
},
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary1": "PART_COL_DOES_NOT_EXIST"
}
},
"summary2": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,summary3,testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-18",
"2015-01-17-19",
"2015-01-17-20",
"2015-01-17-21",
"2015-01-17-22",
"2015-01-17-23",
"2015-01-17-18-45",
"2015-01-17-18-46",
"2015-01-17-18-47",
"2015-01-17-18-48",
"2015-01-17-18-49",
"2015-01-17-18-50",
"2015-01-17-18-51",
"2015-01-17-18-52",
"2015-01-17-18-53",
"2015-01-17-18-54",
"2015-01-17-18-55",
"2015-01-17-18-56",
"2015-01-17-18-57",
"2015-01-17-18-58",
"2015-01-17-18-59"
]
},
"summary3": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary3": "PART_COL_DOES_NOT_EXIST"
}
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary4": "PART_COL_DOES_NOT_EXIST"
}
}
}
```
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Amareshwari Sriramadasu <am...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review68895
-----------------------------------------------------------
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java
<https://reviews.apache.org/r/29919/#comment113427>
make Present smaller case?
lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java
<https://reviews.apache.org/r/29919/#comment113430>
Seems a merge issue - removing some existing code
lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java
<https://reviews.apache.org/r/29919/#comment113431>
Merge issue
lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java
<https://reviews.apache.org/r/29919/#comment113432>
Merge issue again
- Amareshwari Sriramadasu
On Jan. 21, 2015, 10:44 a.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 21, 2015, 10:44 a.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
> 2. converting getters/setters to annotations.
> 3. Many testcases were using this pattern:
>
> ```
> SemanticException th = null;
> try{
> rewrite(something, something);
> Assert.fail("Should have thrown exception");
> } catch (SemanticException e) {
> e.printStackTrace();
> th = e;
> }
> Assert.assertNotNull(th);
> //Other asserts on th
> ```
>
> Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
> 4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
> 5. Modified test cases to check prune cause wherever possible.
> 6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
>
>
> There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
> lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java ce62b65f35c610267d452b32e9a21c1673bb5c2f
> lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java 19deea6a4a7bfee9d3e1a59542d556d7446e324c
> lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java 28f6aa469bfe7c74a3c4da6bb402962f52933f49
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
> [INFO] Lens .............................................. SUCCESS [1.627s]
> [INFO] Lens API .......................................... SUCCESS [6.922s]
> [INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
> [INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
> [INFO] Lens DB storage ................................... SUCCESS [12.629s]
> [INFO] Lens Query Library ................................ SUCCESS [5.685s]
> [INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
> [INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
> [INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
> [INFO] Lens Server ....................................... SUCCESS [5:01.175s]
> [INFO] Lens client ....................................... SUCCESS [27.307s]
> [INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
> [INFO] Lens Examples ..................................... SUCCESS [1.011s]
> [INFO] Lens Distribution ................................. SUCCESS [4.181s]
> [INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
> [INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 20:11.370s
> [INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
> [INFO] Final Memory: 110M/1420M
> [INFO] ------------------------------------------------------------------------
>
> Some examples of the error json:
>
> ```
> {
> "testfact3_base,testfact3_raw_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "cityid"
> ]
> },
> "testfact2_raw_base,testfact2_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "msr3",
> "msr13"
> ]
> }
> }
> ```
>
> ```
> {
> "summary2,testfact2_raw,summary3": {
> "cause": "INVALID_DENORM_TABLE"
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C2": "UNSUPPORTED"
> }
> },
> "summary1,cheapfact,testfactmonthly,testfact2,testfact": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "dim2big1",
> "dim2"
> ]
> }
> }
> ```
>
>
> ```
> {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> },
> "updatePeriodCauses": {}
> },
> "summary1": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary1": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary2": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary3": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary3": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary4": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> ```
>
> ```
> {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
> "cause": "MORE_WEIGHT"
> },
> "testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-18",
> "2015-01-17-18",
> "2015-01-17-19",
> "2015-01-17-20",
> "2015-01-17-21",
> "2015-01-17-22",
> "2015-01-17-23",
> "2015-01-19-00",
> "2015-01-19-01",
> "2015-01-19-02",
> "2015-01-19-03",
> "2015-01-19-04",
> "2015-01-19-05",
> "2015-01-19-06",
> "2015-01-19-07",
> "2015-01-19-08",
> "2015-01-19-09",
> "2015-01-19-10",
> "2015-01-19-11",
> "2015-01-19-12",
> "2015-01-19-13",
> "2015-01-19-14",
> "2015-01-19-15",
> "2015-01-19-16",
> "2015-01-19-17"
> ]
> },
> "testfactmonthly": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> ```
>
>
> ```
> {
> "testfact2_raw,summary4,testfactmonthly,testfact2": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> },
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary1": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary2": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,summary3,testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-18",
> "2015-01-17-19",
> "2015-01-17-20",
> "2015-01-17-21",
> "2015-01-17-22",
> "2015-01-17-23",
> "2015-01-17-18-45",
> "2015-01-17-18-46",
> "2015-01-17-18-47",
> "2015-01-17-18-48",
> "2015-01-17-18-49",
> "2015-01-17-18-50",
> "2015-01-17-18-51",
> "2015-01-17-18-52",
> "2015-01-17-18-53",
> "2015-01-17-18-54",
> "2015-01-17-18-55",
> "2015-01-17-18-56",
> "2015-01-17-18-57",
> "2015-01-17-18-58",
> "2015-01-17-18-59"
> ]
> },
> "summary3": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary3": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary4": "PART_COL_DOES_NOT_EXIST"
> }
> }
> }
> ```
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 21, 2015, 10:44 a.m.)
Review request for lens.
Changes
-------
adding some code for brief error
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
2. converting getters/setters to annotations.
3. Many testcases were using this pattern:
```
SemanticException th = null;
try{
rewrite(something, something);
Assert.fail("Should have thrown exception");
} catch (SemanticException e) {
e.printStackTrace();
th = e;
}
Assert.assertNotNull(th);
//Other asserts on th
```
Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
5. Modified test cases to check prune cause wherever possible.
6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
Diffs (updated)
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestJdbcDriver.java ce62b65f35c610267d452b32e9a21c1673bb5c2f
lens-server/src/main/java/org/apache/lens/server/metastore/CubeMetastoreServiceImpl.java 19deea6a4a7bfee9d3e1a59542d556d7446e324c
lens-server/src/test/java/org/apache/lens/server/metastore/TestMetastoreService.java 28f6aa469bfe7c74a3c4da6bb402962f52933f49
Diff: https://reviews.apache.org/r/29919/diff/
Testing
-------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
[INFO] Lens .............................................. SUCCESS [1.627s]
[INFO] Lens API .......................................... SUCCESS [6.922s]
[INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
[INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
[INFO] Lens DB storage ................................... SUCCESS [12.629s]
[INFO] Lens Query Library ................................ SUCCESS [5.685s]
[INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
[INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
[INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
[INFO] Lens Server ....................................... SUCCESS [5:01.175s]
[INFO] Lens client ....................................... SUCCESS [27.307s]
[INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
[INFO] Lens Examples ..................................... SUCCESS [1.011s]
[INFO] Lens Distribution ................................. SUCCESS [4.181s]
[INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
[INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20:11.370s
[INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
[INFO] Final Memory: 110M/1420M
[INFO] ------------------------------------------------------------------------
Some examples of the error json:
```
{
"testfact3_base,testfact3_raw_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"cityid"
]
},
"testfact2_raw_base,testfact2_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"msr3",
"msr13"
]
}
}
```
```
{
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"dim2big1",
"dim2"
]
}
}
```
```
{
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
},
"updatePeriodCauses": {}
},
"summary1": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary1": "PART_COL_DOES_NOT_EXIST"
}
},
"summary2": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary3": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary3": "PART_COL_DOES_NOT_EXIST"
}
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary4": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
```
```
{
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
"cause": "MORE_WEIGHT"
},
"testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-18",
"2015-01-17-18",
"2015-01-17-19",
"2015-01-17-20",
"2015-01-17-21",
"2015-01-17-22",
"2015-01-17-23",
"2015-01-19-00",
"2015-01-19-01",
"2015-01-19-02",
"2015-01-19-03",
"2015-01-19-04",
"2015-01-19-05",
"2015-01-19-06",
"2015-01-19-07",
"2015-01-19-08",
"2015-01-19-09",
"2015-01-19-10",
"2015-01-19-11",
"2015-01-19-12",
"2015-01-19-13",
"2015-01-19-14",
"2015-01-19-15",
"2015-01-19-16",
"2015-01-19-17"
]
},
"testfactmonthly": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
```
```
{
"testfact2_raw,summary4,testfactmonthly,testfact2": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
},
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary1": "PART_COL_DOES_NOT_EXIST"
}
},
"summary2": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,summary3,testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-18",
"2015-01-17-19",
"2015-01-17-20",
"2015-01-17-21",
"2015-01-17-22",
"2015-01-17-23",
"2015-01-17-18-45",
"2015-01-17-18-46",
"2015-01-17-18-47",
"2015-01-17-18-48",
"2015-01-17-18-49",
"2015-01-17-18-50",
"2015-01-17-18-51",
"2015-01-17-18-52",
"2015-01-17-18-53",
"2015-01-17-18-54",
"2015-01-17-18-55",
"2015-01-17-18-56",
"2015-01-17-18-57",
"2015-01-17-18-58",
"2015-01-17-18-59"
]
},
"summary3": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary3": "PART_COL_DOES_NOT_EXIST"
}
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary4": "PART_COL_DOES_NOT_EXIST"
}
}
}
```
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Amareshwari Sriramadasu <am...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review68689
-----------------------------------------------------------
When Lens wants to give the abstraction to user with Cube as entry point and the error says something like :
{
"testfact3_base,testfact3_raw_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"cityid"
]
},
"testfact2_raw_base,testfact2_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"msr3",
"msr13"
]
}
}
user cannot understand what testfact3_base,testfact3_raw_base, testfact2_raw_base,testfact2_base are. This error is useful for a user who can understand the data model fully. But a business user who is not interested in data model, cannot make out any thing from the error. We should translate this to something that end user can understand.
- Amareshwari Sriramadasu
On Jan. 19, 2015, 1:16 p.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 19, 2015, 1:16 p.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
> 2. converting getters/setters to annotations.
> 3. Many testcases were using this pattern:
>
> ```
> SemanticException th = null;
> try{
> rewrite(something, something);
> Assert.fail("Should have thrown exception");
> } catch (SemanticException e) {
> e.printStackTrace();
> th = e;
> }
> Assert.assertNotNull(th);
> //Other asserts on th
> ```
>
> Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
> 4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
> 5. Modified test cases to check prune cause wherever possible.
> 6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
>
>
> There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
> [INFO] Lens .............................................. SUCCESS [1.627s]
> [INFO] Lens API .......................................... SUCCESS [6.922s]
> [INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
> [INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
> [INFO] Lens DB storage ................................... SUCCESS [12.629s]
> [INFO] Lens Query Library ................................ SUCCESS [5.685s]
> [INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
> [INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
> [INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
> [INFO] Lens Server ....................................... SUCCESS [5:01.175s]
> [INFO] Lens client ....................................... SUCCESS [27.307s]
> [INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
> [INFO] Lens Examples ..................................... SUCCESS [1.011s]
> [INFO] Lens Distribution ................................. SUCCESS [4.181s]
> [INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
> [INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 20:11.370s
> [INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
> [INFO] Final Memory: 110M/1420M
> [INFO] ------------------------------------------------------------------------
>
> Some examples of the error json:
>
> ```
> {
> "testfact3_base,testfact3_raw_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "cityid"
> ]
> },
> "testfact2_raw_base,testfact2_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "msr3",
> "msr13"
> ]
> }
> }
> ```
>
> ```
> {
> "summary2,testfact2_raw,summary3": {
> "cause": "INVALID_DENORM_TABLE"
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C2": "UNSUPPORTED"
> }
> },
> "summary1,cheapfact,testfactmonthly,testfact2,testfact": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "dim2big1",
> "dim2"
> ]
> }
> }
> ```
>
>
> ```
> {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> },
> "updatePeriodCauses": {}
> },
> "summary1": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary1": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary2": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary3": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary3": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary4": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> ```
>
> ```
> {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
> "cause": "MORE_WEIGHT"
> },
> "testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-18",
> "2015-01-17-18",
> "2015-01-17-19",
> "2015-01-17-20",
> "2015-01-17-21",
> "2015-01-17-22",
> "2015-01-17-23",
> "2015-01-19-00",
> "2015-01-19-01",
> "2015-01-19-02",
> "2015-01-19-03",
> "2015-01-19-04",
> "2015-01-19-05",
> "2015-01-19-06",
> "2015-01-19-07",
> "2015-01-19-08",
> "2015-01-19-09",
> "2015-01-19-10",
> "2015-01-19-11",
> "2015-01-19-12",
> "2015-01-19-13",
> "2015-01-19-14",
> "2015-01-19-15",
> "2015-01-19-16",
> "2015-01-19-17"
> ]
> },
> "testfactmonthly": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> ```
>
>
> ```
> {
> "testfact2_raw,summary4,testfactmonthly,testfact2": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> },
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary1": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary2": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,summary3,testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-18",
> "2015-01-17-19",
> "2015-01-17-20",
> "2015-01-17-21",
> "2015-01-17-22",
> "2015-01-17-23",
> "2015-01-17-18-45",
> "2015-01-17-18-46",
> "2015-01-17-18-47",
> "2015-01-17-18-48",
> "2015-01-17-18-49",
> "2015-01-17-18-50",
> "2015-01-17-18-51",
> "2015-01-17-18-52",
> "2015-01-17-18-53",
> "2015-01-17-18-54",
> "2015-01-17-18-55",
> "2015-01-17-18-56",
> "2015-01-17-18-57",
> "2015-01-17-18-58",
> "2015-01-17-18-59"
> ]
> },
> "summary3": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary3": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary4": "PART_COL_DOES_NOT_EXIST"
> }
> }
> }
> ```
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Amareshwari Sriramadasu <am...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review68694
-----------------------------------------------------------
Went though the code changes put. They look fine. But we should also give brief error for end user to understand.
- Amareshwari Sriramadasu
On Jan. 19, 2015, 1:16 p.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 19, 2015, 1:16 p.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
> 2. converting getters/setters to annotations.
> 3. Many testcases were using this pattern:
>
> ```
> SemanticException th = null;
> try{
> rewrite(something, something);
> Assert.fail("Should have thrown exception");
> } catch (SemanticException e) {
> e.printStackTrace();
> th = e;
> }
> Assert.assertNotNull(th);
> //Other asserts on th
> ```
>
> Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
> 4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
> 5. Modified test cases to check prune cause wherever possible.
> 6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
>
>
> There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
> lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
> [INFO] Lens .............................................. SUCCESS [1.627s]
> [INFO] Lens API .......................................... SUCCESS [6.922s]
> [INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
> [INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
> [INFO] Lens DB storage ................................... SUCCESS [12.629s]
> [INFO] Lens Query Library ................................ SUCCESS [5.685s]
> [INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
> [INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
> [INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
> [INFO] Lens Server ....................................... SUCCESS [5:01.175s]
> [INFO] Lens client ....................................... SUCCESS [27.307s]
> [INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
> [INFO] Lens Examples ..................................... SUCCESS [1.011s]
> [INFO] Lens Distribution ................................. SUCCESS [4.181s]
> [INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
> [INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 20:11.370s
> [INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
> [INFO] Final Memory: 110M/1420M
> [INFO] ------------------------------------------------------------------------
>
> Some examples of the error json:
>
> ```
> {
> "testfact3_base,testfact3_raw_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "cityid"
> ]
> },
> "testfact2_raw_base,testfact2_base": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "msr3",
> "msr13"
> ]
> }
> }
> ```
>
> ```
> {
> "summary2,testfact2_raw,summary3": {
> "cause": "INVALID_DENORM_TABLE"
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C2": "UNSUPPORTED"
> }
> },
> "summary1,cheapfact,testfactmonthly,testfact2,testfact": {
> "cause": "COLUMN_NOT_FOUND",
> "missingColumns": [
> "dim2big1",
> "dim2"
> ]
> }
> }
> ```
>
>
> ```
> {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> },
> "updatePeriodCauses": {}
> },
> "summary1": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary1": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary2": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary3": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary3": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary4": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> ```
>
> ```
> {
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
> "cause": "MORE_WEIGHT"
> },
> "testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-18",
> "2015-01-17-18",
> "2015-01-17-19",
> "2015-01-17-20",
> "2015-01-17-21",
> "2015-01-17-22",
> "2015-01-17-23",
> "2015-01-19-00",
> "2015-01-19-01",
> "2015-01-19-02",
> "2015-01-19-03",
> "2015-01-19-04",
> "2015-01-19-05",
> "2015-01-19-06",
> "2015-01-19-07",
> "2015-01-19-08",
> "2015-01-19-09",
> "2015-01-19-10",
> "2015-01-19-11",
> "2015-01-19-12",
> "2015-01-19-13",
> "2015-01-19-14",
> "2015-01-19-15",
> "2015-01-19-16",
> "2015-01-19-17"
> ]
> },
> "testfactmonthly": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> }
> }
> ```
>
>
> ```
> {
> "testfact2_raw,summary4,testfactmonthly,testfact2": {
> "cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
> },
> "cheapfact": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C99": "UNSUPPORTED"
> }
> },
> "summary1": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary1": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary2": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary2": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary1,summary2,summary3,testfact": {
> "cause": "MISSING_PARTITIONS",
> "missingPartitions": [
> "2015-01-18",
> "2015-01-17-19",
> "2015-01-17-20",
> "2015-01-17-21",
> "2015-01-17-22",
> "2015-01-17-23",
> "2015-01-17-18-45",
> "2015-01-17-18-46",
> "2015-01-17-18-47",
> "2015-01-17-18-48",
> "2015-01-17-18-49",
> "2015-01-17-18-50",
> "2015-01-17-18-51",
> "2015-01-17-18-52",
> "2015-01-17-18-53",
> "2015-01-17-18-54",
> "2015-01-17-18-55",
> "2015-01-17-18-56",
> "2015-01-17-18-57",
> "2015-01-17-18-58",
> "2015-01-17-18-59"
> ]
> },
> "summary3": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary3": "PART_COL_DOES_NOT_EXIST"
> }
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "c2_summary4": "PART_COL_DOES_NOT_EXIST"
> }
> }
> }
> ```
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 19, 2015, 1:16 p.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
2. converting getters/setters to annotations.
3. Many testcases were using this pattern:
```
SemanticException th = null;
try{
rewrite(something, something);
Assert.fail("Should have thrown exception");
} catch (SemanticException e) {
e.printStackTrace();
th = e;
}
Assert.assertNotNull(th);
//Other asserts on th
```
Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
5. Modified test cases to check prune cause wherever possible.
6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
Diffs (updated)
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
Diff: https://reviews.apache.org/r/29919/diff/
Testing (updated)
-------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
[INFO] Lens .............................................. SUCCESS [1.627s]
[INFO] Lens API .......................................... SUCCESS [6.922s]
[INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
[INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
[INFO] Lens DB storage ................................... SUCCESS [12.629s]
[INFO] Lens Query Library ................................ SUCCESS [5.685s]
[INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
[INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
[INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
[INFO] Lens Server ....................................... SUCCESS [5:01.175s]
[INFO] Lens client ....................................... SUCCESS [27.307s]
[INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
[INFO] Lens Examples ..................................... SUCCESS [1.011s]
[INFO] Lens Distribution ................................. SUCCESS [4.181s]
[INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
[INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20:11.370s
[INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
[INFO] Final Memory: 110M/1420M
[INFO] ------------------------------------------------------------------------
Some examples of the error json:
```
{
"testfact3_base,testfact3_raw_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"cityid"
]
},
"testfact2_raw_base,testfact2_base": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"msr3",
"msr13"
]
}
}
```
```
{
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND",
"missingColumns": [
"dim2big1",
"dim2"
]
}
}
```
```
{
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
},
"updatePeriodCauses": {}
},
"summary1": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary1": "PART_COL_DOES_NOT_EXIST"
}
},
"summary2": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary3": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary3": "PART_COL_DOES_NOT_EXIST"
}
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary4": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfactmonthly,testfact2,testfact": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
```
```
{
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1,summary2,testfact2_raw,summary3,summary4,testfact2": {
"cause": "MORE_WEIGHT"
},
"testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-18",
"2015-01-17-18",
"2015-01-17-19",
"2015-01-17-20",
"2015-01-17-21",
"2015-01-17-22",
"2015-01-17-23",
"2015-01-19-00",
"2015-01-19-01",
"2015-01-19-02",
"2015-01-19-03",
"2015-01-19-04",
"2015-01-19-05",
"2015-01-19-06",
"2015-01-19-07",
"2015-01-19-08",
"2015-01-19-09",
"2015-01-19-10",
"2015-01-19-11",
"2015-01-19-12",
"2015-01-19-13",
"2015-01-19-14",
"2015-01-19-15",
"2015-01-19-16",
"2015-01-19-17"
]
},
"testfactmonthly": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
}
}
```
```
{
"testfact2_raw,summary4,testfactmonthly,testfact2": {
"cause": "NO_FACT_UPDATE_PERIODS_FOR_GIVEN_RANGE"
},
"cheapfact": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C99": "UNSUPPORTED"
}
},
"summary1": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary1": "PART_COL_DOES_NOT_EXIST"
}
},
"summary2": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary2": "PART_COL_DOES_NOT_EXIST"
}
},
"summary1,summary2,summary3,testfact": {
"cause": "MISSING_PARTITIONS",
"missingPartitions": [
"2015-01-18",
"2015-01-17-19",
"2015-01-17-20",
"2015-01-17-21",
"2015-01-17-22",
"2015-01-17-23",
"2015-01-17-18-45",
"2015-01-17-18-46",
"2015-01-17-18-47",
"2015-01-17-18-48",
"2015-01-17-18-49",
"2015-01-17-18-50",
"2015-01-17-18-51",
"2015-01-17-18-52",
"2015-01-17-18-53",
"2015-01-17-18-54",
"2015-01-17-18-55",
"2015-01-17-18-56",
"2015-01-17-18-57",
"2015-01-17-18-58",
"2015-01-17-18-59"
]
},
"summary3": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary3": "PART_COL_DOES_NOT_EXIST"
}
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"c2_summary4": "PART_COL_DOES_NOT_EXIST"
}
}
}
```
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 19, 2015, 12:48 p.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
2. converting getters/setters to annotations.
3. Many testcases were using this pattern:
```
SemanticException th = null;
try{
rewrite(something, something);
Assert.fail("Should have thrown exception");
} catch (SemanticException e) {
e.printStackTrace();
th = e;
}
Assert.assertNotNull(th);
//Other asserts on th
```
Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
5. Modified test cases to check prune cause wherever possible.
6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
Diffs
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
Diff: https://reviews.apache.org/r/29919/diff/
Testing (updated)
-------
error json looks like this now:
```
{
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
},
"updatePeriodCauses": {}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND"
}
}
```
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Lens Checkstyle Rules ............................. SUCCESS [2.668s]
[INFO] Lens .............................................. SUCCESS [1.627s]
[INFO] Lens API .......................................... SUCCESS [6.922s]
[INFO] Lens API for server and extensions ................ SUCCESS [6.340s]
[INFO] Lens Cube ......................................... SUCCESS [7:15.327s]
[INFO] Lens DB storage ................................... SUCCESS [12.629s]
[INFO] Lens Query Library ................................ SUCCESS [5.685s]
[INFO] Lens Hive Driver .................................. SUCCESS [3:16.607s]
[INFO] Lens Driver for Cloudera Impala ................... SUCCESS [3.937s]
[INFO] Lens Driver for JDBC .............................. SUCCESS [27.892s]
[INFO] Lens Server ....................................... SUCCESS [5:01.175s]
[INFO] Lens client ....................................... SUCCESS [27.307s]
[INFO] Lens CLI .......................................... SUCCESS [2:02.313s]
[INFO] Lens Examples ..................................... SUCCESS [1.011s]
[INFO] Lens Distribution ................................. SUCCESS [4.181s]
[INFO] Lens Client Distribution .......................... SUCCESS [7.506s]
[INFO] Lens ML Lib ....................................... SUCCESS [47.106s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20:11.370s
[INFO] Finished at: Mon Jan 19 12:46:14 UTC 2015
[INFO] Final Memory: 110M/1420M
[INFO] ------------------------------------------------------------------------
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 19, 2015, 12:46 p.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
2. converting getters/setters to annotations.
3. Many testcases were using this pattern:
```
SemanticException th = null;
try{
rewrite(something, something);
Assert.fail("Should have thrown exception");
} catch (SemanticException e) {
e.printStackTrace();
th = e;
}
Assert.assertNotNull(th);
//Other asserts on th
```
Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
5. Modified test cases to check prune cause wherever possible.
6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
Diffs (updated)
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
Diff: https://reviews.apache.org/r/29919/diff/
Testing
-------
error json looks like this now:
```
{
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
},
"updatePeriodCauses": {}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND"
}
}
```
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 19, 2015, 12:44 p.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description (updated)
-------
1. In the json output, showing [(list of facts) -> (error)] instead of (list of [fact -> error]). Many facts have same error, makes the error somewhat compact.
2. converting getters/setters to annotations.
3. Many testcases were using this pattern:
```
SemanticException th = null;
try{
rewrite(something, something);
Assert.fail("Should have thrown exception");
} catch (SemanticException e) {
e.printStackTrace();
th = e;
}
Assert.assertNotNull(th);
//Other asserts on th
```
Introduced a function `getSemanticExceptionInRewrite` which abstracts out this part and directly returns `SemanticException`.
4. Abstracted out `Map<? extends AbstractCubeTable, List<CandidateTablePruneCause>>` as a separate class(`PruneCauses`). In `CubeQueryContext`, `PruneCauses` is used for both fact prune causes and dimtable prune causes. Later on PruneCauses can be implemented as a guavava multimap if need be.
5. Modified test cases to check prune cause wherever possible.
6. I don't think defining an order between Error codes is a good idea. Consider the following scenario:
There are four Prune causes: C1, C2, C3, C4. C1 < C2 < C3 < C4. For a particular query Tables T1, T2, T3, T4 are picked. T2 is rejected with cause C2, T3 with C3, T4 with C4. T1 is the only one that gets picked in the regular case. Now for some reason(e.g. trying the query after some server config changes), T1 is rejected with C1. If we honor the ordering we'll only show T4 was rejected with C4. This might be a wrong depiction of the actual error and would be misleading for both the end user and the developers/debuggers.
Diffs (updated)
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java 5d1b632223692af5d0af6514fe9b3d76e2f32fad
lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java cb70b66fd966bfb71ea67725e15de454a4eb9e32
lens-cube/src/test/java/org/apache/lens/cube/parse/TestDenormalizationResolver.java 42d5a70e1f09289ad1c8ee5e4328e8a5d23c3a28
lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java 771a4ce148ed44c7c7eae94f53e13e5ac8d2cd83
lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java 8787b801a7593f393203c54c0f7bb09aeed875c5
lens-cube/src/test/java/org/apache/lens/cube/parse/TestQueryRewrite.java a8cdb381235365db95e9113ab44181a9d3c6ceb9
Diff: https://reviews.apache.org/r/29919/diff/
Testing
-------
error json looks like this now:
```
{
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
},
"updatePeriodCauses": {}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND"
}
}
```
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 19, 2015, 7:05 a.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description
-------
1. In the json output, showing error -> list of facts instead of list of fact -> error. Many facts have same error, makes the error a bit compact.
2. converting getters/setters to annotations.
Diffs (updated)
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
Diff: https://reviews.apache.org/r/29919/diff/
Testing (updated)
-------
error json looks like this now:
```
{
"summary2,testfact2_raw,summary3": {
"cause": "INVALID_DENORM_TABLE"
},
"summary4": {
"cause": "NO_CANDIDATE_STORAGES",
"storageCauses": {
"C2": "UNSUPPORTED"
},
"updatePeriodCauses": {}
},
"summary1,cheapfact,testfactmonthly,testfact2,testfact": {
"cause": "COLUMN_NOT_FOUND"
}
}
```
Thanks,
Rajat Khandelwal
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
> On Jan. 15, 2015, 9:12 a.m., Amareshwari Sriramadasu wrote:
> > lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java, line 118
> > <https://reviews.apache.org/r/29919/diff/1/?file=822465#file822465line118>
> >
> > Can you add comment for why Setter for groupbyAST, also?
setGroupbyAST is used in some other file elsewhere.
- Rajat
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review68225
-----------------------------------------------------------
On Jan. 19, 2015, 7:05 a.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 19, 2015, 7:05 a.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing error -> list of facts instead of list of fact -> error. Many facts have same error, makes the error a bit compact.
> 2. converting getters/setters to annotations.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/PruneCauses.java PRE-CREATION
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
> error json looks like this now:
>
> ```
> {
> "summary2,testfact2_raw,summary3": {
> "cause": "INVALID_DENORM_TABLE"
> },
> "summary4": {
> "cause": "NO_CANDIDATE_STORAGES",
> "storageCauses": {
> "C2": "UNSUPPORTED"
> },
> "updatePeriodCauses": {}
> },
> "summary1,cheapfact,testfactmonthly,testfact2,testfact": {
> "cause": "COLUMN_NOT_FOUND"
> }
> }
> ```
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Amareshwari Sriramadasu <am...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/#review68225
-----------------------------------------------------------
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
<https://reviews.apache.org/r/29919/#comment112369>
Why is setter required for orderbyAST?
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
<https://reviews.apache.org/r/29919/#comment112370>
Can you add comment for why Setter for groupbyAST, also?
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
<https://reviews.apache.org/r/29919/#comment112371>
Why reverse? Can you add it in a comment in code?
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
<https://reviews.apache.org/r/29919/#comment112372>
Move it util and add javadoc?
Also include a test in util
- Amareshwari Sriramadasu
On Jan. 15, 2015, 7:54 a.m., Rajat Khandelwal wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/29919/
> -----------------------------------------------------------
>
> (Updated Jan. 15, 2015, 7:54 a.m.)
>
>
> Review request for lens.
>
>
> Bugs: LENS-149
> https://issues.apache.org/jira/browse/LENS-149
>
>
> Repository: lens
>
>
> Description
> -------
>
> 1. In the json output, showing error -> list of facts instead of list of fact -> error. Many facts have same error, makes the error a bit compact.
> 2. converting getters/setters to annotations.
>
>
> Diffs
> -----
>
> lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
> lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
> lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
> lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
> lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
> lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
> lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
> lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
> lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java c282b3dbc8b85209d0f9f61ec7dafeba0065816b
>
> Diff: https://reviews.apache.org/r/29919/diff/
>
>
> Testing
> -------
>
>
> Thanks,
>
> Rajat Khandelwal
>
>
Re: Review Request 29919: LENS-149: The error for no candidate fact
table found to answer is too verbose
Posted by Rajat Khandelwal <ra...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29919/
-----------------------------------------------------------
(Updated Jan. 15, 2015, 7:54 a.m.)
Review request for lens.
Bugs: LENS-149
https://issues.apache.org/jira/browse/LENS-149
Repository: lens
Description (updated)
-------
1. In the json output, showing error -> list of facts instead of list of fact -> error. Many facts have same error, makes the error a bit compact.
2. converting getters/setters to annotations.
Diffs
-----
lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java 33a4a7c7357206d48dbc8c91360eb57851f9572d
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTablePruneCause.java b346da6f2a0d18eb11a04a4c4e88d85ba4c2bff9
lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java 4d472acfe2d0d0ef5d505bffc87c1261af76decc
lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 4a03701c73125a14f72378ab84234ad6563e6db8
lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java 5643b361bc0fdd4571ad7ac1c628ce301b552cf3
lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java 0bcc55855e11d2ce55ff73ee10674f9664dcc484
lens-cube/src/main/java/org/apache/lens/cube/parse/LightestDimensionResolver.java 6074952ec2d2d49d24dd227186f4213ddba2ad86
lens-cube/src/main/java/org/apache/lens/cube/parse/StorageTableResolver.java 06550b81988aa5cee06c86c9725770cadee58b3e
lens-cube/src/main/java/org/apache/lens/driver/cube/RewriteUtil.java d2da97d3ad8d20690ff0d2e03d0ff860f6b70c90
lens-server/src/main/java/org/apache/lens/server/util/UtilityMethods.java c282b3dbc8b85209d0f9f61ec7dafeba0065816b
Diff: https://reviews.apache.org/r/29919/diff/
Testing
-------
Thanks,
Rajat Khandelwal