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

Kiran Velumuri updated HIVE-28337:
----------------------------------
    Description: 
Currently in MetaStoreUtils, the conversion to/from timestamp and string makes 
use of LocalDateTime in the local time zone while processing timestamps. This 
causes issue with representing timestamps *as mentioned below*. Instead, while 
dealing with timestamps it is proposed to use java.time.Instant to represent a 
point on the time-line, which would overcome the issue with representing such 
timestamps. Accordingly the test class for MetaStoreUtils (TestMetaStoreUtils) 
has also been modified to account for these changes.



+Failing scenario:+
Timestamps in time-zones which observe daylight savings during which the clock 
is set forward(typicallly 2:00 AM - 3:00 AM)

Example: 2417-03-26T02:08:43 in Europe/Paris is invalid, and would get 
converted to 2417-03-26T03:08:43 by Timestamp.valueOf() method, when instead we 
want to represent the original timestamp without conversion.

This is happening due to representing timestamp as LocalDateTime in 
TestMetaStoreUtils, which is independent of the time-zone of the timestamp. 
This LocalDateTime timestamp when combined with time-zone is leading to invalid 
timestamp.

  was:
The test 
org.apache.hadoop.hive.metastore.utils.TestMetaStoreUtils#testTimestampToString 
and #testDateToString fails for invalid timestamps in the following cases:

1. Timestamps in time-zones which observe daylight savings during which the 
clock is set forward(typicallly 2:00 AM - 3:00 AM)

Example: 2417-03-26T02:08:43 in Europe/Paris is invalid, and would get 
converted to 2417-03-26T03:08:43 by Timestamp.valueOf() method

This is happening due to representing timestamp as LocalDateTime in 
TestMetaStoreUtils, which is independent of the time-zone of the timestamp. 
This LocalDateTime timestamp when combined with time-zone is leading to invalid 
timestamp.

 

2. Timestamps with year as '0000'

Example: 0000-01-07T22:44:36 is invalid and would get converted to 
0001-01-07T22:44:36 by Timestamp.valueof() method

Year '0000' is invalid and should not be included while generating the test 
cases.


> TestMetaStoreUtils fails for invalid timestamps
> -----------------------------------------------
>
>                 Key: HIVE-28337
>                 URL: https://issues.apache.org/jira/browse/HIVE-28337
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Kiran Velumuri
>            Assignee: Kiran Velumuri
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: image-2024-06-18-12-42-05-646.png, 
> image-2024-06-18-12-42-31-472.png
>
>
> Currently in MetaStoreUtils, the conversion to/from timestamp and string 
> makes use of LocalDateTime in the local time zone while processing 
> timestamps. This causes issue with representing timestamps *as mentioned 
> below*. Instead, while dealing with timestamps it is proposed to use 
> java.time.Instant to represent a point on the time-line, which would overcome 
> the issue with representing such timestamps. Accordingly the test class for 
> MetaStoreUtils (TestMetaStoreUtils) has also been modified to account for 
> these changes.
> +Failing scenario:+
> Timestamps in time-zones which observe daylight savings during which the 
> clock is set forward(typicallly 2:00 AM - 3:00 AM)
> Example: 2417-03-26T02:08:43 in Europe/Paris is invalid, and would get 
> converted to 2417-03-26T03:08:43 by Timestamp.valueOf() method, when instead 
> we want to represent the original timestamp without conversion.
> This is happening due to representing timestamp as LocalDateTime in 
> TestMetaStoreUtils, which is independent of the time-zone of the timestamp. 
> This LocalDateTime timestamp when combined with time-zone is leading to 
> invalid timestamp.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to