[47/51] [abbrv] lens git commit: LENS-1416 : Union query order by should work on column alias

2017-05-21 Thread raju
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 Mohanty 
Authored: 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

2017-05-03 Thread prongs
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 Mohanty 
Authored: 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;
+  }
+}
+  }
+}
+  }
 }