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

Reply via email to