Repository: lens Updated Branches: refs/heads/master 4d3d2f82f -> b84cb2cd3
LENS-903 : No candidate dim available exception should contain only brief error Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/b84cb2cd Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/b84cb2cd Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/b84cb2cd Branch: refs/heads/master Commit: b84cb2cd32a53806278bbe5d45028dbaa760bdf5 Parents: 4d3d2f8 Author: Sushil Mohanty <sushilmoha...@apache.org> Authored: Thu Dec 17 17:31:04 2015 +0530 Committer: Sushil Mohanty <sushilmoha...@apache.org> Committed: Thu Dec 17 17:31:04 2015 +0530 ---------------------------------------------------------------------- .../lens/cube/parse/CubeQueryContext.java | 7 ++++--- .../lens/cube/parse/TestCubeRewriter.java | 22 +++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/b84cb2cd/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java index f75a6b9..4034a54 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java @@ -32,6 +32,7 @@ import java.io.IOException; import java.util.*; import org.apache.lens.cube.error.LensCubeErrorCode; +import org.apache.lens.cube.error.NoCandidateDimAvailableException; import org.apache.lens.cube.error.NoCandidateFactAvailableException; import org.apache.lens.cube.metadata.*; import org.apache.lens.cube.parse.CandidateTablePruneCause.CandidateTablePruneCode; @@ -810,12 +811,12 @@ public class CubeQueryContext implements TrackQueriedColumns { } } } - throw new LensException(LensCubeErrorCode.NO_CANDIDATE_DIM_AVAILABLE.getLensErrorInfo(), - dim.getName(), reason); + log.error("Query rewrite failed due to NO_CANDIDATE_DIM_AVAILABLE, Cause {}", + dimPruningMsgs.get(dim).toJsonObject()); + throw new NoCandidateDimAvailableException(dimPruningMsgs.get(dim)); } } } - return dimsToQuery; } http://git-wip-us.apache.org/repos/asf/lens/blob/b84cb2cd/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java index 802ff42..9a08735 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java @@ -32,6 +32,7 @@ import java.text.SimpleDateFormat; import java.util.*; import org.apache.lens.cube.error.LensCubeErrorCode; +import org.apache.lens.cube.error.NoCandidateDimAvailableException; import org.apache.lens.cube.error.NoCandidateFactAvailableException; import org.apache.lens.cube.metadata.*; import org.apache.lens.cube.parse.CandidateTablePruneCause.SkipStorageCause; @@ -46,6 +47,7 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.ql.Driver; import org.apache.hadoop.hive.ql.metadata.HiveException; +import org.apache.hadoop.hive.ql.metadata.Table; import org.apache.hadoop.hive.ql.parse.ParseException; import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; @@ -1078,6 +1080,23 @@ public class TestCubeRewriter extends TestQueryRewrite { } @Test + public void testNoCandidateDimAvailableExceptionCompare() throws Exception { + + //Max cause COLUMN_NOT_FOUND, Ordinal 9 + PruneCauses<CubeDimensionTable> pr1 = new PruneCauses<CubeDimensionTable>(); + pr1.addPruningMsg(new CubeDimensionTable(new Table("test", "citydim")), + CandidateTablePruneCause.columnNotFound("test1", "test2", "test3")); + NoCandidateDimAvailableException ne1 = new NoCandidateDimAvailableException(pr1); + + //Max cause EXPRESSION_NOT_EVALUABLE, Ordinal 6 + PruneCauses<CubeDimensionTable> pr2 = new PruneCauses<CubeDimensionTable>(); + pr2.addPruningMsg(new CubeDimensionTable(new Table("test", "citydim")), + CandidateTablePruneCause.expressionNotEvaluable("testexp1", "testexp2")); + NoCandidateDimAvailableException ne2 = new NoCandidateDimAvailableException(pr2); + assertEquals(ne1.compareTo(ne2), 3); + } + + @Test public void testDimensionQueryWithMultipleStorages() throws Exception { String hqlQuery = rewrite("select name, stateid from" + " citydim", getConf()); String expected = @@ -1095,7 +1114,8 @@ public class TestCubeRewriter extends TestQueryRewrite { // state table is present on c1 with partition dumps and partitions added LensException e = getLensExceptionInRewrite("select name, capital from statedim ", conf); assertEquals(e.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_DIM_AVAILABLE.getLensErrorInfo().getErrorCode()); - assertEquals(extractPruneCause(e), new PruneCauses.BriefAndDetailedError( + NoCandidateDimAvailableException ne = (NoCandidateDimAvailableException) e; + assertEquals(ne.getJsonMessage(), new PruneCauses.BriefAndDetailedError( NO_CANDIDATE_STORAGES.errorFormat, new HashMap<String, List<CandidateTablePruneCause>>() { {