Author: hashutosh
Date: Mon Sep  1 01:52:47 2014
New Revision: 1621658

URL: http://svn.apache.org/r1621658
Log:
HIVE-7399 : Timestamp type is not copied by 
ObjectInspectorUtils.copyToStandardObject (Navis via Ashutosh Chauhan)

Modified:
    
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
    
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBinaryObjectInspector.java
    
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaTimestampObjectInspector.java

Modified: 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java?rev=1621658&r1=1621657&r2=1621658&view=diff
==============================================================================
--- 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
 (original)
+++ 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
 Mon Sep  1 01:52:47 2014
@@ -69,9 +69,7 @@ import org.apache.hadoop.hive.serde2.obj
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.TimestampObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector;
-import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
-import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.util.StringUtils;
@@ -108,7 +106,7 @@ public final class ObjectInspectorUtils 
       PrimitiveObjectInspector poi = (PrimitiveObjectInspector) oi;
       if (!(poi instanceof AbstractPrimitiveWritableObjectInspector)) {
         return 
PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(
-            (PrimitiveTypeInfo)poi.getTypeInfo());
+            poi.getTypeInfo());
       }
     }
     return oi;
@@ -292,24 +290,21 @@ public final class ObjectInspectorUtils 
     switch (oi.getCategory()) {
     case PRIMITIVE: {
       PrimitiveObjectInspector loi = (PrimitiveObjectInspector) oi;
-      switch (objectInspectorOption) {
-      case DEFAULT: {
-        if (loi.preferWritable()) {
-          result = loi.getPrimitiveWritableObject(loi.copyObject(o));
-        } else {
-          result = loi.getPrimitiveJavaObject(o);
-        }
-        break;
+      if (objectInspectorOption == ObjectInspectorCopyOption.DEFAULT) {
+        objectInspectorOption = loi.preferWritable() ?
+            ObjectInspectorCopyOption.WRITABLE : 
ObjectInspectorCopyOption.JAVA;
       }
-      case JAVA: {
+      switch (objectInspectorOption) {
+      case JAVA:
         result = loi.getPrimitiveJavaObject(o);
+        if (loi.getPrimitiveCategory() == 
PrimitiveObjectInspector.PrimitiveCategory.TIMESTAMP) {
+          result = 
PrimitiveObjectInspectorFactory.javaTimestampObjectInspector.copyObject(result);
+        }
         break;
-      }
-      case WRITABLE: {
+      case WRITABLE:
         result = loi.getPrimitiveWritableObject(loi.copyObject(o));
         break;
       }
-      }
       break;
     }
     case LIST: {

Modified: 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBinaryObjectInspector.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBinaryObjectInspector.java?rev=1621658&r1=1621657&r2=1621658&view=diff
==============================================================================
--- 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBinaryObjectInspector.java
 (original)
+++ 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBinaryObjectInspector.java
 Mon Sep  1 01:52:47 2014
@@ -32,17 +32,6 @@ public class JavaBinaryObjectInspector e
   }
 
   @Override
-  public byte[] copyObject(Object o) {
-    if (null == o){
-      return null;
-    }
-    byte[] incoming = (byte[])o;
-    byte[] outgoing = new byte[incoming.length];
-    System.arraycopy(incoming, 0, outgoing, 0, incoming.length);
-    return outgoing;
-  }
-
-  @Override
   public BytesWritable getPrimitiveWritableObject(Object o) {
     return o == null ? null : new BytesWritable((byte[])o);
   }

Modified: 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaTimestampObjectInspector.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaTimestampObjectInspector.java?rev=1621658&r1=1621657&r2=1621658&view=diff
==============================================================================
--- 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaTimestampObjectInspector.java
 (original)
+++ 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaTimestampObjectInspector.java
 Mon Sep  1 01:52:47 2014
@@ -39,6 +39,17 @@ public class JavaTimestampObjectInspecto
     return o == null ? null : (Timestamp) o;
   }
 
+  @Override
+  public Object copyObject(Object o) {
+    if (o == null) {
+      return null;
+    }
+    Timestamp source = (Timestamp) o;
+    Timestamp copy = new Timestamp(source.getTime());
+    copy.setNanos(source.getNanos());
+    return copy;
+  }
+
   public Timestamp get(Object o) {
     return (Timestamp) o;
   }


Reply via email to