You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by st...@apache.org on 2017/11/09 01:32:23 UTC
[02/14] hive git commit: HIVE-17640: Comparison of date return null
if time part is provided in string. (Yongzhi Chen, reviewed by Aihua Xu)
HIVE-17640: Comparison of date return null if time part is provided in string. (Yongzhi Chen, reviewed by Aihua Xu)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/a2df8f48
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/a2df8f48
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/a2df8f48
Branch: refs/heads/branch-2.3
Commit: a2df8f48ee32008032102759d48b0172b949b494
Parents: f3dc6a9
Author: Yongzhi Chen <yc...@apache.org>
Authored: Fri Oct 20 10:29:49 2017 -0400
Committer: Sahil Takiar <st...@cloudera.com>
Committed: Tue Nov 7 08:15:47 2017 -0800
----------------------------------------------------------------------
.../queries/clientpositive/date_withtimestamp.q | 3 +++
.../clientpositive/annotate_stats_select.q.out | 4 +--
.../clientpositive/constantfolding.q.out | 4 +--
.../clientpositive/date_withtimestamp.q.out | 27 ++++++++++++++++++++
.../PrimitiveObjectInspectorUtils.java | 16 +++++++++---
5 files changed, 47 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/a2df8f48/ql/src/test/queries/clientpositive/date_withtimestamp.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/date_withtimestamp.q b/ql/src/test/queries/clientpositive/date_withtimestamp.q
new file mode 100644
index 0000000..b6d04f5
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/date_withtimestamp.q
@@ -0,0 +1,3 @@
+select "2016-12-29 23:59:59" < cast("2016-12-30" as date);
+select "2016-12-30 00:00:00" = cast("2016-12-30" as date);
+select "2016-12-31 00:00:01" > cast("2016-12-30" as date);
http://git-wip-us.apache.org/repos/asf/hive/blob/a2df8f48/ql/src/test/results/clientpositive/annotate_stats_select.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/annotate_stats_select.q.out b/ql/src/test/results/clientpositive/annotate_stats_select.q.out
index 873f1ab..489f4d2 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_select.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_select.q.out
@@ -470,9 +470,9 @@ STAGE PLANS:
alias: alltypes_orc
Statistics: Num rows: 2 Data size: 1686 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
- expressions: null (type: date)
+ expressions: 1970-12-31 (type: date)
outputColumnNames: _col0
- Statistics: Num rows: 2 Data size: 56 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 2 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE
ListSink
PREHOOK: query: explain select cast("58.174" as DECIMAL) from alltypes_orc
http://git-wip-us.apache.org/repos/asf/hive/blob/a2df8f48/ql/src/test/results/clientpositive/constantfolding.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/constantfolding.q.out b/ql/src/test/results/clientpositive/constantfolding.q.out
index 10e185f..f9a9d24 100644
--- a/ql/src/test/results/clientpositive/constantfolding.q.out
+++ b/ql/src/test/results/clientpositive/constantfolding.q.out
@@ -205,9 +205,9 @@ STAGE PLANS:
alias: src
Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
- expressions: null (type: date)
+ expressions: 1970-12-31 (type: date)
outputColumnNames: _col0
- Statistics: Num rows: 500 Data size: 56 Basic stats: COMPLETE Column stats: COMPLETE
+ Statistics: Num rows: 500 Data size: 28000 Basic stats: COMPLETE Column stats: COMPLETE
ListSink
PREHOOK: query: CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE
http://git-wip-us.apache.org/repos/asf/hive/blob/a2df8f48/ql/src/test/results/clientpositive/date_withtimestamp.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/date_withtimestamp.q.out b/ql/src/test/results/clientpositive/date_withtimestamp.q.out
new file mode 100644
index 0000000..3661888
--- /dev/null
+++ b/ql/src/test/results/clientpositive/date_withtimestamp.q.out
@@ -0,0 +1,27 @@
+PREHOOK: query: select "2016-12-29 23:59:59" < cast("2016-12-30" as date)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select "2016-12-29 23:59:59" < cast("2016-12-30" as date)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+true
+PREHOOK: query: select "2016-12-30 00:00:00" = cast("2016-12-30" as date)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select "2016-12-30 00:00:00" = cast("2016-12-30" as date)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+true
+PREHOOK: query: select "2016-12-31 00:00:01" > cast("2016-12-30" as date)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+#### A masked pattern was here ####
+POSTHOOK: query: select "2016-12-31 00:00:01" > cast("2016-12-30" as date)
+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/a2df8f48/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 9642a7e..27af6ec 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
@@ -1072,16 +1072,26 @@ public final class PrimitiveObjectInspectorUtils {
try {
result = Date.valueOf(s);
} catch (IllegalArgumentException e) {
- result = null;
+ Timestamp ts = getTimestampFromString(s);
+ if (ts != null) {
+ result = new Date(ts.getTime());
+ } else {
+ result = null;
+ }
}
break;
case CHAR:
case VARCHAR: {
+ String val = getString(o, oi).trim();
try {
- String val = getString(o, oi).trim();
result = Date.valueOf(val);
} catch (IllegalArgumentException e) {
- result = null;
+ Timestamp ts = getTimestampFromString(val);
+ if (ts != null) {
+ result = new Date(ts.getTime());
+ } else {
+ result = null;
+ }
}
break;
}