You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by zs...@apache.org on 2008/12/31 01:46:56 UTC
svn commit: r730279 - in /hadoop/hive/trunk: ./
ql/src/java/org/apache/hadoop/hive/ql/udf/
ql/src/test/queries/clientpositive/ ql/src/test/results/clientpositive/
Author: zshao
Date: Tue Dec 30 16:46:56 2008
New Revision: 730279
URL: http://svn.apache.org/viewvc?rev=730279&view=rev
Log:
HIVE-194. Support specifying decimal places for ROUND function.(David Phillips via zshao)
Added:
hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_round.q
hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_round.q.out
Modified:
hadoop/hive/trunk/CHANGES.txt
hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java
hadoop/hive/trunk/ql/src/test/results/clientpositive/udf4.q.out
Modified: hadoop/hive/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/CHANGES.txt?rev=730279&r1=730278&r2=730279&view=diff
==============================================================================
--- hadoop/hive/trunk/CHANGES.txt (original)
+++ hadoop/hive/trunk/CHANGES.txt Tue Dec 30 16:46:56 2008
@@ -29,6 +29,9 @@
IMPROVEMENTS
+ HIVE-194. Support specifying decimal places for ROUND function.
+ (David Phillips via zshao)
+
HIVE-177. Allow specifying custom input and output format in CREATE TABLE.
(David Phillips via zshao)
Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java?rev=730279&r1=730278&r2=730279&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java Tue Dec 30 16:46:56 2008
@@ -18,24 +18,27 @@
package org.apache.hadoop.hive.ql.udf;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
import org.apache.hadoop.hive.ql.exec.UDF;
public class UDFRound implements UDF {
- private static Log LOG = LogFactory.getLog(UDFRound.class.getName());
-
public UDFRound() {
}
- public Long evaluate(Double i) {
- if (i == null) {
+ public Long evaluate(Double n) {
+ if (n == null)
+ return null;
+ return evaluate(n, 0).longValue();
+ }
+
+ public Double evaluate(Double n, Integer i) {
+ if ((n == null) || (i == null))
return null;
- } else {
- return Long.valueOf(Math.round(i));
- }
+ return BigDecimal.valueOf(n).setScale(i, RoundingMode.HALF_UP).doubleValue();
}
}
Added: hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_round.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_round.q?rev=730279&view=auto
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_round.q (added)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_round.q Tue Dec 30 16:46:56 2008
@@ -0,0 +1,40 @@
+SELECT round(null), round(null, 0), round(125, null)
+FROM src LIMIT 1;
+
+SELECT
+ round(55555), round(55555, 0), round(55555, 1), round(55555, 2), round(55555, 3),
+ round(55555, -1), round(55555, -2), round(55555, -3), round(55555, -4),
+ round(55555, -5), round(55555, -6), round(55555, -7), round(55555, -8)
+FROM src LIMIT 1;
+
+SELECT
+ round(125.315), round(125.315, 0),
+ round(125.315, 1), round(125.315, 2), round(125.315, 3), round(125.315, 4),
+ round(125.315, -1), round(125.315, -2), round(125.315, -3), round(125.315, -4),
+ round(-125.315), round(-125.315, 0),
+ round(-125.315, 1), round(-125.315, 2), round(-125.315, 3), round(-125.315, 4),
+ round(-125.315, -1), round(-125.315, -2), round(-125.315, -3), round(-125.315, -4)
+FROM src LIMIT 1;
+
+SELECT
+ round(3.141592653589793, -15), round(3.141592653589793, -16),
+ round(3.141592653589793, -13), round(3.141592653589793, -14),
+ round(3.141592653589793, -11), round(3.141592653589793, -12),
+ round(3.141592653589793, -9), round(3.141592653589793, -10),
+ round(3.141592653589793, -7), round(3.141592653589793, -8),
+ round(3.141592653589793, -5), round(3.141592653589793, -6),
+ round(3.141592653589793, -3), round(3.141592653589793, -4),
+ round(3.141592653589793, -1), round(3.141592653589793, -2),
+ round(3.141592653589793, 0), round(3.141592653589793, 1),
+ round(3.141592653589793, 2), round(3.141592653589793, 3),
+ round(3.141592653589793, 4), round(3.141592653589793, 5),
+ round(3.141592653589793, 6), round(3.141592653589793, 7),
+ round(3.141592653589793, 8), round(3.141592653589793, 9),
+ round(3.141592653589793, 10), round(3.141592653589793, 11),
+ round(3.141592653589793, 12), round(3.141592653589793, 13),
+ round(3.141592653589793, 13), round(3.141592653589793, 14),
+ round(3.141592653589793, 15), round(3.141592653589793, 16)
+FROM src LIMIT 1;
+
+SELECT round(1809242.3151111344, 9), round(-1809242.3151111344, 9)
+FROM src LIMIT 1;
Modified: hadoop/hive/trunk/ql/src/test/results/clientpositive/udf4.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/udf4.q.out?rev=730279&r1=730278&r2=730279&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/udf4.q.out (original)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/udf4.q.out Tue Dec 30 16:46:56 2008
@@ -56,4 +56,4 @@
limit: -1
-1 2 -1 1 1 -2 1 2 -1 1 0.731057369148862 3 -3 3 -1 -2
+1 2 -2 1 1 -2 1 2 -1 1 0.731057369148862 3 -3 3 -1 -2
Added: hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_round.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_round.q.out?rev=730279&view=auto
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_round.q.out (added)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_round.q.out Tue Dec 30 16:46:56 2008
@@ -0,0 +1,5 @@
+NULL NULL NULL
+55555 55555.0 55555.0 55555.0 55555.0 55560.0 55600.0 56000.0 60000.0 100000.0 0.0 0.0 0.0
+125 125.0 125.3 125.32 125.315 125.315 130.0 100.0 0.0 0.0 -125 -125.0 -125.3 -125.32 -125.315 -125.315 -130.0 -100.0 0.0 0.0
+0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.1 3.14 3.142 3.1416 3.14159 3.141593 3.1415927 3.14159265 3.141592654 3.1415926536 3.14159265359 3.14159265359 3.1415926535898 3.1415926535898 3.14159265358979 3.141592653589793 3.141592653589793
+1809242.315111134 -1809242.315111134