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"))); + } }