You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/09/05 17:00:37 UTC

svn commit: r1622716 - /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java

Author: hashutosh
Date: Fri Sep  5 15:00:37 2014
New Revision: 1622716

URL: http://svn.apache.org/r1622716
Log:
HIVE-7995 : Column statistics from expression does not handle fields within complex types (Prasanth J via Ashutosh Chauhan)

Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java?rev=1622716&r1=1622715&r2=1622716&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java Fri Sep  5 15:00:37 2014
@@ -41,8 +41,10 @@ import org.apache.hadoop.hive.ql.metadat
 import org.apache.hadoop.hive.ql.parse.PrunedPartitionList;
 import org.apache.hadoop.hive.ql.plan.ColStatistics;
 import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeColumnListDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeFieldDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
 import org.apache.hadoop.hive.ql.plan.ExprNodeNullDesc;
 import org.apache.hadoop.hive.ql.plan.Statistics;
@@ -975,6 +977,22 @@ public class StatsUtils {
       colName = ennd.getName();
       colType = "null";
       numNulls = numRows;
+    } else if (end instanceof ExprNodeColumnListDesc) {
+
+      // column list
+      ExprNodeColumnListDesc encd = (ExprNodeColumnListDesc) end;
+      colName = Joiner.on(",").join(encd.getCols());
+      colType = "array";
+      countDistincts = numRows;
+      oi = encd.getWritableObjectInspector();
+    } else if (end instanceof ExprNodeFieldDesc) {
+
+      // field within complex type
+      ExprNodeFieldDesc enfd = (ExprNodeFieldDesc) end;
+      colName = enfd.getFieldName();
+      colType = enfd.getTypeString();
+      countDistincts = numRows;
+      oi = enfd.getWritableObjectInspector();
     }
 
     if (colType.equalsIgnoreCase(serdeConstants.STRING_TYPE_NAME)