diff --git ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java index 795013a..bce71b6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java @@ -312,6 +312,8 @@ public void merge(AggregationBuffer agg, Object partial) throws HiveException { myagg.quantiles[i-1] = doi.get(partialHistogram.get(i)); } partialHistogram.subList(0, nquantiles+1).clear(); + } else { + partialHistogram.subList(0, 1).clear(); } // merge histograms diff --git ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q index aa4a4ce..472a6c9 100644 --- ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q +++ ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q @@ -95,3 +95,6 @@ select percentile_approx(case when key < 100 then cast('NaN' as double) else key explain select percentile_approx(key, 0.5) from bucket; select percentile_approx(key, 0.5) between 255.0 and 257.0 from bucket; + +-- test where number of elements is zero +select percentile_approx(key, 0.5) from bucket where false; diff --git ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out index 3f5a540..6738618 100644 --- ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out +++ ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out @@ -626,3 +626,14 @@ POSTHOOK: type: QUERY POSTHOOK: Input: default@bucket #### A masked pattern was here #### true +PREHOOK: query: -- test where number of elements is zero +select percentile_approx(key, 0.5) from bucket where false +PREHOOK: type: QUERY +PREHOOK: Input: default@bucket +#### A masked pattern was here #### +POSTHOOK: query: -- test where number of elements is zero +select percentile_approx(key, 0.5) from bucket where false +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bucket +#### A masked pattern was here #### +NULL