You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2016/07/25 21:25:17 UTC
hive git commit: HIVE-13422 : Analyse command not working for column
having datatype as decimal(38, 0) (Thomas Friedrich via Ashutosh Chauhan)
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 <ha...@apache.org>
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 <tf...@yahoo.com>
Authored: Mon Jul 25 14:24:06 2016 -0700
Committer: Ashutosh Chauhan <ha...@apache.org>
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<V, OI extends ObjectInspector>
+ public static abstract class GenericUDAFNumericStatsEvaluator<V, OI extends PrimitiveObjectInspector>
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<ObjectInspector> foi = new ArrayList<ObjectInspector>();
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<ObjectInspector> foi = new ArrayList<ObjectInspector>();
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}"}