You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2012/03/28 03:18:04 UTC

svn commit: r1306096 - in /hive/trunk/serde/src: java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java

Author: hashutosh
Date: Wed Mar 28 01:18:04 2012
New Revision: 1306096

URL: http://svn.apache.org/viewvc?rev=1306096&view=rev
Log:
HIVE-2891: TextConverter for UDF's is inefficient if the input object is already Text or Lazy (Cliff Engle via Ashutosh Chauhan)

Modified:
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java
    hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java?rev=1306096&r1=1306095&r2=1306096&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java Wed Mar 28 01:18:04 2012
@@ -336,7 +336,11 @@ public class PrimitiveObjectInspectorCon
         t.set(String.valueOf(((DoubleObjectInspector) inputOI).get(input)));
         return t;
       case STRING:
-        t.set(((StringObjectInspector) inputOI).getPrimitiveJavaObject(input));
+	if (inputOI.preferWritable()) {
+	  t.set(((StringObjectInspector) inputOI).getPrimitiveWritableObject(input));
+	} else {
+	  t.set(((StringObjectInspector) inputOI).getPrimitiveJavaObject(input));
+	}
         return t;
       case TIMESTAMP:
         t.set(((TimestampObjectInspector) inputOI)

Modified: hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java?rev=1306096&r1=1306095&r2=1306096&view=diff
==============================================================================
--- hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java (original)
+++ hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java Wed Mar 28 01:18:04 2012
@@ -116,6 +116,16 @@ public class TestObjectInspectorConverte
       assertEquals("TextConverter", new Text("hive"), textConverter
           .convert(new BytesWritable(new byte[]
               {(byte)'h', (byte)'i',(byte)'v',(byte)'e'})));
+      textConverter = ObjectInspectorConverters.getConverter(
+          PrimitiveObjectInspectorFactory.writableStringObjectInspector,
+          PrimitiveObjectInspectorFactory.writableStringObjectInspector);
+      assertEquals("TextConverter", new Text("hive"), textConverter
+	  .convert(new Text("hive")));
+      textConverter = ObjectInspectorConverters.getConverter(
+          PrimitiveObjectInspectorFactory.javaStringObjectInspector,
+          PrimitiveObjectInspectorFactory.writableStringObjectInspector);
+      assertEquals("TextConverter", new Text("hive"), textConverter
+	  .convert(new String("hive")));
 
       // Binary
       Converter baConverter = ObjectInspectorConverters.getConverter(