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 2014/09/25 18:56:02 UTC
svn commit: r1627573 - in /hive/trunk/ql/src:
java/org/apache/hadoop/hive/ql/udf/UDFLog.java
test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java
test/queries/clientpositive/decimal_udf2.q
test/results/clientpositive/decimal_udf2.q.out
Author: hashutosh
Date: Thu Sep 25 16:56:02 2014
New Revision: 1627573
URL: http://svn.apache.org/r1627573
Log:
HIVE-8114 : Type resolution for udf arguments of Decimal Type results in error (Jason Dere via Ashutosh Chauhan)
Added:
hive/trunk/ql/src/test/queries/clientpositive/decimal_udf2.q
hive/trunk/ql/src/test/results/clientpositive/decimal_udf2.q.out
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java?rev=1627573&r1=1627572&r2=1627573&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java Thu Sep 25 16:56:02 2014
@@ -52,29 +52,6 @@ public class UDFLog extends UDFMath {
}
/**
- * Get the logarithm of the given decimal with the given base.
- */
- public DoubleWritable evaluate(DoubleWritable base, HiveDecimalWritable writable) {
- if (base == null || writable == null) {
- return null;
- }
- double d = writable.getHiveDecimal().bigDecimalValue().doubleValue();
- return log(base.get(), d);
- }
-
- /**
- * Get the logarithm of input with the given decimal as the base.
- */
- public DoubleWritable evaluate(HiveDecimalWritable base, DoubleWritable d) {
- if (base == null || d == null) {
- return null;
- }
-
- double b = base.getHiveDecimal().bigDecimalValue().doubleValue();
- return log(b, d.get());
- }
-
- /**
* Get the logarithm of the given decimal input with the given decimal base.
*/
public DoubleWritable evaluate(HiveDecimalWritable baseWritable, HiveDecimalWritable writable) {
Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java?rev=1627573&r1=1627572&r2=1627573&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFMath.java Thu Sep 25 16:56:02 2014
@@ -98,14 +98,6 @@ public class TestUDFMath {
input = createDecimal("7.38905609893065");
DoubleWritable res = udf.evaluate(input);
Assert.assertEquals(2.0, res.get(), 0.000001);
-
- DoubleWritable input = new DoubleWritable(9.0);
- res = udf.evaluate(createDecimal("3.0"), input);
- Assert.assertEquals(2.0, res.get(), 0.000001);
-
- DoubleWritable base = new DoubleWritable(3.0);
- res = udf.evaluate(base, createDecimal("9.0"));
- Assert.assertEquals(2.0, res.get(), 0.000001);
res = udf.evaluate(createDecimal("3.0"), createDecimal("9.0"));
Assert.assertEquals(2.0, res.get(), 0.000001);
Added: hive/trunk/ql/src/test/queries/clientpositive/decimal_udf2.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/decimal_udf2.q?rev=1627573&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/decimal_udf2.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/decimal_udf2.q Thu Sep 25 16:56:02 2014
@@ -0,0 +1,30 @@
+DROP TABLE IF EXISTS DECIMAL_UDF2;
+
+CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int)
+ROW FORMAT DELIMITED
+ FIELDS TERMINATED BY ' '
+STORED AS TEXTFILE;
+
+LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2;
+
+EXPLAIN
+SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM DECIMAL_UDF2 WHERE key = 10;
+
+SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM DECIMAL_UDF2 WHERE key = 10;
+
+EXPLAIN
+SELECT
+ exp(key), ln(key),
+ log(key), log(key, key), log(key, value), log(value, key),
+ log10(key), sqrt(key)
+FROM DECIMAL_UDF2 WHERE key = 10;
+
+SELECT
+ exp(key), ln(key),
+ log(key), log(key, key), log(key, value), log(value, key),
+ log10(key), sqrt(key)
+FROM DECIMAL_UDF2 WHERE key = 10;
+
+DROP TABLE IF EXISTS DECIMAL_UDF2;
Added: hive/trunk/ql/src/test/results/clientpositive/decimal_udf2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/decimal_udf2.q.out?rev=1627573&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/decimal_udf2.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/decimal_udf2.q.out Thu Sep 25 16:56:02 2014
@@ -0,0 +1,148 @@
+PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int)
+ROW FORMAT DELIMITED
+ FIELDS TERMINATED BY ' '
+STORED AS TEXTFILE
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@DECIMAL_UDF2
+POSTHOOK: query: CREATE TABLE DECIMAL_UDF2 (key decimal(20,10), value int)
+ROW FORMAT DELIMITED
+ FIELDS TERMINATED BY ' '
+STORED AS TEXTFILE
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@DECIMAL_UDF2
+PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@decimal_udf2
+POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv7.txt' INTO TABLE DECIMAL_UDF2
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@decimal_udf2
+PREHOOK: query: EXPLAIN
+SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM DECIMAL_UDF2 WHERE key = 10
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM DECIMAL_UDF2 WHERE key = 10
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ alias: decimal_udf2
+ Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key = 10) (type: boolean)
+ Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: acos(key) (type: double), asin(key) (type: double), atan(key) (type: double), cos(key) (type: double), sin(key) (type: double), tan(key) (type: double), radians(key) (type: double)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
+ Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM DECIMAL_UDF2 WHERE key = 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_udf2
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT acos(key), asin(key), atan(key), cos(key), sin(key), tan(key), radians(key)
+FROM DECIMAL_UDF2 WHERE key = 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_udf2
+#### A masked pattern was here ####
+NaN NaN 1.4711276743037347 -0.8390715290764524 -0.5440211108893698 0.6483608274590866 0.17453292519943295
+PREHOOK: query: EXPLAIN
+SELECT
+ exp(key), ln(key),
+ log(key), log(key, key), log(key, value), log(value, key),
+ log10(key), sqrt(key)
+FROM DECIMAL_UDF2 WHERE key = 10
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT
+ exp(key), ln(key),
+ log(key), log(key, key), log(key, value), log(value, key),
+ log10(key), sqrt(key)
+FROM DECIMAL_UDF2 WHERE key = 10
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Map Reduce
+ Map Operator Tree:
+ TableScan
+ alias: decimal_udf2
+ Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: (key = 10) (type: boolean)
+ Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: exp(key) (type: double), ln(key) (type: double), log(key) (type: double), log(key, key) (type: double), log(key, value) (type: double), log(value, key) (type: double), log10(key) (type: double), sqrt(key) (type: double)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
+ Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 1 Data size: 119 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.TextInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: SELECT
+ exp(key), ln(key),
+ log(key), log(key, key), log(key, value), log(value, key),
+ log10(key), sqrt(key)
+FROM DECIMAL_UDF2 WHERE key = 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@decimal_udf2
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT
+ exp(key), ln(key),
+ log(key), log(key, key), log(key, value), log(value, key),
+ log10(key), sqrt(key)
+FROM DECIMAL_UDF2 WHERE key = 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@decimal_udf2
+#### A masked pattern was here ####
+22026.465794806718 2.302585092994046 2.302585092994046 1.0 1.0 1.0 1.0 3.1622776601683795
+PREHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@decimal_udf2
+PREHOOK: Output: default@decimal_udf2
+POSTHOOK: query: DROP TABLE IF EXISTS DECIMAL_UDF2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@decimal_udf2
+POSTHOOK: Output: default@decimal_udf2