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/llap Commit: ff64f1db3eafe6ae76b544928115eee89679ff71 Parents: 3bf41fa Author: Jason Dere <[email protected]> Authored: Mon May 4 22:23:44 2015 -0700 Committer: Jason Dere <[email protected]> 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)); + } +}
