Repository: hive
Updated Branches:
  refs/heads/branch-2.1 9b76ac932 -> bb4868407


HIVE-15872 : The PERCENTILE_APPROX UDAF does not work with empty set (Chaozhong 
Yang, reviewed by Wei Zheng)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/bb486840
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/bb486840
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/bb486840

Branch: refs/heads/branch-2.1
Commit: bb486840708bfa0b2950a41e6071a407d578653d
Parents: 9b76ac9
Author: Chaozhong Yang <[email protected]>
Authored: Mon Feb 13 16:16:23 2017 -0800
Committer: Wei Zheng <[email protected]>
Committed: Mon Feb 13 16:18:13 2017 -0800

----------------------------------------------------------------------
 .../hive/ql/udf/generic/GenericUDAFPercentileApprox.java    | 2 ++
 .../test/queries/clientpositive/udaf_percentile_approx_23.q | 3 +++
 .../results/clientpositive/udaf_percentile_approx_23.q.out  | 9 +++++++++
 3 files changed, 14 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/bb486840/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java
index 795013a..bce71b6 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileApprox.java
@@ -312,6 +312,8 @@ public class GenericUDAFPercentileApprox extends 
AbstractGenericUDAFResolver {
           myagg.quantiles[i-1] = doi.get(partialHistogram.get(i));
         }
         partialHistogram.subList(0, nquantiles+1).clear();
+      } else {
+        partialHistogram.subList(0, 1).clear();
       }
 
       // merge histograms

http://git-wip-us.apache.org/repos/asf/hive/blob/bb486840/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q 
b/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q
index aa4a4ce..8710a9c 100644
--- a/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q
+++ b/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, array(0.50, 0.70, 0.90, 0.95, 0.99)) from bucket 
where key > 10000;

http://git-wip-us.apache.org/repos/asf/hive/blob/bb486840/ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out 
b/ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out
index 3f5a540..a67bb88 100644
--- a/ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out
+++ b/ql/src/test/results/clientpositive/udaf_percentile_approx_23.q.out
@@ -626,3 +626,12 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@bucket
 #### A masked pattern was here ####
 true
+PREHOOK: query: select percentile_approx(key, array(0.50, 0.70, 0.90, 0.95, 
0.99)) from bucket where key > 10000
+PREHOOK: type: QUERY
+PREHOOK: Input: default@bucket
+#### A masked pattern was here ####
+POSTHOOK: query: select percentile_approx(key, array(0.50, 0.70, 0.90, 0.95, 
0.99)) from bucket where key > 10000
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@bucket
+#### A masked pattern was here ####
+NULL

Reply via email to