[47/51] [abbrv] lens git commit: LENS-1416 : Union query order by should work on column alias
LENS-1416 : Union query order by should work on column alias Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/a899577e Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/a899577e Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/a899577e Branch: refs/heads/current-release-line Commit: a899577ecaca09a3c237c072fd94550cc80711c6 Parents: b58749e Author: Sushil MohantyAuthored: Wed May 3 16:23:33 2017 +0530 Committer: Rajat Khandelwal Committed: Wed May 3 16:23:33 2017 +0530 -- lens-api/src/main/resources/lens-errors.conf| 5 .../lens/cube/error/LensCubeErrorCode.java | 1 + .../apache/lens/cube/parse/CandidateUtil.java | 27 .../cube/parse/StorageCandidateHQLContext.java | 23 + .../lens/cube/parse/UnionQueryWriter.java | 1 + .../lens/cube/parse/TestUnionQueries.java | 21 --- 6 files changed, 52 insertions(+), 26 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/a899577e/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 e5536bb..43de1e9 100644 --- a/lens-api/src/main/resources/lens-errors.conf +++ b/lens-api/src/main/resources/lens-errors.conf @@ -345,6 +345,11 @@ lensCubeErrorsForQuery = [ errorMsg = "%s does not have any facts that can cover the queried measure set : %s" } + { +errorCode = 3036 +httpStatusCode = ${BAD_REQUEST} +errorMsg = "Order by column alias : %s shouldn't contain white space " + } ] http://git-wip-us.apache.org/repos/asf/lens/blob/a899577e/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 babe3de..32b9db3 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 @@ -39,6 +39,7 @@ public enum LensCubeErrorCode { INVALID_TIME_RANGE(3014, 0), FROM_AFTER_TO(3015, 0), JOIN_TARGET_NOT_CUBE_TABLE(3016, 0), + ORDERBY_ALIAS_CONTAINING_WHITESPACE(3036, 0), // Error codes different for drivers CANNOT_USE_TIMERANGE_WRITER(3017, 100), NO_DEFAULT_AGGREGATE(3018, 200), http://git-wip-us.apache.org/repos/asf/lens/blob/a899577e/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java index 467ca0a..6ba46d6 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java @@ -23,6 +23,10 @@ import static org.apache.hadoop.hive.ql.parse.HiveParser.Identifier; import java.util.*; import java.util.stream.Collectors; +import org.apache.lens.cube.error.LensCubeErrorCode; +import org.apache.lens.server.api.error.LensException; + +import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.parse.ASTNode; import org.apache.hadoop.hive.ql.parse.HiveParser; @@ -160,4 +164,27 @@ public final class CandidateUtil { static Set getColumnsFromCandidates(Collection scSet) { return scSet.stream().map(Candidate::getColumns).flatMap(Collection::stream).collect(Collectors.toSet()); } + + static void updateOrderByWithFinalAlias(ASTNode orderby, ASTNode select) throws LensException{ +if (orderby == null) { + return; +} +for (Node orderbyNode : orderby.getChildren()) { + ASTNode orderBychild = (ASTNode) orderbyNode; + for (Node selectNode : select.getChildren()) { +ASTNode selectChild = (ASTNode) selectNode; +if (selectChild.getChildCount() == 2) { + if (HQLParser.getString((ASTNode) selectChild.getChild(0)) + .equals(HQLParser.getString((ASTNode) orderBychild.getChild(0 { +ASTNode alias = new ASTNode((ASTNode) selectChild.getChild(1)); +if (!alias.toString().matches("\\S+")) { + throw new LensException(LensCubeErrorCode.ORDERBY_ALIAS_CONTAINING_WHITESPACE.getLensErrorInfo(), alias); +} +orderBychild.replaceChildren(0, 0, alias); +break; + } +} + } +} + } }
lens git commit: LENS-1416 : Union query order by should work on column alias
Repository: lens Updated Branches: refs/heads/master b58749e20 -> a899577ec LENS-1416 : Union query order by should work on column alias Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/a899577e Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/a899577e Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/a899577e Branch: refs/heads/master Commit: a899577ecaca09a3c237c072fd94550cc80711c6 Parents: b58749e Author: Sushil MohantyAuthored: Wed May 3 16:23:33 2017 +0530 Committer: Rajat Khandelwal Committed: Wed May 3 16:23:33 2017 +0530 -- lens-api/src/main/resources/lens-errors.conf| 5 .../lens/cube/error/LensCubeErrorCode.java | 1 + .../apache/lens/cube/parse/CandidateUtil.java | 27 .../cube/parse/StorageCandidateHQLContext.java | 23 + .../lens/cube/parse/UnionQueryWriter.java | 1 + .../lens/cube/parse/TestUnionQueries.java | 21 --- 6 files changed, 52 insertions(+), 26 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/a899577e/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 e5536bb..43de1e9 100644 --- a/lens-api/src/main/resources/lens-errors.conf +++ b/lens-api/src/main/resources/lens-errors.conf @@ -345,6 +345,11 @@ lensCubeErrorsForQuery = [ errorMsg = "%s does not have any facts that can cover the queried measure set : %s" } + { +errorCode = 3036 +httpStatusCode = ${BAD_REQUEST} +errorMsg = "Order by column alias : %s shouldn't contain white space " + } ] http://git-wip-us.apache.org/repos/asf/lens/blob/a899577e/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 babe3de..32b9db3 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 @@ -39,6 +39,7 @@ public enum LensCubeErrorCode { INVALID_TIME_RANGE(3014, 0), FROM_AFTER_TO(3015, 0), JOIN_TARGET_NOT_CUBE_TABLE(3016, 0), + ORDERBY_ALIAS_CONTAINING_WHITESPACE(3036, 0), // Error codes different for drivers CANNOT_USE_TIMERANGE_WRITER(3017, 100), NO_DEFAULT_AGGREGATE(3018, 200), http://git-wip-us.apache.org/repos/asf/lens/blob/a899577e/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java index 467ca0a..6ba46d6 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateUtil.java @@ -23,6 +23,10 @@ import static org.apache.hadoop.hive.ql.parse.HiveParser.Identifier; import java.util.*; import java.util.stream.Collectors; +import org.apache.lens.cube.error.LensCubeErrorCode; +import org.apache.lens.server.api.error.LensException; + +import org.apache.hadoop.hive.ql.lib.Node; import org.apache.hadoop.hive.ql.parse.ASTNode; import org.apache.hadoop.hive.ql.parse.HiveParser; @@ -160,4 +164,27 @@ public final class CandidateUtil { static Set getColumnsFromCandidates(Collection scSet) { return scSet.stream().map(Candidate::getColumns).flatMap(Collection::stream).collect(Collectors.toSet()); } + + static void updateOrderByWithFinalAlias(ASTNode orderby, ASTNode select) throws LensException{ +if (orderby == null) { + return; +} +for (Node orderbyNode : orderby.getChildren()) { + ASTNode orderBychild = (ASTNode) orderbyNode; + for (Node selectNode : select.getChildren()) { +ASTNode selectChild = (ASTNode) selectNode; +if (selectChild.getChildCount() == 2) { + if (HQLParser.getString((ASTNode) selectChild.getChild(0)) + .equals(HQLParser.getString((ASTNode) orderBychild.getChild(0 { +ASTNode alias = new ASTNode((ASTNode) selectChild.getChild(1)); +if (!alias.toString().matches("\\S+")) { + throw new LensException(LensCubeErrorCode.ORDERBY_ALIAS_CONTAINING_WHITESPACE.getLensErrorInfo(), alias); +} +orderBychild.replaceChildren(0, 0, alias); +break; + } +} + } +} + } }