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)