diff --git serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java index c5a002c..4da3723 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java +++ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorConverter.java @@ -336,7 +336,11 @@ public class PrimitiveObjectInspectorConverter { 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) diff --git serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java index bc3d5a0..e221712 100644 --- serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java +++ serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorConverters.java @@ -116,6 +116,16 @@ public class TestObjectInspectorConverters extends TestCase { 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(