Dhiraj Kumar created HIVE-15291:
-----------------------------------
Summary: Comparison of timestamp fails if only date part is
provided.
Key: HIVE-15291
URL: https://issues.apache.org/jira/browse/HIVE-15291
Project: Hive
Issue Type: Bug
Components: Hive, UDF
Affects Versions: 2.1.0
Reporter: Dhiraj Kumar
Summary : If a query needs to compare two timestamp with one timestamp provided
in "YYYY-MM-DD" format and skipping the time part, it returns incorrect result.
Steps to reproduce :
1. Start a hive-cli.
2. Fire up the query -> select cast("2016-12-31 12:00:00" as timestamp) >
"2016-12-30";
3. Expected result : true
4. Actual result : NULL
Detailed description :
If two primitives of different type needs to compared, a common comparator type
is chosen. Prior to 2.1, Common type Text was chosen to compare Timestamp type
and Text type.
In version 2.1, Common type Timestamp is chosen to compare Timestamp type and
Text type. This leads to converting Text type (YYYY-MM-DD) to be converted into
java.sql.Timestamp which throws Exception saying the input is not in proper
format. The exception is suppressed and a null is returned.
Code below from org.apache.hadoop.hive.ql.exec.FunctionRegistry
{code:java}
if (pgA == PrimitiveGrouping.STRING_GROUP && pgB ==
PrimitiveGrouping.DATE_GROUP) {
return b;
}
// date/timestamp is higher precedence than String_GROUP
if (pgB == PrimitiveGrouping.STRING_GROUP && pgA ==
PrimitiveGrouping.DATE_GROUP) {
return a;
}
{code}
The bug was introduced in
[HIVE-13381|https://issues.apache.org/jira/browse/HIVE-13381]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)