You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jd...@apache.org on 2015/05/05 07:24:14 UTC
hive git commit: HIVE-10519: Move TestGenericUDF classes to
udf.generic package (Alex Pivovarov via Jason Dere)
Repository: hive
Updated Branches:
refs/heads/master 3bf41faa0 -> ff64f1db3
HIVE-10519: Move TestGenericUDF classes to udf.generic package (Alex Pivovarov via Jason Dere)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/ff64f1db
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/ff64f1db
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/ff64f1db
Branch: refs/heads/master
Commit: ff64f1db3eafe6ae76b544928115eee89679ff71
Parents: 3bf41fa
Author: Jason Dere <jd...@hortonworks.com>
Authored: Mon May 4 22:23:44 2015 -0700
Committer: Jason Dere <jd...@hortonworks.com>
Committed: Mon May 4 22:23:44 2015 -0700
----------------------------------------------------------------------
.../hadoop/hive/ql/udf/TestGenericUDFDate.java | 92 ------------
.../hive/ql/udf/TestGenericUDFDateAdd.java | 145 -------------------
.../hive/ql/udf/TestGenericUDFDateDiff.java | 116 ---------------
.../hive/ql/udf/TestGenericUDFDateSub.java | 143 ------------------
.../hadoop/hive/ql/udf/TestGenericUDFUtils.java | 58 --------
.../hive/ql/udf/generic/TestGenericUDFDate.java | 92 ++++++++++++
.../ql/udf/generic/TestGenericUDFDateAdd.java | 143 ++++++++++++++++++
.../ql/udf/generic/TestGenericUDFDateDiff.java | 116 +++++++++++++++
.../ql/udf/generic/TestGenericUDFDateSub.java | 143 ++++++++++++++++++
.../ql/udf/generic/TestGenericUDFUtils.java | 57 ++++++++
10 files changed, 551 insertions(+), 554 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDate.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDate.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDate.java
deleted file mode 100644
index 0d40ff7..0000000
--- a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDate.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.udf;
-
-import java.sql.Date;
-import java.sql.Timestamp;
-
-import junit.framework.TestCase;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFDate;
-import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.TimestampWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.io.Text;
-
-public class TestGenericUDFDate extends TestCase {
- public void testStringToDate() throws HiveException {
- GenericUDFDate udf = new GenericUDFDate();
- ObjectInspector valueOI = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector[] arguments = {valueOI};
-
- udf.initialize(arguments);
- DeferredObject valueObj = new DeferredJavaObject(new Text("2009-07-30"));
- DeferredObject[] args = {valueObj};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("to_date() test for STRING failed ", "2009-07-30", output.toString());
-
- // Try with null args
- DeferredObject[] nullArgs = { new DeferredJavaObject(null) };
- output = (Text) udf.evaluate(nullArgs);
- assertNull("to_date() with null STRING", output);
- }
-
- public void testTimestampToDate() throws HiveException {
- GenericUDFDate udf = new GenericUDFDate();
- ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
- ObjectInspector[] arguments = {valueOI};
-
- udf.initialize(arguments);
- DeferredObject valueObj = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
- 30, 4, 17, 52, 0)));
- DeferredObject[] args = {valueObj};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("to_date() test for TIMESTAMP failed ", "2009-07-30", output.toString());
-
- // Try with null args
- DeferredObject[] nullArgs = { new DeferredJavaObject(null) };
- output = (Text) udf.evaluate(nullArgs);
- assertNull("to_date() with null TIMESTAMP", output);
- }
-
- public void testDateWritablepToDate() throws HiveException {
- GenericUDFDate udf = new GenericUDFDate();
- ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector[] arguments = {valueOI};
-
- udf.initialize(arguments);
- DeferredObject valueObj = new DeferredJavaObject(new DateWritable(new Date(109, 06, 30)));
- DeferredObject[] args = {valueObj};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("to_date() test for DATEWRITABLE failed ", "2009-07-30", output.toString());
-
- // Try with null args
- DeferredObject[] nullArgs = { new DeferredJavaObject(null) };
- output = (Text) udf.evaluate(nullArgs);
- assertNull("to_date() with null DATE", output);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateAdd.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateAdd.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateAdd.java
deleted file mode 100644
index 0f3ecd1..0000000
--- a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateAdd.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.udf;
-
-import java.sql.Date;
-import java.sql.Timestamp;
-
-import junit.framework.TestCase;
-
-import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
-import org.apache.hadoop.hive.ql.metadata.Hive;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFDateAdd;
-import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.TimestampWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.io.Text;
-
-public class TestGenericUDFDateAdd extends TestCase {
- public void testStringToDate() throws HiveException {
- GenericUDFDateAdd udf = new GenericUDFDateAdd();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new Text("2009-07-20 04:17:52"));
- DeferredObject valueObj2 = new DeferredJavaObject(new Integer("2"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_add() test for STRING failed ", "2009-07-22", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
- public void testTimestampToDate() throws HiveException {
- GenericUDFDateAdd udf = new GenericUDFDateAdd();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
- 20, 4, 17, 52, 0)));
- DeferredObject valueObj2 = new DeferredJavaObject(new Integer("3"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_add() test for TIMESTAMP failed ", "2009-07-23", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
- public void testDateWritablepToDate() throws HiveException {
- GenericUDFDateAdd udf = new GenericUDFDateAdd();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
- DeferredObject valueObj2 = new DeferredJavaObject(new Integer("4"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_add() test for DATEWRITABLE failed ", "2009-07-24", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
- public void testByteDataTypeAsDays() throws HiveException {
- GenericUDFDateAdd udf = new GenericUDFDateAdd();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaByteObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
- DeferredObject valueObj2 = new DeferredJavaObject(new Byte("4"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_add() test for BYTE failed ", "2009-07-24", output.toString());
- }
-
- public void testShortDataTypeAsDays() throws HiveException {
- GenericUDFDateAdd udf = new GenericUDFDateAdd();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaShortObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
- DeferredObject valueObj2 = new DeferredJavaObject(new Short("4"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_add() test for SHORT failed ", "2009-07-24", output.toString());
- }
-}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateDiff.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateDiff.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateDiff.java
deleted file mode 100644
index 849e70c..0000000
--- a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateDiff.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.udf;
-
-import java.sql.Date;
-import java.sql.Timestamp;
-
-import junit.framework.TestCase;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFDateDiff;
-import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.TimestampWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.io.IntWritable;
-import org.apache.hadoop.io.Text;
-
-public class TestGenericUDFDateDiff extends TestCase {
- public void testStringToDate() throws HiveException {
- GenericUDFDateDiff udf = new GenericUDFDateDiff();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new Text("2009-07-20"));
- DeferredObject valueObj2 = new DeferredJavaObject(new Text("2009-07-22"));
- DeferredObject[] args = {valueObj1, valueObj2};
- IntWritable output = (IntWritable) udf.evaluate(args);
-
- assertEquals("date_iff() test for STRING failed ", "-2", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
- public void testTimestampToDate() throws HiveException {
- GenericUDFDateDiff udf = new GenericUDFDateDiff();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
- 20, 0, 0, 0, 0)));
- DeferredObject valueObj2 = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
- 17, 0, 0, 0, 0)));
- DeferredObject[] args = {valueObj1, valueObj2};
- IntWritable output = (IntWritable) udf.evaluate(args);
-
- assertEquals("datediff() test for TIMESTAMP failed ", "3", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
- public void testDateWritablepToDate() throws HiveException {
- GenericUDFDateDiff udf = new GenericUDFDateDiff();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
- DeferredObject valueObj2 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 10)));
- DeferredObject[] args = {valueObj1, valueObj2};
- IntWritable output = (IntWritable) udf.evaluate(args);
-
- assertEquals("datediff() test for DATEWRITABLE failed ", "10", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateSub.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateSub.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateSub.java
deleted file mode 100644
index ae1b3db..0000000
--- a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFDateSub.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.udf;
-
-import java.sql.Date;
-import java.sql.Timestamp;
-
-import junit.framework.TestCase;
-
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFDateSub;
-import org.apache.hadoop.hive.serde2.io.DateWritable;
-import org.apache.hadoop.hive.serde2.io.TimestampWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.io.Text;
-
-public class TestGenericUDFDateSub extends TestCase {
- public void testStringToDate() throws HiveException {
- GenericUDFDateSub udf = new GenericUDFDateSub();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new Text("2009-07-20 04:17:52"));
- DeferredObject valueObj2 = new DeferredJavaObject(new Integer("2"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_sub() test for STRING failed ", "2009-07-18", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
- public void testTimestampToDate() throws HiveException {
- GenericUDFDateSub udf = new GenericUDFDateSub();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
- 20, 4, 17, 52, 0)));
- DeferredObject valueObj2 = new DeferredJavaObject(new Integer("3"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_sub() test for TIMESTAMP failed ", "2009-07-17", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
- public void testDateWritablepToDate() throws HiveException {
- GenericUDFDateSub udf = new GenericUDFDateSub();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
- DeferredObject valueObj2 = new DeferredJavaObject(new Integer("4"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_sub() test for DATEWRITABLE failed ", "2009-07-16", output.toString());
-
- // Test with null args
- args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
- assertNull("date_add() 1st arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
- assertNull("date_add() 2nd arg null", udf.evaluate(args));
-
- args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
- assertNull("date_add() both args null", udf.evaluate(args));
- }
-
- public void testByteDataTypeAsDays() throws HiveException {
- GenericUDFDateSub udf = new GenericUDFDateSub();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaByteObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
- DeferredObject valueObj2 = new DeferredJavaObject(new Byte("4"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_add() test for BYTE failed ", "2009-07-16", output.toString());
- }
-
- public void testShortDataTypeAsDays() throws HiveException {
- GenericUDFDateSub udf = new GenericUDFDateSub();
- ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
- ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaShortObjectInspector;
- ObjectInspector[] arguments = {valueOI1, valueOI2};
-
- udf.initialize(arguments);
- DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
- DeferredObject valueObj2 = new DeferredJavaObject(new Short("4"));
- DeferredObject[] args = {valueObj1, valueObj2};
- Text output = (Text) udf.evaluate(args);
-
- assertEquals("date_add() test for SHORT failed ", "2009-07-16", output.toString());
- }
-}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFUtils.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFUtils.java
deleted file mode 100644
index 7399a7c..0000000
--- a/ql/src/test/org/apache/hadoop/hive/ql/udf/TestGenericUDFUtils.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hive.ql.udf;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDFUtils;
-import org.apache.hadoop.io.Text;
-import org.junit.Test;
-
-public class TestGenericUDFUtils extends TestCase {
-
- @Test
- public void testFindText() throws Exception {
-
- // http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_locate
- Assert.assertEquals(0, GenericUDFUtils.findText(new Text("foobarbar"), new Text("foo"), 0));
- Assert.assertEquals(3, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 0));
- Assert.assertEquals(-1, GenericUDFUtils.findText(new Text("foobarbar"), new Text("xbar"), 0));
- Assert.assertEquals(6, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 5));
-
- Assert.assertEquals(6, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 5));
- Assert.assertEquals(6, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 6));
- Assert.assertEquals(-1, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 7));
- Assert.assertEquals(-1, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 10));
-
- Assert.assertEquals(-1, GenericUDFUtils.findText(new Text(""), new Text("bar"), 0));
- Assert.assertEquals(0, GenericUDFUtils.findText(new Text(""), new Text(""), 0));
- Assert.assertEquals(0, GenericUDFUtils.findText(new Text("foobar"), new Text(""), 0));
- Assert.assertEquals(0, GenericUDFUtils.findText(new Text("foobar"), new Text(""), 6));
- Assert.assertEquals(-1, GenericUDFUtils.findText(new Text("foobar"), new Text(""), 7));
-
- //Unicode case.
- Assert.assertEquals(4, GenericUDFUtils.findText(new Text("НАСТРОЕние"), new Text("Р"), 0));
- Assert.assertEquals(15, GenericUDFUtils.findText(new Text("НАСТРОЕние НАСТРОЕние"), new Text("Р"), 11));
-
- //surrogate pair case
- Assert.assertEquals(3, GenericUDFUtils.findText(new Text("123\uD801\uDC00456"), new Text("\uD801\uDC00"), 0));
- Assert.assertEquals(4, GenericUDFUtils.findText(new Text("123\uD801\uDC00456"), new Text("4"), 0));
- }
-}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDate.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDate.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDate.java
new file mode 100644
index 0000000..0c4928e
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDate.java
@@ -0,0 +1,92 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.udf.generic;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+import junit.framework.TestCase;
+
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFDate;
+import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.io.TimestampWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.io.Text;
+
+public class TestGenericUDFDate extends TestCase {
+ public void testStringToDate() throws HiveException {
+ GenericUDFDate udf = new GenericUDFDate();
+ ObjectInspector valueOI = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
+ ObjectInspector[] arguments = {valueOI};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj = new DeferredJavaObject(new Text("2009-07-30"));
+ DeferredObject[] args = {valueObj};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("to_date() test for STRING failed ", "2009-07-30", output.toString());
+
+ // Try with null args
+ DeferredObject[] nullArgs = { new DeferredJavaObject(null) };
+ output = (Text) udf.evaluate(nullArgs);
+ assertNull("to_date() with null STRING", output);
+ }
+
+ public void testTimestampToDate() throws HiveException {
+ GenericUDFDate udf = new GenericUDFDate();
+ ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
+ ObjectInspector[] arguments = {valueOI};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
+ 30, 4, 17, 52, 0)));
+ DeferredObject[] args = {valueObj};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("to_date() test for TIMESTAMP failed ", "2009-07-30", output.toString());
+
+ // Try with null args
+ DeferredObject[] nullArgs = { new DeferredJavaObject(null) };
+ output = (Text) udf.evaluate(nullArgs);
+ assertNull("to_date() with null TIMESTAMP", output);
+ }
+
+ public void testDateWritablepToDate() throws HiveException {
+ GenericUDFDate udf = new GenericUDFDate();
+ ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector[] arguments = {valueOI};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj = new DeferredJavaObject(new DateWritable(new Date(109, 06, 30)));
+ DeferredObject[] args = {valueObj};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("to_date() test for DATEWRITABLE failed ", "2009-07-30", output.toString());
+
+ // Try with null args
+ DeferredObject[] nullArgs = { new DeferredJavaObject(null) };
+ output = (Text) udf.evaluate(nullArgs);
+ assertNull("to_date() with null DATE", output);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateAdd.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateAdd.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateAdd.java
new file mode 100644
index 0000000..08b9604
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateAdd.java
@@ -0,0 +1,143 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.udf.generic;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+import junit.framework.TestCase;
+
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFDateAdd;
+import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.io.TimestampWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.io.Text;
+
+public class TestGenericUDFDateAdd extends TestCase {
+ public void testStringToDate() throws HiveException {
+ GenericUDFDateAdd udf = new GenericUDFDateAdd();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new Text("2009-07-20 04:17:52"));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Integer("2"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_add() test for STRING failed ", "2009-07-22", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+ public void testTimestampToDate() throws HiveException {
+ GenericUDFDateAdd udf = new GenericUDFDateAdd();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
+ 20, 4, 17, 52, 0)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Integer("3"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_add() test for TIMESTAMP failed ", "2009-07-23", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+ public void testDateWritablepToDate() throws HiveException {
+ GenericUDFDateAdd udf = new GenericUDFDateAdd();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Integer("4"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_add() test for DATEWRITABLE failed ", "2009-07-24", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+ public void testByteDataTypeAsDays() throws HiveException {
+ GenericUDFDateAdd udf = new GenericUDFDateAdd();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaByteObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Byte("4"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_add() test for BYTE failed ", "2009-07-24", output.toString());
+ }
+
+ public void testShortDataTypeAsDays() throws HiveException {
+ GenericUDFDateAdd udf = new GenericUDFDateAdd();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaShortObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Short("4"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_add() test for SHORT failed ", "2009-07-24", output.toString());
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateDiff.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateDiff.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateDiff.java
new file mode 100644
index 0000000..af45af7
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateDiff.java
@@ -0,0 +1,116 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.udf.generic;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+import junit.framework.TestCase;
+
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFDateDiff;
+import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.io.TimestampWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.Text;
+
+public class TestGenericUDFDateDiff extends TestCase {
+ public void testStringToDate() throws HiveException {
+ GenericUDFDateDiff udf = new GenericUDFDateDiff();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new Text("2009-07-20"));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Text("2009-07-22"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ IntWritable output = (IntWritable) udf.evaluate(args);
+
+ assertEquals("date_iff() test for STRING failed ", "-2", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+ public void testTimestampToDate() throws HiveException {
+ GenericUDFDateDiff udf = new GenericUDFDateDiff();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
+ 20, 0, 0, 0, 0)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
+ 17, 0, 0, 0, 0)));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ IntWritable output = (IntWritable) udf.evaluate(args);
+
+ assertEquals("datediff() test for TIMESTAMP failed ", "3", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+ public void testDateWritablepToDate() throws HiveException {
+ GenericUDFDateDiff udf = new GenericUDFDateDiff();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 10)));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ IntWritable output = (IntWritable) udf.evaluate(args);
+
+ assertEquals("datediff() test for DATEWRITABLE failed ", "10", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateSub.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateSub.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateSub.java
new file mode 100644
index 0000000..ab8d109
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFDateSub.java
@@ -0,0 +1,143 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.udf.generic;
+
+import java.sql.Date;
+import java.sql.Timestamp;
+
+import junit.framework.TestCase;
+
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFDateSub;
+import org.apache.hadoop.hive.serde2.io.DateWritable;
+import org.apache.hadoop.hive.serde2.io.TimestampWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.io.Text;
+
+public class TestGenericUDFDateSub extends TestCase {
+ public void testStringToDate() throws HiveException {
+ GenericUDFDateSub udf = new GenericUDFDateSub();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.javaStringObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new Text("2009-07-20 04:17:52"));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Integer("2"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_sub() test for STRING failed ", "2009-07-18", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+ public void testTimestampToDate() throws HiveException {
+ GenericUDFDateSub udf = new GenericUDFDateSub();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableTimestampObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new TimestampWritable(new Timestamp(109, 06,
+ 20, 4, 17, 52, 0)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Integer("3"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_sub() test for TIMESTAMP failed ", "2009-07-17", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+ public void testDateWritablepToDate() throws HiveException {
+ GenericUDFDateSub udf = new GenericUDFDateSub();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaIntObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Integer("4"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_sub() test for DATEWRITABLE failed ", "2009-07-16", output.toString());
+
+ // Test with null args
+ args = new DeferredObject[] { new DeferredJavaObject(null), valueObj2 };
+ assertNull("date_add() 1st arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { valueObj1, new DeferredJavaObject(null) };
+ assertNull("date_add() 2nd arg null", udf.evaluate(args));
+
+ args = new DeferredObject[] { new DeferredJavaObject(null), new DeferredJavaObject(null) };
+ assertNull("date_add() both args null", udf.evaluate(args));
+ }
+
+ public void testByteDataTypeAsDays() throws HiveException {
+ GenericUDFDateSub udf = new GenericUDFDateSub();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaByteObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Byte("4"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_add() test for BYTE failed ", "2009-07-16", output.toString());
+ }
+
+ public void testShortDataTypeAsDays() throws HiveException {
+ GenericUDFDateSub udf = new GenericUDFDateSub();
+ ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector;
+ ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaShortObjectInspector;
+ ObjectInspector[] arguments = {valueOI1, valueOI2};
+
+ udf.initialize(arguments);
+ DeferredObject valueObj1 = new DeferredJavaObject(new DateWritable(new Date(109, 06, 20)));
+ DeferredObject valueObj2 = new DeferredJavaObject(new Short("4"));
+ DeferredObject[] args = {valueObj1, valueObj2};
+ Text output = (Text) udf.evaluate(args);
+
+ assertEquals("date_add() test for SHORT failed ", "2009-07-16", output.toString());
+ }
+}
http://git-wip-us.apache.org/repos/asf/hive/blob/ff64f1db/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFUtils.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFUtils.java
new file mode 100644
index 0000000..ffbb2be
--- /dev/null
+++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFUtils.java
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.udf.generic;
+
+import org.junit.Assert;
+
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFUtils;
+import org.apache.hadoop.io.Text;
+import org.junit.Test;
+
+public class TestGenericUDFUtils {
+
+ @Test
+ public void testFindText() throws Exception {
+
+ // http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_locate
+ Assert.assertEquals(0, GenericUDFUtils.findText(new Text("foobarbar"), new Text("foo"), 0));
+ Assert.assertEquals(3, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 0));
+ Assert.assertEquals(-1, GenericUDFUtils.findText(new Text("foobarbar"), new Text("xbar"), 0));
+ Assert.assertEquals(6, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 5));
+
+ Assert.assertEquals(6, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 5));
+ Assert.assertEquals(6, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 6));
+ Assert.assertEquals(-1, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 7));
+ Assert.assertEquals(-1, GenericUDFUtils.findText(new Text("foobarbar"), new Text("bar"), 10));
+
+ Assert.assertEquals(-1, GenericUDFUtils.findText(new Text(""), new Text("bar"), 0));
+ Assert.assertEquals(0, GenericUDFUtils.findText(new Text(""), new Text(""), 0));
+ Assert.assertEquals(0, GenericUDFUtils.findText(new Text("foobar"), new Text(""), 0));
+ Assert.assertEquals(0, GenericUDFUtils.findText(new Text("foobar"), new Text(""), 6));
+ Assert.assertEquals(-1, GenericUDFUtils.findText(new Text("foobar"), new Text(""), 7));
+
+ //Unicode case.
+ Assert.assertEquals(4, GenericUDFUtils.findText(new Text("НАСТРОЕние"), new Text("Р"), 0));
+ Assert.assertEquals(15, GenericUDFUtils.findText(new Text("НАСТРОЕние НАСТРОЕние"), new Text("Р"), 11));
+
+ //surrogate pair case
+ Assert.assertEquals(3, GenericUDFUtils.findText(new Text("123\uD801\uDC00456"), new Text("\uD801\uDC00"), 0));
+ Assert.assertEquals(4, GenericUDFUtils.findText(new Text("123\uD801\uDC00456"), new Text("4"), 0));
+ }
+}