Repository: hive
Updated Branches:
  refs/heads/master e5baa7617 -> d53aa79ca


HIVE-15291: Comparison of timestamp fails if only date part is provided (Dhiraj 
Kumar, reviewed by Jason Dere)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/d53aa79c
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/d53aa79c
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/d53aa79c

Branch: refs/heads/master
Commit: d53aa79caf9f1574a05a98d8b899ca13a5c5b24f
Parents: e5baa76
Author: Jason Dere <jd...@hortonworks.com>
Authored: Thu Dec 1 15:25:54 2016 -0800
Committer: Jason Dere <jd...@hortonworks.com>
Committed: Thu Dec 1 15:25:54 2016 -0800

----------------------------------------------------------------------
 .../clientpositive/timestamp_date_only.q        |  3 +++
 .../clientpositive/timestamp_date_only.q.out    | 27 ++++++++++++++++++++
 .../PrimitiveObjectInspectorUtils.java          |  3 +++
 .../TestPrimitiveObjectInspectorUtils.java      |  6 +++++
 4 files changed, 39 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/d53aa79c/ql/src/test/queries/clientpositive/timestamp_date_only.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/timestamp_date_only.q 
b/ql/src/test/queries/clientpositive/timestamp_date_only.q
new file mode 100644
index 0000000..324938e
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/timestamp_date_only.q
@@ -0,0 +1,3 @@
+select cast("2016-12-29 23:59:59" as timestamp) < "2016-12-30";
+select cast("2016-12-30 00:00:00" as timestamp) = "2016-12-30";
+select cast("2016-12-30 00:00:01" as timestamp) > "2016-12-30";
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/d53aa79c/ql/src/test/results/clientpositive/timestamp_date_only.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/timestamp_date_only.q.out 
b/ql/src/test/results/clientpositive/timestamp_date_only.q.out
new file mode 100644
index 0000000..8f37a29
--- /dev/null
+++ b/ql/src/test/results/clientpositive/timestamp_date_only.q.out
@@ -0,0 +1,27 @@
+PREHOOK: query: select cast("2016-12-29 23:59:59" as timestamp) < "2016-12-30"
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select cast("2016-12-29 23:59:59" as timestamp) < "2016-12-30"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+true
+PREHOOK: query: select cast("2016-12-30 00:00:00" as timestamp) = "2016-12-30"
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select cast("2016-12-30 00:00:00" as timestamp) = "2016-12-30"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+true
+PREHOOK: query: select cast("2016-12-30 00:00:01" as timestamp) > "2016-12-30"
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select cast("2016-12-30 00:00:01" as timestamp) > "2016-12-30"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+true

http://git-wip-us.apache.org/repos/asf/hive/blob/d53aa79c/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
----------------------------------------------------------------------
diff --git 
a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
 
b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
index 51b529e..26b19f5 100644
--- 
a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
+++ 
b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/PrimitiveObjectInspectorUtils.java
@@ -1133,6 +1133,9 @@ public final class PrimitiveObjectInspectorUtils {
         s = s.substring(0, periodIdx + 10);
       }
     }
+    if (s.indexOf(' ') < 0) {
+      s = s.concat(" 00:00:00");
+    }
     try {
       result = Timestamp.valueOf(s);
     } catch (IllegalArgumentException e) {

http://git-wip-us.apache.org/repos/asf/hive/blob/d53aa79c/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
----------------------------------------------------------------------
diff --git 
a/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
 
b/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
index 1c00e16..ca37b1a 100644
--- 
a/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
+++ 
b/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/primitive/TestPrimitiveObjectInspectorUtils.java
@@ -217,4 +217,10 @@ public class TestPrimitiveObjectInspectorUtils extends 
TestCase {
         .getPrimitiveJavaObjectInspector(PrimitiveCategory.TIMESTAMP);
     assertEquals("2015-02-07 15:01:22.123", 
gmtDateFormat.format(PrimitiveObjectInspectorUtils.getTimestamp(new 
Timestamp(1423321282123L), timestampOI, true)));
   }
+
+  @Test
+  public void testGetTimestampFromString() {
+    DateFormat localDateFormat = new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss.SSS");
+    assertEquals("2015-02-07 00:00:00.000", 
localDateFormat.format(PrimitiveObjectInspectorUtils.getTimestampFromString("2015-02-07")));
+  }
 }

Reply via email to