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/06 09:03:54 UTC

svn commit: r1479477 - in /hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse: AliasReplacer.java LeastDimensionResolver.java

Author: amareshwari
Date: Mon May  6 07:03:54 2013
New Revision: 1479477

URL: http://svn.apache.org/r1479477
Log:
Add least dimension resolver

Modified:
    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/LeastDimensionResolver.java

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=1479477&r1=1479476&r2=1479477&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 Mon May  6 07:03:54 2013
@@ -1,6 +1,5 @@
 package org.apache.hadoop.hive.ql.cube.parse;
 
-import java.util.List;
 import java.util.Map;
 
 import org.apache.hadoop.conf.Configuration;
@@ -8,7 +7,6 @@ import org.apache.hadoop.conf.Configurat
 public class AliasReplacer implements ContextRewriter {
 
   public AliasReplacer(Configuration conf) {
-    // TODO Auto-generated constructor stub
   }
 
   @Override
@@ -25,11 +23,6 @@ public class AliasReplacer implements Co
     // 2: (TOK_SELECT (TOK_SELEXPR (. (TOK_TABLE_OR_COL src) key))
     // (TOK_SELEXPR (TOK_FUNCTION count (. (TOK_TABLE_OR_COL src) value))))
     // 3: (TOK_SELECT (TOK_SELEXPR (. (TOK_TABLE_OR_COL src) key) srckey))))
-
-    Map<String, List<String>> tblToColumns = cubeql.getTblToColumns();
-    for (Map.Entry<String, List<String>> entry : tblToColumns.entrySet()) {
-      System.out.println("Table: " + entry.getKey() + "Columns: " + entry.getValue());
-    }
     Map<String, String> colToTableAlias = cubeql.getColumnsToTableAlias();
     if (colToTableAlias == null) {
       return;

Modified: hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java?rev=1479477&r1=1479476&r2=1479477&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java (original)
+++ hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/parse/LeastDimensionResolver.java Mon May  6 07:03:54 2013
@@ -1,19 +1,49 @@
 package org.apache.hadoop.hive.ql.cube.parse;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.ql.cube.metadata.CubeFactTable;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 
 public class LeastDimensionResolver implements ContextRewriter {
 
   public LeastDimensionResolver(Configuration conf) {
-    // TODO Auto-generated constructor stub
   }
 
   @Override
   public void rewriteContext(CubeQueryContext cubeql)
       throws SemanticException {
-    // TODO Auto-generated method stub
+    if (cubeql.getCube() != null) {
+      Map<CubeFactTable, Integer> dimWeightMap =
+          new HashMap<CubeFactTable, Integer>();
+
+      for (CubeFactTable fact : cubeql.getCandidateFactTables()) {
+        dimWeightMap.put(fact, getDimensionWeight(cubeql, fact));
+     }
+
+     int minWeight = Collections.min(dimWeightMap.values());
+
+     for (Iterator<CubeFactTable> i =
+         cubeql.getCandidateFactTables().iterator(); i.hasNext();) {
+       CubeFactTable fact = i.next();
+       if (dimWeightMap.get(fact) > minWeight) {
+         System.out.println("Removing fact:" + fact +
+             " from candidate fact tables as it has more dimension weight:"
+             +  dimWeightMap.get(fact) + " minimum:"
+             + minWeight);
+         i.remove();
+       }
+     }
+    }
+  }
 
+  private Integer getDimensionWeight(CubeQueryContext cubeql, CubeFactTable fact) {
+    //TODO get the dimension weight associated with the fact wrt query
+    return 0;
   }
 
 }