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));
+  }
+}