You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Dhiraj Kumar (JIRA)" <ji...@apache.org> on 2016/11/28 09:16:59 UTC

[jira] [Updated] (HIVE-15291) Comparison of timestamp fails if only date part is provided.

     [ https://issues.apache.org/jira/browse/HIVE-15291?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dhiraj Kumar updated HIVE-15291:
--------------------------------
    Attachment: HIVE-15291.1.patch

This patch fixes the issue trivially. 

> 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
>         Attachments: HIVE-15291.1.patch
>
>
> 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)