Revert "LENS-737 : Throw single error out with LensMultiException"
This reverts commit 309a7ed5ddb3f3848ad0efca59b3177beba60dd2. Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/fb235faa Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/fb235faa Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/fb235faa Branch: refs/heads/master Commit: fb235faa74bbcf7a00c36aa105bbf636c5213f04 Parents: 309a7ed Author: raju.bairishetti <r...@apache.org> Authored: Tue Sep 8 11:57:30 2015 +0530 Committer: raju.bairishetti <r...@apache.org> Committed: Tue Sep 8 11:57:30 2015 +0530 ---------------------------------------------------------------------- .../org/apache/lens/api/query/QueryPlan.java | 24 ++ lens-api/src/main/resources/lens-errors.conf | 325 ++++++++++--------- .../lens/cli/commands/LensQueryCommands.java | 83 ++--- .../apache/lens/cli/ExecuteQueryCommandIT.java | 4 +- .../apache/lens/cli/TestLensQueryCommands.java | 8 +- .../java/org/apache/lens/client/LensClient.java | 6 +- .../org/apache/lens/client/LensStatement.java | 47 +-- .../ColUnAvailableInTimeRangeException.java | 6 +- .../FieldsCannotBeQueriedTogetherException.java | 6 +- .../lens/cube/error/LensCubeErrorCode.java | 76 ++--- .../lens/cube/parse/AggregateResolver.java | 2 +- .../apache/lens/cube/parse/AliasReplacer.java | 7 +- .../lens/cube/parse/BetweenTimeRangeWriter.java | 6 +- .../lens/cube/parse/CandidateTableResolver.java | 18 +- .../apache/lens/cube/parse/ColumnResolver.java | 4 +- .../lens/cube/parse/CubeQueryContext.java | 15 +- .../lens/cube/parse/CubeQueryRewriter.java | 4 +- .../org/apache/lens/cube/parse/DateUtil.java | 4 +- .../cube/parse/DenormalizationResolver.java | 6 +- .../org/apache/lens/cube/parse/HQLParser.java | 2 +- .../apache/lens/cube/parse/JoinResolver.java | 12 +- .../lens/cube/parse/MultiFactHQLContext.java | 2 +- .../org/apache/lens/cube/parse/TimeRange.java | 5 +- .../lens/cube/parse/TimerangeResolver.java | 8 +- .../lens/cube/parse/TestBaseCubeQueries.java | 4 +- .../lens/cube/parse/TestCubeRewriter.java | 24 +- .../lens/cube/parse/TestExpressionResolver.java | 6 +- .../lens/cube/parse/TestJoinResolver.java | 4 +- .../lens/cube/parse/TestTimeRangeExtractor.java | 4 +- .../lens/cube/parse/TestTimeRangeWriter.java | 3 +- .../parse/TestTimeRangeWriterWithQuery.java | 2 +- .../driver/es/exceptions/ESClientException.java | 17 +- .../es/exceptions/InvalidQueryException.java | 18 +- .../apache/lens/server/api/LensErrorInfo.java | 34 -- .../lens/server/api/driver/DriverQueryPlan.java | 2 +- .../lens/server/api/error/LensException.java | 102 ++---- .../api/error/LensMultiCauseException.java | 20 +- .../lens/server/error/LensServerErrorCode.java | 18 +- .../UnSupportedQuerySubmitOpException.java | 4 +- .../server/query/QueryExecutionServiceImpl.java | 29 +- .../lens/server/query/QueryServiceResource.java | 33 +- .../common/ErrorResponseExpectedData.java | 2 +- .../lens/server/common/FailingQueryDriver.java | 2 +- .../server/query/QueryAPIErrorResponseTest.java | 22 +- .../lens/server/query/TestQueryService.java | 50 +-- 45 files changed, 495 insertions(+), 585 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-api/src/main/java/org/apache/lens/api/query/QueryPlan.java ---------------------------------------------------------------------- diff --git a/lens-api/src/main/java/org/apache/lens/api/query/QueryPlan.java b/lens-api/src/main/java/org/apache/lens/api/query/QueryPlan.java index c46972d..164195b 100644 --- a/lens-api/src/main/java/org/apache/lens/api/query/QueryPlan.java +++ b/lens-api/src/main/java/org/apache/lens/api/query/QueryPlan.java @@ -114,8 +114,32 @@ public class QueryPlan extends QuerySubmitResult { @Getter private QueryCostTO queryCost; + /** + * The error. + */ + @XmlElement + @Getter + private boolean error = false; + + /** + * The error msg. + */ + @XmlElement + @Getter + private String errorMsg; + public String getPlanString() throws UnsupportedEncodingException { return URLDecoder.decode(planString, "UTF-8"); } + /** + * Instantiates a new query plan. + * + * @param hasError the has error + * @param errorMsg the error msg + */ + public QueryPlan(boolean hasError, String errorMsg) { + this.error = hasError; + this.errorMsg = errorMsg; + } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-api/src/main/resources/lens-errors.conf ---------------------------------------------------------------------- diff --git a/lens-api/src/main/resources/lens-errors.conf b/lens-api/src/main/resources/lens-errors.conf index 5428041..3fb191e 100644 --- a/lens-api/src/main/resources/lens-errors.conf +++ b/lens-api/src/main/resources/lens-errors.conf @@ -83,178 +83,179 @@ lensCubeErrors = [ { errorCode = 3002 httpStatusCode = ${BAD_REQUEST} - errorMsg = "%s. Please remove conflicting fields and try again." - payloadClass = org.apache.lens.cube.error.ConflictingFields - } - - { - errorCode = 3003 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "More than one cube accessed in query : %s and %s" - } - - { - errorCode = 3004 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Neither cube nor dimensions accessed in the query" - } - - { - errorCode = 3005 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No timerange filter specified" - } - - { - errorCode = 3006 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "%s is not timed dimension" - } - - { - errorCode = 3007 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Error in parsing input date format. Expected format %s, date provided %s" - } - - { - errorCode = 3008 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Date value cannot be null or empty" - } - - { - errorCode = 3009 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Invalid time unit %s" - } - - { - errorCode = 3010 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Selecting all columns is not supported" - } - - { - errorCode = 3011 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Ambiguous column %s, in dimensions %s and %s" - } - - { - errorCode = 3012 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Ambiguous column %s, in cube: %s and in dimension: %s" - } - - { - errorCode = 3013 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "%s : Not a cube column" - } - - { - errorCode = 3014 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Invalid time range" - } - - { - errorCode = 3015 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "From date: %s should be smaller than to date: %s" - } - - { - errorCode = 3016 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Join target table: %s is neither dimension nor cube" - } - - { - errorCode = 3017 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Configured timerange writer cannot be used. Reason %s" - } - - { - errorCode = 3018 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No join condition available" - } - - { - errorCode = 3019 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Expression %s is not available in any fact" - } - - { - errorCode = 3020 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Default aggregate is not set for measure: %s" - } - - { - errorCode = 3021 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No join path defined from %s to %s" - } - - { - errorCode = 3022 - httpStatusCode = ${BAD_REQUEST} errorMsg = "%s can only be queried %s. Please adjust the selected time range accordingly." payloadClass = org.apache.lens.cube.error.ColUnAvailableInTimeRange } { - errorCode = 3023 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No dimension table has the queried columns for %s, columns: %s" - } - - { - errorCode = 3024 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No fact table has the queried columns : %s" - } - - { - errorCode = 3025 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No reference column available for : %s " - } - - { - errorCode = 3026 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "Could not find the table containing column: %s" - } - - { - errorCode = 3027 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No candidate dimension table available for %s to answer the query, because %s" - } - - { - errorCode = 3028 + errorCode = 3003 httpStatusCode = ${BAD_REQUEST} - errorMsg = "No candidate fact table available to answer the query, because %s" + errorMsg = "%s. Please remove conflicting fields and try again." + payloadClass = org.apache.lens.cube.error.ConflictingFields } { - errorCode = 3029 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No candidate dimension storage tables for dimension because %s" - } + errorCode = 3004 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No reference column available for : %s " + } + + { + errorCode = 3005 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "More than one cube accessed in query : %s and %s" + } + + { + errorCode = 3006 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Neither cube nor dimensions accessed in the query" + } + + { + errorCode = 3007 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No timerange filter specified" + } + + { + errorCode = 3008 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "%s is not timed dimension" + } + + { + errorCode = 3009 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Error in parsing input date format. Expected format %s, date provided %s" + } + + { + errorCode = 3010 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Date value cannot be null or empty" + } + + { + errorCode = 3011 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Invalid time unit %s" + } + + { + errorCode = 3012 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Selecting all columns is not supported" + } + + { + errorCode = 3013 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Ambiguous column %s, in dimensions %s and %s" + } + + { + errorCode = 3014 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Ambiguous column %s, in cube: %s and in dimension: %s" + } + + { + errorCode = 3015 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Could not find the table containing column: %s" + } + + { + errorCode = 3016 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "%s : Not a cube column" + } + + { + errorCode = 3017 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No candidate fact table available to answer the query, because %s" + } + + { + errorCode = 3018 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No join condition available" + } + + { + errorCode = 3019 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No storage table available for candidate fact: %s" + } + + { + errorCode = 3020 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Default aggregate is not set for measure: %s" + } + + { + errorCode = 3021 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Invalid time range" + } + + { + errorCode = 3022 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "From date: %s should be smaller than to date: %s" + } + + { + errorCode = 3023 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No join path defined from %s to %s" + } + + { + errorCode = 3024 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Join target table: %s is neither dimension nor cube" + } + + { + errorCode = 3025 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No fact table has the queried columns : %s" + } + + { + errorCode = 3026 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No candidate dimension storage tables for dimension because %s" + } + + { + errorCode = 3027 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No dimension table has the queried columns for %s, columns: %s" + } + + { + errorCode = 3028 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "No candidate dimension table available for %s to answer the query, because %s" + } + + { + errorCode = 3029 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Configured timerange writer cannot be used. Reason %s" + } + + { + errorCode = 3030 + httpStatusCode = ${BAD_REQUEST} + errorMsg = "Expression %s is not available in any fact" + } - { - errorCode = 3030 - httpStatusCode = ${BAD_REQUEST} - errorMsg = "No storage table available for candidate fact: %s" - } ] # Overriding errors in lens-errors.conf via lens-errors-override.conf: http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java index 44c0c62..7a5b177 100644 --- a/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java +++ b/lens-cli/src/main/java/org/apache/lens/cli/commands/LensQueryCommands.java @@ -206,34 +206,26 @@ public class LensQueryCommands extends BaseLensCommand { * @param sql the sql * @param location the location * @return the string - * @throws LensAPIException * @throws UnsupportedEncodingException the unsupported encoding exception */ - @CliCommand(value = "query explain", help = "Explain execution plan of query <query-string>. " - + "Can optionally save the plan to a file by providing <save_location>") - public String explainQuery(@CliOption(key = { "", "query" }, mandatory = true, help = "<query-string>") String sql, - @CliOption(key = { "save_location" }, mandatory = false, help = "<save_location>") final File path) - throws IOException, LensAPIException { - PrettyPrintable cliOutput; - - try { - QueryPlan plan = getClient().getQueryPlan(sql).getData(); - if (path != null && StringUtils.isNotBlank(path.getPath())) { - String validPath = getValidPath(path, false, false); - try (OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(validPath), - Charset.defaultCharset())) { - osw.write(plan.getPlanString()); - } - return "Saved to " + validPath; + @CliCommand(value = "query explain", + help = "Explain execution plan of query <query-string>. Can optionally save the plan" + + " to a file by providing <save_location>") + public String explainQuery(@CliOption(key = {"", "query"}, mandatory = true, help = "<query-string>") String sql, + @CliOption(key = {"save_location"}, mandatory = false, help = "<save_location>") final File path) + throws IOException { + QueryPlan plan = getClient().getQueryPlan(sql); + if (plan.isError()) { + return "Explain FAILED:" + plan.getErrorMsg(); + } + if (path != null && StringUtils.isNotBlank(path.getPath())) { + String validPath = getValidPath(path, false, false); + try (OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(validPath), Charset.defaultCharset())) { + osw.write(plan.getPlanString()); } - return plan.getPlanString(); - } catch (final LensAPIException e) { - BriefError briefError = new BriefError(e.getLensAPIErrorCode(), e.getLensAPIErrorMessage()); - cliOutput = new IdBriefErrorTemplate(IdBriefErrorTemplateKey.REQUEST_ID, e.getLensAPIRequestId(), briefError); - } catch (final LensBriefErrorException e) { - cliOutput = e.getIdBriefErrorTemplate(); + return "Saved to " + validPath; } - return cliOutput.toPrettyString(); + return plan.getPlanString(); } /** @@ -454,47 +446,36 @@ public class LensQueryCommands extends BaseLensCommand { * @param queryName the query name * @return the string * @throws UnsupportedEncodingException the unsupported encoding exception - * @throws LensAPIException */ @CliCommand(value = "prepQuery prepare", help = "Prepapre query <query-string> and return prepare handle. Can optionaly provide <query-name>") public String prepare(@CliOption(key = {"", "query"}, mandatory = true, help = "<query-string>") String sql, @CliOption(key = {"name"}, mandatory = false, help = "<query-name>") String queryName) - throws UnsupportedEncodingException, LensAPIException { - return getClient().prepare(sql, queryName).getData().toString(); + throws UnsupportedEncodingException { + return getClient().prepare(sql, queryName).toString(); } /** * Explain and prepare. * - * @param sql - * the sql - * @param queryName - * the query name + * @param sql the sql + * @param queryName the query name * @return the string - * @throws UnsupportedEncodingException - * the unsupported encoding exception - * @throws LensAPIException + * @throws UnsupportedEncodingException the unsupported encoding exception */ - @CliCommand(value = "prepQuery explain", help = "Explain and prepare query <query-string>. " - + "Can optionally provide <query-name>") + @CliCommand(value = "prepQuery explain", + help = "Explain and prepare query <query-string>. Can optionally provide <query-name>") public String explainAndPrepare( + @CliOption(key = {"", "query"}, mandatory = true, help = "<query-string>") String sql, + @CliOption(key = {"name"}, mandatory = false, help = "<query-name>") String queryName) + throws UnsupportedEncodingException { - @CliOption(key = { "", "query" }, mandatory = true, help = "<query-string>") String sql, - @CliOption(key = { "name" }, mandatory = false, help = "<query-name>") String queryName) - throws UnsupportedEncodingException, LensAPIException { - PrettyPrintable cliOutput; - try { - QueryPlan plan = getClient().explainAndPrepare(sql, queryName).getData(); - StringBuilder planStr = new StringBuilder(plan.getPlanString()); - planStr.append("\n").append("Prepare handle:").append(plan.getPrepareHandle()); - return planStr.toString(); - } catch (final LensAPIException e) { - BriefError briefError = new BriefError(e.getLensAPIErrorCode(), e.getLensAPIErrorMessage()); - cliOutput = new IdBriefErrorTemplate(IdBriefErrorTemplateKey.REQUEST_ID, e.getLensAPIRequestId(), briefError); - } catch (final LensBriefErrorException e) { - cliOutput = e.getIdBriefErrorTemplate(); + QueryPlan plan = getClient().explainAndPrepare(sql, queryName); + if (plan.isError()) { + return "Explain FAILED:" + plan.getErrorMsg(); } - return cliOutput.toPrettyString(); + StringBuilder planStr = new StringBuilder(plan.getPlanString()); + planStr.append("\n").append("Prepare handle:").append(plan.getPrepareHandle()); + return planStr.toString(); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cli/src/test/java/org/apache/lens/cli/ExecuteQueryCommandIT.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/ExecuteQueryCommandIT.java b/lens-cli/src/test/java/org/apache/lens/cli/ExecuteQueryCommandIT.java index 7f8b091..b3fcccb 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/ExecuteQueryCommandIT.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/ExecuteQueryCommandIT.java @@ -23,9 +23,11 @@ import static org.testng.Assert.assertTrue; import org.apache.lens.cli.commands.LensQueryCommands; import org.apache.lens.client.LensClient; +import org.testng.annotations.Test; + public class ExecuteQueryCommandIT extends LensCliApplicationTest { - // @Test + @Test public void testExecuteSyncQueryWithSyntaxError() { LensQueryCommands lensQueryCommands = new LensQueryCommands(); http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java ---------------------------------------------------------------------- diff --git a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java index 308c036..7a437a1 100644 --- a/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java +++ b/lens-cli/src/test/java/org/apache/lens/cli/TestLensQueryCommands.java @@ -83,11 +83,11 @@ public class TestLensQueryCommands extends LensCliApplicationTest { testExecuteAsyncQuery(qCom); testSyncResults(qCom); testExplainQuery(qCom); - //testExplainFailQuery(qCom); + testExplainFailQuery(qCom); testPreparedQuery(qCom); testShowPersistentResultSet(qCom); testPurgedFinishedResultSet(qCom); - //testFailPreparedQuery(qCom); + testFailPreparedQuery(qCom); // run all query commands with query metrics enabled. client = new LensClient(); client.setConnectionParam("lens.query.enable.persistent.resultset.indriver", "false"); @@ -99,11 +99,11 @@ public class TestLensQueryCommands extends LensCliApplicationTest { testExecuteAsyncQuery(qCom); testSyncResults(qCom); testExplainQuery(qCom); - //testExplainFailQuery(qCom); + testExplainFailQuery(qCom); testPreparedQuery(qCom); testShowPersistentResultSet(qCom); testPurgedFinishedResultSet(qCom); - //testFailPreparedQuery(qCom); + testFailPreparedQuery(qCom); } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-client/src/main/java/org/apache/lens/client/LensClient.java ---------------------------------------------------------------------- diff --git a/lens-client/src/main/java/org/apache/lens/client/LensClient.java b/lens-client/src/main/java/org/apache/lens/client/LensClient.java index 5fd04c4..afc76e5 100644 --- a/lens-client/src/main/java/org/apache/lens/client/LensClient.java +++ b/lens-client/src/main/java/org/apache/lens/client/LensClient.java @@ -207,7 +207,7 @@ public class LensClient { return getQueryDetails(QueryHandle.fromString(handle)); } - public LensAPIResult<QueryPlan> getQueryPlan(String q) throws LensAPIException { + public QueryPlan getQueryPlan(String q) { return new LensStatement(connection).explainQuery(q); } @@ -569,11 +569,11 @@ public class LensClient { return mc.updatePartitionsOfDimensionTable(table, storage, partsSpec); } - public LensAPIResult<QueryPrepareHandle> prepare(String sql, String queryName) throws LensAPIException { + public QueryPrepareHandle prepare(String sql, String queryName) { return statement.prepareQuery(sql, queryName); } - public LensAPIResult<QueryPlan> explainAndPrepare(String sql, String queryName) throws LensAPIException { + public QueryPlan explainAndPrepare(String sql, String queryName) { return statement.explainAndPrepare(sql, queryName); } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-client/src/main/java/org/apache/lens/client/LensStatement.java ---------------------------------------------------------------------- diff --git a/lens-client/src/main/java/org/apache/lens/client/LensStatement.java b/lens-client/src/main/java/org/apache/lens/client/LensStatement.java index 0a511f0..397bd82 100644 --- a/lens-client/src/main/java/org/apache/lens/client/LensStatement.java +++ b/lens-client/src/main/java/org/apache/lens/client/LensStatement.java @@ -127,9 +127,8 @@ public class LensStatement { * @param sql the sql * @param queryName the query name * @return the query prepare handle - * @throws LensAPIException */ - public LensAPIResult<QueryPrepareHandle> prepareQuery(String sql, String queryName) throws LensAPIException { + public QueryPrepareHandle prepareQuery(String sql, String queryName) { if (!connection.isOpen()) { throw new IllegalStateException("Lens Connection has to be " + "established before querying"); } @@ -137,14 +136,11 @@ public class LensStatement { Client client = connection.buildClient(); WebTarget target = getPreparedQueriesWebTarget(client); - Response response = target.request().post(Entity.entity(prepareForm(sql, "PREPARE", queryName), - MediaType.MULTIPART_FORM_DATA_TYPE)); - - if (response.getStatus() == Response.Status.OK.getStatusCode()) { - return response.readEntity(new GenericType<LensAPIResult<QueryPrepareHandle>>() {}); - } - - throw new LensAPIException(response.readEntity(LensAPIResult.class)); + QueryPrepareHandle handle = target.request().post( + Entity.entity(prepareForm(sql, "PREPARE", queryName), MediaType.MULTIPART_FORM_DATA_TYPE), + QueryPrepareHandle.class); + getPreparedQuery(handle); + return handle; } /** @@ -153,9 +149,8 @@ public class LensStatement { * @param sql the sql * @param queryName the query name * @return the query plan - * @throws LensAPIException */ - public LensAPIResult<QueryPlan> explainAndPrepare(String sql, String queryName) throws LensAPIException { + public QueryPlan explainAndPrepare(String sql, String queryName) { if (!connection.isOpen()) { throw new IllegalStateException("Lens Connection has to be " + "established before querying"); } @@ -164,15 +159,10 @@ public class LensStatement { WebTarget target = getPreparedQueriesWebTarget(client); - Response response = target.request().post( - Entity.entity(prepareForm(sql, "EXPLAIN_AND_PREPARE", queryName), MediaType.MULTIPART_FORM_DATA_TYPE), - Response.class); - if (response.getStatus() == Response.Status.OK.getStatusCode()) { - return response.readEntity(new GenericType<LensAPIResult<QueryPlan>>() {}); - } - - throw new LensAPIException(response.readEntity(LensAPIResult.class)); - + QueryPlan plan = target.request().post( + Entity.entity(prepareForm(sql, "EXPLAIN_AND_PREPARE", queryName), MediaType.MULTIPART_FORM_DATA_TYPE), + QueryPlan.class); + return plan; } /** @@ -351,11 +341,10 @@ public class LensStatement { * * @param sql the sql * @return the query plan - * @throws LensAPIException */ - public LensAPIResult<QueryPlan> explainQuery(String sql) throws LensAPIException { + public QueryPlan explainQuery(String sql) { if (!connection.isOpen()) { - throw new IllegalStateException("Lens Connection has to be established before querying"); + throw new IllegalStateException("Lens Connection has to be " + "established before querying"); } Client client = connection.buildClient(); @@ -367,13 +356,9 @@ public class LensStatement { WebTarget target = getQueryWebTarget(client); - Response response = target.request().post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE)); - - if (response.getStatus() == Response.Status.OK.getStatusCode()) { - return response.readEntity(new GenericType<LensAPIResult<QueryPlan>>() {}); - } - - throw new LensAPIException(response.readEntity(LensAPIResult.class)); + QueryPlan handle = target.request().post(Entity.entity(mp, MediaType.MULTIPART_FORM_DATA_TYPE), + new GenericType<LensAPIResult<QueryPlan>>() {}).getData(); + return handle; } /** http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/error/ColUnAvailableInTimeRangeException.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/error/ColUnAvailableInTimeRangeException.java b/lens-cube/src/main/java/org/apache/lens/cube/error/ColUnAvailableInTimeRangeException.java index 94badb9..dd3bb72 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/error/ColUnAvailableInTimeRangeException.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/error/ColUnAvailableInTimeRangeException.java @@ -35,7 +35,7 @@ public class ColUnAvailableInTimeRangeException extends LensException { public ColUnAvailableInTimeRangeException(@NonNull final ColUnAvailableInTimeRange colUnAvailableInTimeRange) { - super(COLUMN_UNAVAILABLE_IN_TIME_RANGE.getLensErrorInfo()); + super(COLUMN_UNAVAILABLE_IN_TIME_RANGE.getValue()); this.colUnAvailableInTimeRange = colUnAvailableInTimeRange; } @@ -52,8 +52,8 @@ public class ColUnAvailableInTimeRangeException extends LensException { protected LensErrorTO buildLensErrorTO(final ErrorCollection errorCollection, final String errorMsg, final String stackTrace) { - return LensErrorTO.composedOf(COLUMN_UNAVAILABLE_IN_TIME_RANGE.getLensErrorInfo().getErrorCode(), - errorMsg, stackTrace, colUnAvailableInTimeRange); + return LensErrorTO.composedOf(COLUMN_UNAVAILABLE_IN_TIME_RANGE.getValue(), errorMsg, stackTrace, + colUnAvailableInTimeRange); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/error/FieldsCannotBeQueriedTogetherException.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/error/FieldsCannotBeQueriedTogetherException.java b/lens-cube/src/main/java/org/apache/lens/cube/error/FieldsCannotBeQueriedTogetherException.java index bcd42dc..65b96d7 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/error/FieldsCannotBeQueriedTogetherException.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/error/FieldsCannotBeQueriedTogetherException.java @@ -37,7 +37,7 @@ public class FieldsCannotBeQueriedTogetherException extends LensException { public FieldsCannotBeQueriedTogetherException(@NonNull final ConflictingFields conflictingFields) { - super(FIELDS_CANNOT_BE_QUERIED_TOGETHER.getLensErrorInfo()); + super(FIELDS_CANNOT_BE_QUERIED_TOGETHER.getValue()); this.conflictingFields = conflictingFields; } @@ -52,7 +52,7 @@ public class FieldsCannotBeQueriedTogetherException extends LensException { protected LensErrorTO buildLensErrorTO(final ErrorCollection errorCollection, final String errorMsg, final String stackTrace) { - return LensErrorTO.composedOf(FIELDS_CANNOT_BE_QUERIED_TOGETHER.getLensErrorInfo().getErrorCode(), - errorMsg, stackTrace, conflictingFields); + return LensErrorTO.composedOf(FIELDS_CANNOT_BE_QUERIED_TOGETHER.getValue(), errorMsg, stackTrace, + conflictingFields); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java b/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java index 73a584f..1fe74e2 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/error/LensCubeErrorCode.java @@ -18,50 +18,46 @@ */ package org.apache.lens.cube.error; -import org.apache.lens.server.api.LensErrorInfo; - public enum LensCubeErrorCode { - // Error codes same for drivers - SYNTAX_ERROR(3001, 0), - FIELDS_CANNOT_BE_QUERIED_TOGETHER(3002, 0), - MORE_THAN_ONE_CUBE(3003, 0), - NEITHER_CUBE_NOR_DIMENSION(3004, 0), - NO_TIMERANGE_FILTER(3005, 0), - NOT_A_TIMED_DIMENSION(3006, 0), - WRONG_TIME_RANGE_FORMAT(3007, 0), - NULL_DATE_VALUE(3008, 0), - INVALID_TIME_UNIT(3009, 0), - ALL_COLUMNS_NOT_SUPPORTED(3010, 0), - AMBIGOUS_DIM_COLUMN(3011, 0), - AMBIGOUS_CUBE_COLUMN(3012, 0), - NOT_A_CUBE_COLUMN(3013, 0), - INVALID_TIME_RANGE(3014, 0), - FROM_AFTER_TO(3015, 0), - JOIN_TARGET_NOT_CUBE_TABLE(3016, 0), - // Error codes different for drivers - CANNOT_USE_TIMERANGE_WRITER(3017, 100), - NO_DEFAULT_AGGREGATE(3018, 200), - EXPRESSION_NOT_IN_ANY_FACT(3019, 300), - NO_JOIN_CONDITION_AVAIABLE(3020, 400), - NO_JOIN_PATH(3021, 500), - COLUMN_UNAVAILABLE_IN_TIME_RANGE(3022, 600), - NO_DIM_HAS_COLUMN(3023, 700), - NO_FACT_HAS_COLUMN(3024, 800), - NO_REF_COL_AVAILABLE(3025, 900), - COLUMN_NOT_FOUND(3026, 1000), - NO_CANDIDATE_DIM_AVAILABLE(3027, 1100), - NO_CANDIDATE_FACT_AVAILABLE(3028, 1200), - NO_CANDIDATE_DIM_STORAGE_TABLES(3029, 1300), - NO_STORAGE_TABLE_AVAIABLE(3030, 1400); - public LensErrorInfo getLensErrorInfo() { - return this.errorInfo; - } + SYNTAX_ERROR(3001), + COLUMN_UNAVAILABLE_IN_TIME_RANGE(3002), + FIELDS_CANNOT_BE_QUERIED_TOGETHER(3003), + NO_REF_COL_AVAILABLE(3004), + MORE_THAN_ONE_CUBE(3005), + NEITHER_CUBE_NOR_DIMENSION(3006), + NO_TIMERANGE_FILTER(3007), + NOT_A_TIMED_DIMENSION(3008), + WRONG_TIME_RANGE_FORMAT(3009), + NULL_DATE_VALUE(3010), + INVALID_TIME_UNIT(3011), + ALL_COLUMNS_NOT_SUPPORTED(3012), + AMBIGOUS_DIM_COLUMN(3013), + AMBIGOUS_CUBE_COLUMN(3014), + COLUMN_NOT_FOUND(3015), + NOT_A_CUBE_COLUMN(3016), + NO_CANDIDATE_FACT_AVAILABLE(3017), + NO_JOIN_CONDITION_AVAIABLE(3018), + NO_STORAGE_TABLE_AVAIABLE(3019), + NO_DEFAULT_AGGREGATE(3020), + INVALID_TIME_RANGE(3021), + FROM_AFTER_TO(3022), + NO_JOIN_PATH(3023), + JOIN_TARGET_NOT_CUBE_TABLE(3024), + NO_FACT_HAS_COLUMN(3025), + NO_CANDIDATE_DIM_STORAGE_TABLES(3026), + NO_DIM_HAS_COLUMN(3027), + NO_CANDIDATE_DIM_AVAILABLE(3028), + CANNOT_USE_TIMERANGE_WRITER(3029), + EXPRESSION_NOT_IN_ANY_FACT(3030); - LensCubeErrorCode(final int code, final int weight) { - this.errorInfo = new LensErrorInfo(code, weight, name()); + public int getValue() { + return this.errorCode; } - private final LensErrorInfo errorInfo; + LensCubeErrorCode(final int code) { + this.errorCode = code; + } + private final int errorCode; } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java index b544a67..9c0f936 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/AggregateResolver.java @@ -188,7 +188,7 @@ class AggregateResolver implements ContextRewriter { String aggregateFn = measure.getAggregate(); if (StringUtils.isBlank(aggregateFn)) { - throw new LensException(LensCubeErrorCode.NO_DEFAULT_AGGREGATE.getLensErrorInfo(), colname); + throw new LensException(LensCubeErrorCode.NO_DEFAULT_AGGREGATE.getValue(), colname); } ASTNode fnroot = new ASTNode(new CommonToken(HiveParser.TOK_FUNCTION)); fnroot.setParent(node.getParent()); http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/AliasReplacer.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/AliasReplacer.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/AliasReplacer.java index 0656049..98e38d5 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/AliasReplacer.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/AliasReplacer.java @@ -145,21 +145,20 @@ class AliasReplacer implements ContextRewriter { if (!inCube) { String prevDim = colToTableAlias.get(col.toLowerCase()); if (prevDim != null && !prevDim.equals(dim.getName())) { - throw new LensException(LensCubeErrorCode.AMBIGOUS_DIM_COLUMN.getLensErrorInfo(), - col, prevDim, dim.getName()); + throw new LensException(LensCubeErrorCode.AMBIGOUS_DIM_COLUMN.getValue(), col, prevDim, dim.getName()); } String dimAlias = cubeql.getAliasForTableName(dim.getName()); colToTableAlias.put(col.toLowerCase(), dimAlias); tqc.addColumnsQueried(dimAlias, col.toLowerCase()); } else { // throw error because column is in both cube and dimension table - throw new LensException(LensCubeErrorCode.AMBIGOUS_CUBE_COLUMN.getLensErrorInfo(), col, + throw new LensException(LensCubeErrorCode.AMBIGOUS_CUBE_COLUMN.getValue(), col, cubeql.getCube().getName(), dim.getName()); } } } if (colToTableAlias.get(col.toLowerCase()) == null) { - throw new LensException(LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo(), col); + throw new LensException(LensCubeErrorCode.COLUMN_NOT_FOUND.getValue(), col); } } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java index bd19d4c..4bd7cc8 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/BetweenTimeRangeWriter.java @@ -52,7 +52,7 @@ public class BetweenTimeRangeWriter implements TimeRangeWriter { while (it.hasNext()) { FactPartition part = it.next(); if (part.hasContainingPart()) { - throw new LensException(LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getValue(), "Partition has containing part"); } if (first == null) { @@ -60,11 +60,11 @@ public class BetweenTimeRangeWriter implements TimeRangeWriter { } else { // validate partcol, update period are same for both if (!first.getPartCol().equalsIgnoreCase(part.getPartCol())) { - throw new LensException(LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getValue(), "Part columns are different in partitions"); } if (!first.getPeriod().equals(part.getPeriod())) { - throw new LensException(LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getValue(), "Partitions are in different update periods"); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java index f81f3d5..69fbcc5 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java @@ -92,8 +92,8 @@ class CandidateTableResolver implements ContextRewriter { if (cubeql.getCube() != null) { List<CubeFactTable> factTables = cubeql.getMetastoreClient().getAllFacts(cubeql.getCube()); if (factTables.isEmpty()) { - throw new LensException(LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo(), - cubeql.getCube().getName() + " does not have any facts"); + throw new LensException(LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getValue(), cubeql.getCube().getName() + + " does not have any facts"); } for (CubeFactTable fact : factTables) { CandidateFact cfact = new CandidateFact(fact, cubeql.getCube()); @@ -122,7 +122,7 @@ class CandidateTableResolver implements ContextRewriter { List<CubeDimensionTable> dimtables = cubeql.getMetastoreClient().getAllDimensionTables(dim); if (dimtables.isEmpty()) { if (!optional) { - throw new LensException(LensCubeErrorCode.NO_CANDIDATE_DIM_AVAILABLE.getLensErrorInfo(), dim.getName(), + throw new LensException(LensCubeErrorCode.NO_CANDIDATE_DIM_AVAILABLE.getValue(), dim.getName(), "Dimension tables do not exist"); } else { log.info("Not considering optional dimension {} as, No dimension tables exist", dim); @@ -284,7 +284,7 @@ class CandidateTableResolver implements ContextRewriter { Set<String> dimExprs = new HashSet<String>(cubeql.getQueriedExprs()); dimExprs.removeAll(cubeql.getQueriedExprsWithMeasures()); if (cubeql.getCandidateFacts().size() == 0) { - throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getValue(), (!queriedDimAttrs.isEmpty() ? queriedDimAttrs.toString() : "") + (!dimExprs.isEmpty() ? dimExprs.toString() : "")); } @@ -308,14 +308,14 @@ class CandidateTableResolver implements ContextRewriter { String msrString = (!queriedMsrs.isEmpty() ? queriedMsrs.toString() : "") + (!cubeql.getQueriedExprsWithMeasures().isEmpty() ? cubeql.getQueriedExprsWithMeasures().toString() : ""); if (cfactset.isEmpty()) { - throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getLensErrorInfo(), msrString); + throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getValue(), msrString); } cubeql.getCandidateFactSets().addAll(cfactset); cubeql.pruneCandidateFactWithCandidateSet(CandidateTablePruneCause.columnNotFound(queriedMsrs, cubeql.getQueriedExprsWithMeasures())); if (cubeql.getCandidateFacts().size() == 0) { - throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getLensErrorInfo(), msrString); + throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getValue(), msrString); } } } @@ -431,7 +431,7 @@ class CandidateTableResolver implements ContextRewriter { OptionalDimCtx optdim = cubeql.getOptionalDimensionMap().get(dim); if ((cubeql.getDimensions() != null && cubeql.getDimensions().contains(dim)) || (optdim != null && optdim.isRequiredInJoinChain)) { - throw new LensException(LensCubeErrorCode.NO_DIM_HAS_COLUMN.getLensErrorInfo(), dim.getName(), + throw new LensException(LensCubeErrorCode.NO_DIM_HAS_COLUMN.getValue(), dim.getName(), cubeql.getAutoJoinCtx().getAllJoinPathColumnsOfTable(dim).toString()); } else { // remove it from optional tables @@ -474,7 +474,7 @@ class CandidateTableResolver implements ContextRewriter { } } if (cubeql.getCandidateFacts().size() == 0) { - throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getValue(), colSet == null ? "NULL" : colSet.toString()); } } @@ -669,7 +669,7 @@ class CandidateTableResolver implements ContextRewriter { } if (cubeql.getCandidateDimTables().get(dim).size() == 0) { - throw new LensException(LensCubeErrorCode.NO_DIM_HAS_COLUMN.getLensErrorInfo(), dim.getName(), cubeql + throw new LensException(LensCubeErrorCode.NO_DIM_HAS_COLUMN.getValue(), dim.getName(), cubeql .getColumnsQueried(dim.getName()).toString()); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java index b95595a..dfe0c32 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/ColumnResolver.java @@ -55,7 +55,7 @@ class ColumnResolver implements ContextRewriter { if (star != null) { int starType = star.getToken().getType(); if (TOK_FUNCTIONSTAR == starType || TOK_ALLCOLREF == starType) { - throw new LensException(LensCubeErrorCode.ALL_COLUMNS_NOT_SUPPORTED.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.ALL_COLUMNS_NOT_SUPPORTED.getValue()); } } } @@ -70,7 +70,7 @@ class ColumnResolver implements ContextRewriter { for (String table : cubeql.getTblAliasToColumns().keySet()) { if (!CubeQueryContext.DEFAULT_TABLE.equalsIgnoreCase(table)) { if (!cubeql.addQueriedTable(table)) { - throw new LensException(LensCubeErrorCode.NEITHER_CUBE_NOR_DIMENSION.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.NEITHER_CUBE_NOR_DIMENSION.getValue()); } } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/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 450d172..16429f0 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 @@ -224,7 +224,7 @@ public class CubeQueryContext implements TrackQueriedColumns { boolean added = addJoinChain(alias, false); if (!added) { log.info("Queried tables do not exist. Missing table:{}", alias); - throw new LensException(LensCubeErrorCode.NEITHER_CUBE_NOR_DIMENSION.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.NEITHER_CUBE_NOR_DIMENSION.getValue()); } } } @@ -259,7 +259,7 @@ public class CubeQueryContext implements TrackQueriedColumns { boolean added = addQueriedTable(alias, destTable, isOptional, true); if (!added) { log.info("Queried tables do not exist. Missing tables:{}", destTable); - throw new LensException(LensCubeErrorCode.NEITHER_CUBE_NOR_DIMENSION.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.NEITHER_CUBE_NOR_DIMENSION.getValue()); } log.info("Added join chain for {}", destTable); return true; @@ -308,7 +308,7 @@ public class CubeQueryContext implements TrackQueriedColumns { if (metastoreClient.isCube(tblName)) { if (cube != null) { if (!cube.getName().equalsIgnoreCase(tblName)) { - throw new LensException(LensCubeErrorCode.MORE_THAN_ONE_CUBE.getLensErrorInfo(), cube.getName(), tblName); + throw new LensException(LensCubeErrorCode.MORE_THAN_ONE_CUBE.getValue(), cube.getName(), tblName); } } cube = metastoreClient.getCube(tblName); @@ -687,7 +687,7 @@ public class CubeQueryContext implements TrackQueriedColumns { fromString = fact.getStorageString(getAliasForTableName(cube.getName())); } else { if (dimensions.size() != 1) { - throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAIABLE.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAIABLE.getValue()); } Dimension dim = dimensions.iterator().next(); fromString = dimsToQuery.get(dim).getStorageString(getAliasForTableName(dim.getName())); @@ -740,7 +740,7 @@ public class CubeQueryContext implements TrackQueriedColumns { dimsToQuery.get(cubeTbls.get(joiningTable)).setWhereClauseAdded(); } } else { - throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAIABLE.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAIABLE.getValue()); } } @@ -804,8 +804,7 @@ public class CubeQueryContext implements TrackQueriedColumns { } } } - throw new LensException(LensCubeErrorCode.NO_CANDIDATE_DIM_AVAILABLE.getLensErrorInfo(), - dim.getName(), reason); + throw new LensException(LensCubeErrorCode.NO_CANDIDATE_DIM_AVAILABLE.getValue(), dim.getName(), reason); } } } @@ -840,7 +839,7 @@ public class CubeQueryContext implements TrackQueriedColumns { } } } - throw new LensException(LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo(), reason); + throw new LensException(LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getValue(), reason); } } return facts; http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryRewriter.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryRewriter.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryRewriter.java index e0759b0..0dfd7da 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryRewriter.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryRewriter.java @@ -193,7 +193,7 @@ public class CubeQueryRewriter { analyzer = new CubeSemanticAnalyzer(conf, hconf); analyzer.analyze(astnode, qlCtx); } catch (SemanticException e) { - throw new LensException(SYNTAX_ERROR.getLensErrorInfo(), e, e.getMessage()); + throw new LensException(SYNTAX_ERROR.getValue(), e, e.getMessage()); } CubeQueryContext ctx = new CubeQueryContext(astnode, analyzer.getCubeQB(), conf, hconf); rewrite(rewriters, ctx); @@ -210,7 +210,7 @@ public class CubeQueryRewriter { tree = pd.parse(command, qlCtx, false); tree = ParseUtils.findRootNonNullToken(tree); } catch (ParseException e) { - throw new LensException(SYNTAX_ERROR.getLensErrorInfo(), e, e.getMessage()); + throw new LensException(SYNTAX_ERROR.getValue(), e, e.getMessage()); } return rewrite(tree); } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java index cbcc76c..90ea63c 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/DateUtil.java @@ -156,13 +156,13 @@ public final class DateUtil { return ABSDATE_PARSER.get().parse(getAbsDateFormatString(str)); } catch (ParseException e) { log.error("Invalid date format. expected only {} date provided:{}", ABSDATE_FMT, str, e); - throw new LensException(LensCubeErrorCode.WRONG_TIME_RANGE_FORMAT.getLensErrorInfo(), ABSDATE_FMT, str); + throw new LensException(LensCubeErrorCode.WRONG_TIME_RANGE_FORMAT.getValue(), ABSDATE_FMT, str); } } public static Date resolveRelativeDate(String str, Date now) throws LensException { if (StringUtils.isBlank(str)) { - throw new LensException(LensCubeErrorCode.NULL_DATE_VALUE.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.NULL_DATE_VALUE.getValue()); } // Resolve NOW with proper granularity http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java index a576f3a..3ef9652 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/DenormalizationResolver.java @@ -251,7 +251,7 @@ public class DenormalizationResolver implements ContextRewriter { } } if (refered.references.isEmpty()) { - throw new LensException(LensCubeErrorCode.NO_REF_COL_AVAILABLE.getLensErrorInfo(), refered); + throw new LensException(LensCubeErrorCode.NO_REF_COL_AVAILABLE.getValue(), refered); } PickedReference picked = new PickedReference(refered.references.iterator().next(), cubeql.getAliasForTableName(refered.srcTable.getName()), tbl); @@ -400,7 +400,7 @@ public class DenormalizationResolver implements ContextRewriter { } } if (cubeql.getCandidateFacts().size() == 0) { - throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.NO_FACT_HAS_COLUMN.getValue(), cubeql.getColumnsQueried(cubeql.getCube().getName()).toString()); } cubeql.pruneCandidateFactSet(CandidateTablePruneCode.COLUMN_NOT_FOUND); @@ -422,7 +422,7 @@ public class DenormalizationResolver implements ContextRewriter { } if (cubeql.getCandidateDimTables().get(dim).size() == 0) { - throw new LensException(LensCubeErrorCode.NO_DIM_HAS_COLUMN.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.NO_DIM_HAS_COLUMN.getValue(), dim.toString(), cubeql.getColumnsQueried(dim.getName()).toString()); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java index 1964e32..586629f 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/HQLParser.java @@ -148,7 +148,7 @@ public final class HQLParser { tree = driver.parse(query, ctx); tree = ParseUtils.findRootNonNullToken(tree); } catch (ParseException e) { - throw new LensException(SYNTAX_ERROR.getLensErrorInfo(), e, e.getMessage()); + throw new LensException(SYNTAX_ERROR.getValue(), e, e.getMessage()); } catch (IOException e) { throw new RuntimeException(e); } finally { http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java index c7f1e2a..826a59d 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/JoinResolver.java @@ -847,8 +847,7 @@ class JoinResolver implements ContextRewriter { } if (minCostClause == null) { - throw new LensException(LensCubeErrorCode.NO_JOIN_PATH.getLensErrorInfo(), - qdims.toString(), autoJoinTarget.getName()); + throw new LensException(LensCubeErrorCode.NO_JOIN_PATH.getValue(), qdims.toString(), autoJoinTarget.getName()); } log.info("Fact: {} minCostClause:{}", fact, minCostClause); @@ -878,7 +877,7 @@ class JoinResolver implements ContextRewriter { } } if (cubeql.getCandidateDimTables().get(dim).size() == 0) { - throw new LensException(LensCubeErrorCode.NO_DIM_HAS_COLUMN.getLensErrorInfo(), dim.getName(), + throw new LensException(LensCubeErrorCode.NO_DIM_HAS_COLUMN.getValue(), dim.getName(), minCostClause.chainColumns.get(dim).toString()); } } @@ -1053,8 +1052,7 @@ class JoinResolver implements ContextRewriter { } log.warn("No join path between {} and {}", joinee.getName(), target.getName()); if (cubeql.getDimensions().contains(joinee)) { - throw new LensException(LensCubeErrorCode.NO_JOIN_PATH.getLensErrorInfo(), - joinee.getName(), target.getName()); + throw new LensException(LensCubeErrorCode.NO_JOIN_PATH.getValue(), joinee.getName(), target.getName()); } else { // if joinee is optional dim table, remove those candidate facts Set<CandidateTable> candidates = cubeql.getOptionalDimensionMap().get(joinee).requiredForCandidates; @@ -1138,7 +1136,7 @@ class JoinResolver implements ContextRewriter { } else if (metastore.isCube(targetTableName)) { target = (AbstractCubeTable) metastore.getCube(targetTableName); } else { - throw new LensException(LensCubeErrorCode.JOIN_TARGET_NOT_CUBE_TABLE.getLensErrorInfo(), targetTableName); + throw new LensException(LensCubeErrorCode.JOIN_TARGET_NOT_CUBE_TABLE.getValue(), targetTableName); } } @@ -1292,7 +1290,7 @@ class JoinResolver implements ContextRewriter { cubeql.setJoinCond(joinTree, HQLParser.getString(joinCond)); } else { // No join condition specified. this should be an error - throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAIABLE.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAIABLE.getValue()); } return joinTree; } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java index 2fcea8b..d8515d8 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java @@ -93,7 +93,7 @@ class MultiFactHQLContext extends SimpleHQLContext { StringBuilder select = new StringBuilder(); for (int i = 0; i < query.getSelectAST().getChildCount(); i++) { if (selectToFactIndex.get(i) == null) { - throw new LensException(LensCubeErrorCode.EXPRESSION_NOT_IN_ANY_FACT.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.EXPRESSION_NOT_IN_ANY_FACT.getValue(), HQLParser.getString((ASTNode) query.getSelectAST().getChild(i))); } if (selectToFactIndex.get(i).size() == 1) { http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/TimeRange.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/TimeRange.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/TimeRange.java index 7be7ace..b02499e 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/TimeRange.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/TimeRange.java @@ -106,12 +106,11 @@ public class TimeRange { public void validate() throws LensException { if (partitionColumn == null || fromDate == null || toDate == null || fromDate.equals(toDate)) { - throw new LensException(LensCubeErrorCode.INVALID_TIME_RANGE.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.INVALID_TIME_RANGE.getValue()); } if (fromDate.after(toDate)) { - throw new LensException(LensCubeErrorCode.FROM_AFTER_TO.getLensErrorInfo(), - fromDate.toString(), toDate.toString()); + throw new LensException(LensCubeErrorCode.FROM_AFTER_TO.getValue(), fromDate.toString(), toDate.toString()); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/main/java/org/apache/lens/cube/parse/TimerangeResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/TimerangeResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/TimerangeResolver.java index 8a84249..fb1c89e 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/TimerangeResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/TimerangeResolver.java @@ -67,7 +67,7 @@ class TimerangeResolver implements ContextRewriter { // TOK_WHERE.TOK_FUNCTION.Identifier Or, it should be right hand child of // AND condition TOK_WHERE.KW_AND.TOK_FUNCTION.Identifier if (cubeql.getWhereAST() == null || cubeql.getWhereAST().getChildCount() < 1) { - throw new LensException(LensCubeErrorCode.NO_TIMERANGE_FILTER.getLensErrorInfo()); + throw new LensException(LensCubeErrorCode.NO_TIMERANGE_FILTER.getValue()); } searchTimeRanges(cubeql.getWhereAST(), cubeql, null, 0); } @@ -112,7 +112,7 @@ class TimerangeResolver implements ContextRewriter { String timeDimName = getColumnName((ASTNode) timenode.getChild(1)); if (!cubeql.getCube().getTimedDimensions().contains(timeDimName)) { - throw new LensException(LensCubeErrorCode.NOT_A_TIMED_DIMENSION.getLensErrorInfo(), timeDimName); + throw new LensException(LensCubeErrorCode.NOT_A_TIMED_DIMENSION.getValue(), timeDimName); } // Replace timeDimName with column which is used for partitioning. Assume // the same column @@ -155,7 +155,7 @@ class TimerangeResolver implements ContextRewriter { for (TimeRange range : cubeql.getTimeRanges()) { if (column == null) { if (!cubeql.getCube().getTimedDimensions().contains(col)) { - throw new LensException(LensCubeErrorCode.NOT_A_CUBE_COLUMN.getLensErrorInfo(), col); + throw new LensException(LensCubeErrorCode.NOT_A_CUBE_COLUMN.getValue(), col); } continue; } @@ -213,7 +213,7 @@ class TimerangeResolver implements ContextRewriter { joinPathIterator.remove(); if (joinPaths.isEmpty()) { // This dimension doesn't have any paths left - throw new LensException(LensCubeErrorCode.NO_JOIN_PATH.getLensErrorInfo(), + throw new LensException(LensCubeErrorCode.NO_JOIN_PATH.getValue(), "No valid join path available for dimension " + dimension + " which would satisfy time range " + range.getFromDate() + "-" + range.getToDate()); } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java index 0f76c76..9120a70 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java @@ -69,12 +69,12 @@ public class TestBaseCubeQueries extends TestQueryRewrite { e = getLensExceptionInRewrite("select msr11 + msr2 from basecube" + " where " + TWO_DAYS_RANGE, conf); assertEquals(e.getErrorCode(), - LensCubeErrorCode.EXPRESSION_NOT_IN_ANY_FACT.getLensErrorInfo().getErrorCode()); + LensCubeErrorCode.EXPRESSION_NOT_IN_ANY_FACT.getValue()); // no fact has the all the dimensions queried e = getLensExceptionInRewrite("select dim1, test_time_dim, msr3, msr13 from basecube where " + TWO_DAYS_RANGE, conf); assertEquals(e.getErrorCode(), - LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo().getErrorCode()); + LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getValue()); PruneCauses.BriefAndDetailedError pruneCauses = extractPruneCause(e); String regexp = String.format(CandidateTablePruneCause.CandidateTablePruneCode.COLUMN_NOT_FOUND.errorFormat, "Column Sets: (.*?)", "queriable together"); http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/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 7e5184c..b34c217 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 @@ -74,7 +74,7 @@ public class TestCubeRewriter extends TestQueryRewrite { public void testQueryWithNow() throws Exception { LensException e = getLensExceptionInRewrite( "select SUM(msr2) from testCube where" + " time_range_in(d_time, 'NOW - 2DAYS', 'NOW')", getConf()); - assertEquals(e.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo().getErrorCode()); + assertEquals(e.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getValue()); } @Test @@ -118,19 +118,19 @@ public class TestCubeRewriter extends TestQueryRewrite { String qFrom4DaysBackDate = qFmt.format(from4DaysBackDate); LensException th = getLensExceptionInRewrite("select SUM(msr15) from testCube where" + " time_range_in(d_time, '"+ qFrom4DaysBackDate + "', '" + qTo + "')", getConf()); - assertEquals(th.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo().getErrorCode()); + assertEquals(th.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getValue()); } @Test public void testCandidateTables() throws Exception { LensException th = getLensExceptionInRewrite( "select dim12, SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE, getConf()); - assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo().getErrorCode()); + assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getValue()); // this query should through exception because invalidMsr is invalid th = getLensExceptionInRewrite( "SELECT cityid, invalidMsr from testCube " + " where " + TWO_DAYS_RANGE, getConf()); - assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo().getErrorCode()); + assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getValue()); } @Test @@ -187,7 +187,7 @@ public class TestCubeRewriter extends TestQueryRewrite { LensException th = getLensExceptionInRewrite( "select SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE, conf); - assertEquals(th.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo().getErrorCode()); + assertEquals(th.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getValue()); PruneCauses.BriefAndDetailedError pruneCauses = extractPruneCause(th); int endIndex = MISSING_PARTITIONS.errorFormat.length() - 3; assertEquals( @@ -212,7 +212,7 @@ public class TestCubeRewriter extends TestQueryRewrite { LensException th = getLensExceptionInRewrite( "select SUM(msr4) from derivedCube" + " where " + TWO_DAYS_RANGE, getConf()); - assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo().getErrorCode()); + assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getValue()); // test join Configuration conf = getConf(); @@ -630,7 +630,7 @@ public class TestCubeRewriter extends TestQueryRewrite { LensException th = getLensExceptionInRewrite( "select name, SUM(msr2) from testCube" + " join citydim" + " where " + TWO_DAYS_RANGE + " group by name", getConf()); - assertEquals(th.getErrorCode(), LensCubeErrorCode.NO_JOIN_CONDITION_AVAIABLE.getLensErrorInfo().getErrorCode()); + assertEquals(th.getErrorCode(), LensCubeErrorCode.NO_JOIN_CONDITION_AVAIABLE.getValue()); } @Test @@ -979,7 +979,7 @@ public class TestCubeRewriter extends TestQueryRewrite { LensException e = getLensExceptionInRewrite( "select SUM(msr2) from testCube" + " where " + TWO_MONTHS_RANGE_UPTO_HOURS, conf); - assertEquals(e.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo().getErrorCode()); + assertEquals(e.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getValue()); PruneCauses.BriefAndDetailedError pruneCauses = extractPruneCause(e); assertEquals( @@ -1027,7 +1027,7 @@ 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(e.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_DIM_AVAILABLE.getValue()); assertEquals(extractPruneCause(e), new PruneCauses.BriefAndDetailedError( NO_CANDIDATE_STORAGES.errorFormat, new HashMap<String, List<CandidateTablePruneCause>>() { @@ -1168,13 +1168,13 @@ public class TestCubeRewriter extends TestQueryRewrite { + TWO_DAYS_RANGE; LensException th = getLensExceptionInRewrite(query, getConf()); - assertEquals(th.getErrorCode(), LensCubeErrorCode.AMBIGOUS_CUBE_COLUMN.getLensErrorInfo().getErrorCode()); + assertEquals(th.getErrorCode(), LensCubeErrorCode.AMBIGOUS_CUBE_COLUMN.getValue()); String q2 = "SELECT ambigdim2 from citydim join" + " statedim on citydim.stateid = statedim.id join countrydim on" + " statedim.countryid = countrydim.id"; th = getLensExceptionInRewrite(q2, getConf()); - assertEquals(th.getErrorCode(), LensCubeErrorCode.AMBIGOUS_DIM_COLUMN.getLensErrorInfo().getErrorCode()); + assertEquals(th.getErrorCode(), LensCubeErrorCode.AMBIGOUS_DIM_COLUMN.getValue()); } @Test @@ -1467,7 +1467,7 @@ public class TestCubeRewriter extends TestQueryRewrite { System.out.println("TestJoinPathTimeRange: " + context.toHQL()); fail("Expected query to fail because of invalid column life"); } catch (LensException exc) { - assertEquals(exc.getErrorCode(), LensCubeErrorCode.NO_JOIN_PATH.getLensErrorInfo().getErrorCode()); + assertEquals(exc.getErrorCode(), LensCubeErrorCode.NO_JOIN_PATH.getValue()); } finally { // Add old column back cube.alterDimension(col); http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java index 493b8d6..ca07a0d 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestExpressionResolver.java @@ -52,7 +52,7 @@ public class TestExpressionResolver extends TestQueryRewrite { public void testColumnErrors() throws Exception { LensException th; th = getLensExceptionInRewrite("select nocolexpr, SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE, conf); - Assert.assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo().getErrorCode()); + Assert.assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getValue()); Assert.assertTrue(getLensExceptionErrorMessageInRewrite( "select nocolexpr, SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE, conf).contains("nonexist")); @@ -62,7 +62,7 @@ public class TestExpressionResolver extends TestQueryRewrite { th = getLensExceptionInRewrite("select invalidexpr, " + "SUM(msr2) from testCube" + " where " + TWO_DAYS_RANGE, conf); - Assert.assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo().getErrorCode()); + Assert.assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getValue()); } @Test @@ -337,7 +337,7 @@ public class TestExpressionResolver extends TestQueryRewrite { public void testDerivedCube() throws ParseException, LensException, HiveException { LensException th = getLensExceptionInRewrite("select avgmsr from derivedCube" + " where " + TWO_DAYS_RANGE, conf); - Assert.assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getLensErrorInfo().getErrorCode()); + Assert.assertEquals(th.getErrorCode(), LensCubeErrorCode.COLUMN_NOT_FOUND.getValue()); } @Test http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java index cb63fad..6150b14 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestJoinResolver.java @@ -746,10 +746,10 @@ public class TestJoinResolver extends TestQueryRewrite { public void testUnreachableDim() throws ParseException, LensException, HiveException { LensException e1 = getLensExceptionInRewrite("select urdimid from testdim2", hconf); assertNotNull(e1); - assertEquals(e1.getErrorCode(), LensCubeErrorCode.NO_DIM_HAS_COLUMN.getLensErrorInfo().getErrorCode()); + assertEquals(e1.getErrorCode(), LensCubeErrorCode.NO_DIM_HAS_COLUMN.getValue()); LensException e2 = getLensExceptionInRewrite("select urdimid from testcube where " + TWO_DAYS_RANGE, hconf); assertNotNull(e2); - assertEquals(e2.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo().getErrorCode()); + assertEquals(e2.getErrorCode(), LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getValue()); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java index a431717..3c3aa9c 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeExtractor.java @@ -68,7 +68,7 @@ public class TestTimeRangeExtractor extends TestQueryRewrite { Assert.fail("Should not reach here"); } catch (LensException exc) { Assert.assertNotNull(exc); - Assert.assertEquals(exc.getErrorCode(), LensCubeErrorCode.FROM_AFTER_TO.getLensErrorInfo().getErrorCode()); + Assert.assertEquals(exc.getErrorCode(), LensCubeErrorCode.FROM_AFTER_TO.getValue()); } } @@ -81,7 +81,7 @@ public class TestTimeRangeExtractor extends TestQueryRewrite { Assert.fail("Should not reach here"); } catch (LensException exc) { Assert.assertNotNull(exc); - Assert.assertEquals(exc.getErrorCode(), LensCubeErrorCode.INVALID_TIME_RANGE.getLensErrorInfo().getErrorCode()); + Assert.assertEquals(exc.getErrorCode(), LensCubeErrorCode.INVALID_TIME_RANGE.getValue()); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java index 0248409..e5540d2 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriter.java @@ -68,8 +68,7 @@ public abstract class TestTimeRangeWriter { if (failDisjoint()) { Assert.assertNotNull(th); Assert - .assertEquals(th.getErrorCode(), LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER. - getLensErrorInfo().getErrorCode()); + .assertEquals(th.getErrorCode(), LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getValue()); } else { Assert.assertNull(th); validateDisjoint(whereClause, null); http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java index 7bd7b6b..2083ef9 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestTimeRangeWriterWithQuery.java @@ -87,7 +87,7 @@ public class TestTimeRangeWriterWithQuery extends TestQueryRewrite { if (!CubeTestSetup.isZerothHour()) { Assert.assertNotNull(th); Assert - .assertEquals(th.getErrorCode(), LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getLensErrorInfo().getErrorCode()); + .assertEquals(th.getErrorCode(), LensCubeErrorCode.CANNOT_USE_TIMERANGE_WRITER.getValue()); } // hourly partitions for two days conf.setBoolean(CubeQueryConfUtil.FAIL_QUERY_ON_PARTIAL_DATA, true); http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/ESClientException.java ---------------------------------------------------------------------- diff --git a/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/ESClientException.java b/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/ESClientException.java index 9dc9773..c2254f1 100644 --- a/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/ESClientException.java +++ b/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/ESClientException.java @@ -18,7 +18,6 @@ */ package org.apache.lens.driver.es.exceptions; -import org.apache.lens.server.api.LensErrorInfo; import org.apache.lens.server.api.error.LensException; import lombok.NonNull; @@ -43,21 +42,21 @@ public class ESClientException extends LensException { super(cause); } - public ESClientException(LensErrorInfo errorInfo) { - super(errorInfo); + public ESClientException(int errorCode) { + super(errorCode); } - public ESClientException(String errorMsg, LensErrorInfo errorInfo) { - super(errorMsg, errorInfo); + public ESClientException(String errorMsg, int errorCode) { + super(errorMsg, errorCode); } - public ESClientException(LensErrorInfo errorInfo, Throwable cause, + public ESClientException(int errorCode, Throwable cause, @NonNull Object... errorMsgFormattingArgs) { - super(errorInfo, cause, errorMsgFormattingArgs); + super(errorCode, cause, errorMsgFormattingArgs); } - public ESClientException(String errorMsg, LensErrorInfo errorInfo, Throwable cause, + public ESClientException(String errorMsg, int errorcode, Throwable cause, @NonNull Object... errorMsgFormattingArgs) { - super(errorMsg, errorInfo, cause, errorMsgFormattingArgs); + super(errorMsg, errorcode, cause, errorMsgFormattingArgs); } } http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/InvalidQueryException.java ---------------------------------------------------------------------- diff --git a/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/InvalidQueryException.java b/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/InvalidQueryException.java index 20634af..8127cba 100644 --- a/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/InvalidQueryException.java +++ b/lens-driver-es/src/main/java/org/apache/lens/driver/es/exceptions/InvalidQueryException.java @@ -18,10 +18,8 @@ */ package org.apache.lens.driver.es.exceptions; -import org.apache.lens.server.api.LensErrorInfo; import org.apache.lens.server.api.error.LensException; - import lombok.NonNull; public class InvalidQueryException extends LensException { @@ -42,22 +40,22 @@ public class InvalidQueryException extends LensException { super(cause); } - public InvalidQueryException(LensErrorInfo errorInfo) { - super(errorInfo); + public InvalidQueryException(int errorCode) { + super(errorCode); } - public InvalidQueryException(String errorMsg, LensErrorInfo errorInfo) { - super(errorMsg, errorInfo); + public InvalidQueryException(String errorMsg, int errorCode) { + super(errorMsg, errorCode); } - public InvalidQueryException(LensErrorInfo errorInfo, Throwable cause, + public InvalidQueryException(int errorCode, Throwable cause, @NonNull Object... errorMsgFormattingArgs) { - super(errorInfo, cause, errorMsgFormattingArgs); + super(errorCode, cause, errorMsgFormattingArgs); } - public InvalidQueryException(String errorMsg, LensErrorInfo errorInfo, Throwable cause, + public InvalidQueryException(String errorMsg, int errorcode, Throwable cause, @NonNull Object... errorMsgFormattingArgs) { - super(errorMsg, errorInfo, cause, errorMsgFormattingArgs); + super(errorMsg, errorcode, cause, errorMsgFormattingArgs); } public InvalidQueryException(String s, Exception e) { http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-server-api/src/main/java/org/apache/lens/server/api/LensErrorInfo.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/LensErrorInfo.java b/lens-server-api/src/main/java/org/apache/lens/server/api/LensErrorInfo.java deleted file mode 100644 index 449120d..0000000 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/LensErrorInfo.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.lens.server.api; - -import lombok.*; - -@AllArgsConstructor -public class LensErrorInfo { - - @Getter - private int errorCode; - @Getter - private int errorWeight; - @Getter - private String errorName; - -} http://git-wip-us.apache.org/repos/asf/lens/blob/fb235faa/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryPlan.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryPlan.java b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryPlan.java index 2036dce..c3ec099 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryPlan.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/driver/DriverQueryPlan.java @@ -305,6 +305,6 @@ public abstract class DriverQueryPlan { public QueryPlan toQueryPlan() throws UnsupportedEncodingException { return new QueryPlan(new ArrayList<>(tablesQueried), hasSubQuery, execMode != null ? execMode.name() : null, scanMode != null ? scanMode.name() : null, handle, - URLEncoder.encode(getPlan(), "UTF-8"), new QueryCostTOBuilder(getCost()).build()); + URLEncoder.encode(getPlan(), "UTF-8"), new QueryCostTOBuilder(getCost()).build(), false, null); } }