[
https://issues.apache.org/jira/browse/HIVE-4525?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13652676#comment-13652676
]
Mikhail Bautin commented on HIVE-4525:
--------------------------------------
h4. Design proposal
We have to be able to read the current {{TimestampWritable}}-serializable
format for backward-compatibility, and write the format recognizable by the
current {{TimestampWritable}} implementation for timestamps within the
currently supported range. We can use the negative range of the {{VInt}} in the
binary representation of the timestamp that normally represents the reversed
decimal part to indicate the presence of an additional {{VInt}} field that
stores the remaining bits of the {{seconds}} number (i.e. {{seconds >> 31}}).
The meaning of the 7th bit of the first byte then changes from "has decimal" to
"has decimal or >31 bits of seconds".
The following table summarizes the four logical cases of timestamp
serialization. The first two are backward-compatible. The second two cases are
unsupported by the current format, so they will not be recognized by the
current version.
|| Seconds need >31 bits || Has decimal || 7th bit of the first byte || First
VInt || Second VInt ||
| No | No | {{0}} | N/A | N/A |
| No | Yes | {{1}} | {{reversedDecimal}} | N/A |
| Yes | No | {{1}} | {{-1}} | {{seconds >> 31}} |
| Yes | Yes | {{1}} | {{-2 - reversedDecimal}} | {{seconds >> 31}} |
> Support timestamps earlier than 1970 and later than 2038
> --------------------------------------------------------
>
> Key: HIVE-4525
> URL: https://issues.apache.org/jira/browse/HIVE-4525
> Project: Hive
> Issue Type: Bug
> Reporter: Mikhail Bautin
> Assignee: Mikhail Bautin
>
> TimestampWritable currently serializes timestamps using the lower 31 bits of
> an int. This does not allow to store timestamps earlier than 1970 or later
> than a certain point in 2038.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira