Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 14953200B52 for ; Mon, 25 Jul 2016 23:25:20 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 1304A160A7D; Mon, 25 Jul 2016 21:25:20 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 33D48160A67 for ; Mon, 25 Jul 2016 23:25:19 +0200 (CEST) Received: (qmail 76745 invoked by uid 500); 25 Jul 2016 21:25:18 -0000 Mailing-List: contact commits-help@hive.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hive-dev@hive.apache.org Delivered-To: mailing list commits@hive.apache.org Received: (qmail 76734 invoked by uid 99); 25 Jul 2016 21:25:18 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 25 Jul 2016 21:25:18 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id F2695E00A7; Mon, 25 Jul 2016 21:25:17 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: hashutosh@apache.org To: commits@hive.apache.org Message-Id: <682c57bc1c3343f2a249a651057e12dc@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: hive git commit: HIVE-13422 : Analyse command not working for column having datatype as decimal(38, 0) (Thomas Friedrich via Ashutosh Chauhan) Date: Mon, 25 Jul 2016 21:25:17 +0000 (UTC) archived-at: Mon, 25 Jul 2016 21:25:20 -0000 Repository: hive Updated Branches: refs/heads/master 9f40c8fb9 -> 964b8a001 HIVE-13422 : Analyse command not working for column having datatype as decimal(38,0) (Thomas Friedrich via Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/964b8a00 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/964b8a00 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/964b8a00 Branch: refs/heads/master Commit: 964b8a00122ee3779858250b28fb70398ef83010 Parents: 9f40c8f Author: Thomas Friedrich Authored: Mon Jul 25 14:24:06 2016 -0700 Committer: Ashutosh Chauhan Committed: Mon Jul 25 14:24:06 2016 -0700 ---------------------------------------------------------------------- data/files/decimal.txt | 3 +- .../ql/udf/generic/GenericUDAFComputeStats.java | 32 +++++++++++++++++--- .../clientpositive/compute_stats_decimal.q | 2 +- .../clientpositive/compute_stats_decimal.q.out | 8 ++--- 4 files changed, 34 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/964b8a00/data/files/decimal.txt ---------------------------------------------------------------------- diff --git a/data/files/decimal.txt b/data/files/decimal.txt index 28800f5..5fc1139 100644 --- a/data/files/decimal.txt +++ b/data/files/decimal.txt @@ -15,4 +15,5 @@ 33.44 55.3 435.331 --0.342 \ No newline at end of file +-0.342 +123456789012345678901234567890.123 \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hive/blob/964b8a00/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFComputeStats.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFComputeStats.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFComputeStats.java index b656263..ec80641 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFComputeStats.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFComputeStats.java @@ -294,7 +294,7 @@ public class GenericUDAFComputeStats extends AbstractGenericUDAFResolver { } } - public static abstract class GenericUDAFNumericStatsEvaluator + public static abstract class GenericUDAFNumericStatsEvaluator extends GenericUDAFEvaluator { protected final static int MAX_BIT_VECTORS = 1024; @@ -337,6 +337,8 @@ public class GenericUDAFComputeStats extends AbstractGenericUDAFResolver { protected transient boolean warned; protected abstract OI getValueObjectInspector(); + + protected abstract OI getValueObjectInspector(PrimitiveTypeInfo typeInfo); @Override public ObjectInspector init(Mode m, ObjectInspector[] parameters) throws HiveException { @@ -370,8 +372,8 @@ public class GenericUDAFComputeStats extends AbstractGenericUDAFResolver { if (mode == Mode.PARTIAL1 || mode == Mode.PARTIAL2) { List foi = new ArrayList(); foi.add(PrimitiveObjectInspectorFactory.writableStringObjectInspector); - foi.add(getValueObjectInspector()); - foi.add(getValueObjectInspector()); + foi.add(getValueObjectInspector(inputOI.getTypeInfo())); + foi.add(getValueObjectInspector(inputOI.getTypeInfo())); foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector); foi.add(PrimitiveObjectInspectorFactory.writableStringObjectInspector); foi.add(PrimitiveObjectInspectorFactory.writableIntObjectInspector); @@ -395,8 +397,8 @@ public class GenericUDAFComputeStats extends AbstractGenericUDAFResolver { } else { List foi = new ArrayList(); foi.add(PrimitiveObjectInspectorFactory.writableStringObjectInspector); - foi.add(getValueObjectInspector()); - foi.add(getValueObjectInspector()); + foi.add(minFieldOI != null ? getValueObjectInspector(minFieldOI.getTypeInfo()) : getValueObjectInspector()); + foi.add(maxFieldOI != null ? getValueObjectInspector(maxFieldOI.getTypeInfo()) : getValueObjectInspector()); foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector); foi.add(PrimitiveObjectInspectorFactory.writableLongObjectInspector); foi.add(PrimitiveObjectInspectorFactory.writableStringObjectInspector); @@ -578,6 +580,11 @@ public class GenericUDAFComputeStats extends AbstractGenericUDAFResolver { return PrimitiveObjectInspectorFactory.javaLongObjectInspector; } + @Override + protected LongObjectInspector getValueObjectInspector(PrimitiveTypeInfo typeInfo) { + return getValueObjectInspector(); + } + @AggregationType(estimable = true) public class LongStatsAgg extends NumericStatsAgg { @Override @@ -641,6 +648,11 @@ public class GenericUDAFComputeStats extends AbstractGenericUDAFResolver { return PrimitiveObjectInspectorFactory.javaDoubleObjectInspector; } + @Override + protected DoubleObjectInspector getValueObjectInspector(PrimitiveTypeInfo typeInfo) { + return getValueObjectInspector(); + } + @AggregationType(estimable = true) public class DoubleStatsAgg extends NumericStatsAgg { @Override @@ -1282,6 +1294,11 @@ public class GenericUDAFComputeStats extends AbstractGenericUDAFResolver { return PrimitiveObjectInspectorFactory.javaHiveDecimalObjectInspector; } + @Override + protected HiveDecimalObjectInspector getValueObjectInspector(PrimitiveTypeInfo typeInfo) { + return (JavaHiveDecimalObjectInspector)PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector(typeInfo); + } + @AggregationType(estimable = true) public class DecimalStatsAgg extends NumericStatsAgg { @Override @@ -1347,6 +1364,11 @@ public class GenericUDAFComputeStats extends AbstractGenericUDAFResolver { return PrimitiveObjectInspectorFactory.writableDateObjectInspector; } + @Override + protected DateObjectInspector getValueObjectInspector(PrimitiveTypeInfo typeInfo) { + return getValueObjectInspector(); + } + @AggregationType(estimable = true) public class DateStatsAgg extends NumericStatsAgg { @Override http://git-wip-us.apache.org/repos/asf/hive/blob/964b8a00/ql/src/test/queries/clientpositive/compute_stats_decimal.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/compute_stats_decimal.q b/ql/src/test/queries/clientpositive/compute_stats_decimal.q index 77ec066..76e1468 100644 --- a/ql/src/test/queries/clientpositive/compute_stats_decimal.q +++ b/ql/src/test/queries/clientpositive/compute_stats_decimal.q @@ -1,6 +1,6 @@ set hive.stats.autogather=true; -create table tab_decimal(a decimal(10,3)); +create table tab_decimal(a decimal(35,3)); -- insert some data LOAD DATA LOCAL INPATH "../../data/files/decimal.txt" INTO TABLE tab_decimal; http://git-wip-us.apache.org/repos/asf/hive/blob/964b8a00/ql/src/test/results/clientpositive/compute_stats_decimal.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/compute_stats_decimal.q.out b/ql/src/test/results/clientpositive/compute_stats_decimal.q.out index c204ab6..c1a2062 100644 --- a/ql/src/test/results/clientpositive/compute_stats_decimal.q.out +++ b/ql/src/test/results/clientpositive/compute_stats_decimal.q.out @@ -1,8 +1,8 @@ -PREHOOK: query: create table tab_decimal(a decimal(10,3)) +PREHOOK: query: create table tab_decimal(a decimal(35,3)) PREHOOK: type: CREATETABLE PREHOOK: Output: database:default PREHOOK: Output: default@tab_decimal -POSTHOOK: query: create table tab_decimal(a decimal(10,3)) +POSTHOOK: query: create table tab_decimal(a decimal(35,3)) POSTHOOK: type: CREATETABLE POSTHOOK: Output: database:default POSTHOOK: Output: default@tab_decimal @@ -24,7 +24,7 @@ POSTHOOK: query: select count(*) from tab_decimal POSTHOOK: type: QUERY POSTHOOK: Input: default@tab_decimal #### A masked pattern was here #### -18 +19 PREHOOK: query: -- compute statistical summary of data select compute_stats(a, 18) from tab_decimal PREHOOK: type: QUERY @@ -35,4 +35,4 @@ select compute_stats(a, 18) from tab_decimal POSTHOOK: type: QUERY POSTHOOK: Input: default@tab_decimal #### A masked pattern was here #### -{"columntype":"Decimal","min":-87.2,"max":435.331,"countnulls":2,"numdistinctvalues":13,"ndvbitvector":"{0, 1, 2, 3, 4}{0, 1, 2, 3, 5}{0, 1, 2, 3}{0, 1, 2}{0, 1, 2}{0, 1, 2, 3, 5}{0, 1, 3}{0, 1, 2, 4}{0, 1, 2, 3, 5}{0, 1, 2, 3}{0, 1, 2}{0, 1}{0, 1, 2}{0, 1, 2, 3}{0, 1, 2, 6, 8}{0, 1, 2, 3}{0, 1, 2}{0, 1, 4, 5}"} +{"columntype":"Decimal","min":-87.2,"max":123456789012345678901234567890.123,"countnulls":2,"numdistinctvalues":13,"ndvbitvector":"{0, 1, 2, 3, 4}{0, 1, 2, 3, 5}{0, 1, 2, 3}{0, 1, 2}{0, 1, 2}{0, 1, 2, 3, 5}{0, 1, 3}{0, 1, 2, 4}{0, 1, 2, 3, 5}{0, 1, 2, 3}{0, 1, 2}{0, 1}{0, 1, 2}{0, 1, 2, 3}{0, 1, 2, 6, 8}{0, 1, 2, 3}{0, 1, 2}{0, 1, 4, 5}"}