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 <[email protected]> Authored: Mon Feb 13 16:16:23 2017 -0800 Committer: Wei Zheng <[email protected]> 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
