You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by we...@apache.org on 2017/02/14 00:17:02 UTC

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

Repository: hive
Updated Branches:
  refs/heads/master e8c8ff95e -> 84faae007


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/84faae00
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/84faae00
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/84faae00

Branch: refs/heads/master
Commit: 84faae00731313964c06d223afe27dc6a91847b6
Parents: e8c8ff9
Author: Chaozhong Yang <ya...@gmail.com>
Authored: Mon Feb 13 16:16:23 2017 -0800
Committer: Wei Zheng <we...@apache.org>
Committed: Mon Feb 13 16:16:23 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/84faae00/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 8c5d436..220e0d1 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
@@ -309,6 +309,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/84faae00/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 80ea489..05e64a3 100644
--- a/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q
+++ b/ql/src/test/queries/clientpositive/udaf_percentile_approx_23.q
@@ -97,3 +97,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/84faae00/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 66c0c8f..ff6942a 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
@@ -612,3 +612,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