lens git commit: LENS-909 : Remove sending result as part of email incase of inmemory results

2016-02-07 Thread amareshwari
Repository: lens
Updated Branches:
  refs/heads/master b805ee989 -> bee5cfd8d


LENS-909 : Remove sending result as part of email incase of inmemory results


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/bee5cfd8
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/bee5cfd8
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/bee5cfd8

Branch: refs/heads/master
Commit: bee5cfd8d6f216a0af042a4ae6772aa4dabfe320
Parents: b805ee9
Author: Puneet Gupta 
Authored: Sun Feb 7 15:11:34 2016 +0530
Committer: Amareshwari Sriramadasu 
Committed: Sun Feb 7 15:11:34 2016 +0530

--
 .../lens/server/query/QueryEndNotifier.java | 26 +++-
 .../server/query/TestQueryEndEmailNotifier.java | 19 +++---
 2 files changed, 40 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/bee5cfd8/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java
--
diff --git 
a/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java 
b/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java
index ca00b4d..63c38d9 100644
--- 
a/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java
+++ 
b/lens-server/src/main/java/org/apache/lens/server/query/QueryEndNotifier.java
@@ -34,6 +34,8 @@ import javax.mail.internet.MimeMultipart;
 
 import org.apache.lens.api.query.QueryStatus;
 import org.apache.lens.server.LensServices;
+import org.apache.lens.server.api.driver.InMemoryResultSet;
+import org.apache.lens.server.api.driver.LensResultSet;
 import org.apache.lens.server.api.error.LensException;
 import org.apache.lens.server.api.events.AsyncEventListener;
 import org.apache.lens.server.api.metrics.MetricsService;
@@ -44,6 +46,9 @@ import org.apache.lens.server.model.LogSegregationContext;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.hadoop.hive.conf.HiveConf;
 
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+
 import lombok.Data;
 import lombok.NonNull;
 import lombok.extern.slf4j.Slf4j;
@@ -60,6 +65,18 @@ public class QueryEndNotifier extends 
AsyncEventListener {
   /** The Constant EMAIL_ERROR_COUNTER. */
   public static final String EMAIL_ERROR_COUNTER = "email-send-errors";
 
+  /** The time in seconds for which in memory result is available */
+  private final int inMemoryResultsetTTLSecs;
+
+  /** Time formatter for email message corresponding to InMemoryResultset
+   *  Example : 2016-01-25 07:05:46 PM, IST
+   */
+  static final DateTimeFormatter MESSAGE_DATE_FORMATTER = 
DateTimeFormat.forPattern("-MM-dd hh:mm:SS aaa, z");
+
+  /** Mail message corresponding to InMemoryResultset*/
+  static final String RESULT_AVAILABLE_UNTIL_MSG =
+  "Query result is temporarily cached in the server and will be available 
until ";
+
   /** The from. */
   private final String from;
 
@@ -97,6 +114,7 @@ public class QueryEndNotifier extends 
AsyncEventListener {
 mailSmtpConnectionTimeout = 
Integer.parseInt(conf.get(MAIL_SMTP_CONNECTIONTIMEOUT,
   MAIL_DEFAULT_SMTP_CONNECTIONTIMEOUT));
 this.logSegregationContext = logSegregationContext;
+this.inMemoryResultsetTTLSecs =conf.getInt(INMEMORY_RESULT_SET_TTL_SECS, 
DEFAULT_INMEMORY_RESULT_SET_TTL_SECS);
   }
 
   /*
@@ -172,7 +190,13 @@ public class QueryEndNotifier extends 
AsyncEventListener {
 
   private String getResultMessage(QueryContext queryContext) {
 try {
-  return 
queryService.getResultset(queryContext.getQueryHandle()).toQueryResult().toPrettyString();
+  LensResultSet result = 
queryService.getResultset(queryContext.getQueryHandle());
+  if (result instanceof InMemoryResultSet) { // Do not include the result 
rows for InMemory results.
+long availableUntilTime = 
((InMemoryResultSet)result).getCreationTime() + inMemoryResultsetTTLSecs;
+return RESULT_AVAILABLE_UNTIL_MSG + 
MESSAGE_DATE_FORMATTER.print(availableUntilTime);
+  } else {
+return result.toQueryResult().toPrettyString();
+  }
 } catch (LensException e) {
   log.error("Error retrieving result of query handle {} for sending 
e-mail", queryContext.getQueryHandle(), e);
   return "Error retrieving result.";

http://git-wip-us.apache.org/repos/asf/lens/blob/bee5cfd8/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java
--
diff --git 
a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java
 
b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryEndEmailNotifier.java
index e97a5a3..5196c9b 100644

lens git commit: LENS-946 : Fix filter clauses in multi fact or multi storage queries

2016-02-07 Thread amareshwari
Repository: lens
Updated Branches:
  refs/heads/master bee5cfd8d -> 0b3203d04


LENS-946 : Fix filter clauses in multi fact or multi storage queries


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/0b3203d0
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/0b3203d0
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/0b3203d0

Branch: refs/heads/master
Commit: 0b3203d047d9738141d153e9f7894fcc6ac64f79
Parents: bee5cfd
Author: Amareshwari Sriramadasu 
Authored: Mon Feb 8 12:00:53 2016 +0530
Committer: Amareshwari Sriramadasu 
Committed: Mon Feb 8 12:00:53 2016 +0530

--
 .../apache/lens/cube/parse/CandidateFact.java   | 22 ++-
 .../lens/cube/parse/CubeQueryContext.java   |  9 ++-
 .../apache/lens/cube/parse/DefaultQueryAST.java |  2 +-
 .../cube/parse/DenormalizationResolver.java | 13 +++-
 .../lens/cube/parse/ExpressionResolver.java | 12 +++-
 .../parse/SingleFactMultiStorageHQLContext.java | 10 ---
 .../apache/lens/cube/parse/CubeTestSetup.java   | 24 +--
 .../lens/cube/parse/TestBaseCubeQueries.java| 68 ++--
 .../lens/cube/parse/TestCubeRewriter.java   | 25 ++-
 9 files changed, 132 insertions(+), 53 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/lens/blob/0b3203d0/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java
--
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java
index 4faebe1..1b0de34 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java
@@ -76,12 +76,11 @@ public class CandidateFact implements CandidateTable, 
QueryAST {
   @Getter
   @Setter
   private Integer limitValue;
-  private List timenodes = Lists.newArrayList();
   private final List selectIndices = Lists.newArrayList();
   private final List dimFieldIndices = Lists.newArrayList();
   private Collection columns;
   @Getter
-  private final Map storgeWhereClauseMap = new HashMap<>();
+  private final Map storgeWhereClauseMap = new HashMap<>();
   @Getter
   private final Map> 
rangeToStoragePartMap = new HashMap<>();
   @Getter
@@ -145,18 +144,6 @@ public class CandidateFact implements CandidateTable, 
QueryAST {
 return alias;
   }
 
-  static class TimeRangeNode {
-ASTNode timenode;
-ASTNode parent;
-int childIndex;
-
-TimeRangeNode(ASTNode timenode, ASTNode parent, int childIndex) {
-  this.timenode = timenode;
-  this.parent = parent;
-  this.childIndex = childIndex;
-}
-  }
-
   void incrementPartsQueried(int incr) {
 numQueriedParts += incr;
   }
@@ -174,8 +161,8 @@ public class CandidateFact implements CandidateTable, 
QueryAST {
   }
 
 
-  public String getWhereClause(String storageTable) {
-return getStorgeWhereClauseMap().get(storageTable);
+  public ASTNode getStorageWhereClause(String storageTable) {
+return storgeWhereClauseMap.get(storageTable);
   }
 
   public boolean isExpressionAnswerable(ASTNode node, CubeQueryContext 
context) throws LensException {
@@ -231,7 +218,7 @@ public class CandidateFact implements CandidateTable, 
QueryAST {
 
   private Set getColsInExpr(final CubeQueryContext cubeql, final 
Set cubeCols,
 ASTNode expr) throws LensException {
-final Set cubeColsInExpr = new HashSet();
+final Set cubeColsInExpr = new HashSet<>();
 HQLParser.bft(expr, new ASTNodeVisitor() {
   @Override
   public void visit(TreeNode visited) {
@@ -346,7 +333,6 @@ public class CandidateFact implements CandidateTable, 
QueryAST {
 return null;
   }
 
-
   /**
* @return the selectIndices
*/

http://git-wip-us.apache.org/repos/asf/lens/blob/0b3203d0/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 ebf8875..b8b6db9 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
@@ -875,7 +875,7 @@ public class CubeQueryContext implements 
TrackQueriedColumns, QueryAST {
 ASTNode rangeAST = HQLParser.parseExpr(rangeWhere);
 range.getParent().setChild(range.getChildIndex(), rangeAST);
   }
-  fact.getStorgeWhereClauseMap().put(table, getWhereTree());
+