diff --git ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java index d857421..12a327f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java @@ -175,9 +175,11 @@ protected DoubleWritable getNextResult( if (ss.numPreceding != BoundarySpec.UNBOUNDED_AMOUNT && (ss.numRows - ss.numFollowing) >= (ss.numPreceding + 1)) { Object[] o = ss.intermediateVals.remove(0); - Double d = o == null ? 0.0 : (Double) o[0]; - r = r == null ? null : r - d; - cnt = cnt - ((Long) o[1]); + if (o != null) { + Double d = (Double) o[0]; + r = r == null ? null : r - d; + cnt = cnt - ((Long) o[1]); + } } return r == null ? null : new DoubleWritable(r / cnt); @@ -303,9 +305,11 @@ protected HiveDecimalWritable getNextResult( if (ss.numPreceding != BoundarySpec.UNBOUNDED_AMOUNT && (ss.numRows - ss.numFollowing) >= (ss.numPreceding + 1)) { Object[] o = ss.intermediateVals.remove(0); - HiveDecimal d = o == null ? HiveDecimal.ZERO : (HiveDecimal) o[0]; - r = r == null ? null : r.subtract(d); - cnt = cnt - ((Long) o[1]); + if (o != null) { + HiveDecimal d = (HiveDecimal) o[0]; + r = r == null ? null : r.subtract(d); + cnt = cnt - ((Long) o[1]); + } } return r == null ? null : new HiveDecimalWritable(