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