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
