You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by am...@apache.org on 2013/05/29 08:49:30 UTC

svn commit: r1487329 - in /hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse: AggregateResolver.java AliasReplacer.java CubeQueryContext.java GroupbyResolver.java

Author: amareshwari
Date: Wed May 29 06:49:30 2013
New Revision: 1487329

URL: http://svn.apache.org/r1487329
Log:
Fix AliasReplacer

Modified:
    hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AggregateResolver.java
    hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java
    hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/CubeQueryContext.java
    hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/GroupbyResolver.java

Modified: hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AggregateResolver.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AggregateResolver.java?rev=1487329&r1=1487328&r2=1487329&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AggregateResolver.java (original)
+++ hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AggregateResolver.java Wed May 29 06:49:30 2013
@@ -163,7 +163,7 @@ public class AggregateResolver implement
     String exprTokens[] = StringUtils.split(exprTree, ",");
     for (int i = 0; i < exprTokens.length; i++) {
       String token = exprTokens[i].trim();
-      String tokenAlias = cubeql.getAlias(token);
+      String tokenAlias = cubeql.getAlias(token.toLowerCase());
       boolean hasAlias = false;
       if (StringUtils.isNotBlank(tokenAlias)) {
         token = token.substring(0, exprTree.lastIndexOf(tokenAlias)).trim();

Modified: hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java?rev=1487329&r1=1487328&r2=1487329&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java (original)
+++ hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/AliasReplacer.java Wed May 29 06:49:30 2013
@@ -1,5 +1,8 @@
 package org.apache.hadoop.hive.ql.cube.parse;
 
+import static org.apache.hadoop.hive.ql.parse.HiveParser.Identifier;
+import static org.apache.hadoop.hive.ql.parse.HiveParser.TOK_SELEXPR;
+
 import java.util.Map;
 
 import org.antlr.runtime.CommonToken;
@@ -71,6 +74,8 @@ public class AliasReplacer implements Co
     // Update the aggregate expression set
     updateAggregates(selectAST, cubeql);
     updateAggregates(havingAST, cubeql);
+    // Update alias map as well
+    updateAliasMap(selectAST, cubeql);
   }
 
   private void replaceAliases(ASTNode node, int nodePos,
@@ -142,4 +147,22 @@ public class AliasReplacer implements Co
     }
   }
 
+  private void updateAliasMap(ASTNode root, CubeQueryContext cubeql) {
+    if (root == null) {
+      return;
+    }
+
+    if (root.getToken().getType() == TOK_SELEXPR) {
+        ASTNode alias = HQLParser.findNodeByPath(root, Identifier);
+        if (alias != null) {
+          cubeql.addExprToAlias(HQLParser.getString(root).trim().toLowerCase(),
+              alias.getText());
+        }
+    } else {
+      for (int i = 0; i < root.getChildCount(); i++) {
+        updateAliasMap((ASTNode)root.getChild(i), cubeql);
+      }
+    }
+  }
+
 }

Modified: hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/CubeQueryContext.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/CubeQueryContext.java?rev=1487329&r1=1487328&r2=1487329&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/CubeQueryContext.java (original)
+++ hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/CubeQueryContext.java Wed May 29 06:49:30 2013
@@ -1081,4 +1081,10 @@ public class CubeQueryContext {
   public CubeMetastoreClient getMetastoreClient() {
     return client;
   }
+
+  public void addExprToAlias(String expr, String alias) {
+    if (exprToAlias != null) {
+      exprToAlias.put(expr.trim().toLowerCase(), alias);
+    }
+  }
 }

Modified: hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/GroupbyResolver.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/GroupbyResolver.java?rev=1487329&r1=1487328&r2=1487329&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/GroupbyResolver.java (original)
+++ hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/GroupbyResolver.java Wed May 29 06:49:30 2013
@@ -3,6 +3,7 @@ package org.apache.hadoop.hive.ql.cube.p
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
@@ -18,13 +19,13 @@ public class GroupbyResolver implements 
     String groupByTree = cubeql.getGroupByTree();
     String selectTree = cubeql.getSelectTree();
     List<String> selectExprs = new ArrayList<String>();
-    String[] sel = selectTree.split(",");
+    String[] sel = StringUtils.split(selectTree, ",");
     for (String s : sel) {
       selectExprs.add(s.trim().toLowerCase());
     }
     List<String> groupByExprs = new ArrayList<String>();
     if (groupByTree != null) {
-      String[] gby = groupByTree.split(",");
+      String[] gby = StringUtils.split(groupByTree, ",");
       for (String g : gby) {
         groupByExprs.add(g.trim().toLowerCase());
       }