WL#1872: Add support for dates from 2038 till 2116 as values of TIMESTAMP type
Affects: Server-7.0 — Status: Un-Assigned
We need to support dates from year 2038 till year 2116 as values of TIMESTAMP type. Currently we support only dates between 1970 to 2038 as values for TIMESTAMP type, this is mostly because on some systems (e.g. linux) time_t is signed so system time handling functions does not support dates bigger than 2038 (and time_t is internal representation of TIMESTAMP type. Since now thank to Task #1264 "Per thread time zone infrastructure" we mostly use our own functions for TIME to/from time_t conversion we can treat internal value of TIMESTAMP type as unsigned and so handle dates bigger than year 2038. (BTW we can't extend TIMESTAMP range downwards since time_t value 0 has special meaning for us so we can't handle datetime value equivalent to '1970-01-01 00:00:00 UTC') For doing this we need to solve two problems: 1) We should handle situation when user is using system functions for working with TIMESTAMP column (by using special SYSTEM time zone) on system which can't handle datetime values in extended range (e.g. with signed time_t) by using special 0 datetime value or NULL as indication of problem. 2) Since on many systems compiled zoneinfo files doesn't contain information about transitions beyound year 2038 we will have problems with filling time zone description tables for those periods. We should solve it by adopting standard utility (in public domain) - zoneinfo compiler (zic) for directly producing contents of time zone tables with support for dates beyound 2038. BUG#12654 is related to this (handling 64-bit timestamp range).
Copyright (c) 2000, 2019, Oracle Corporation and/or its affiliates. All rights reserved.