mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
2d03d330bc
The Year 1925 is a starting point because most of the timezones switched to saner (mostly 15-minutes based) offsets somewhere during 1924 or before. And that significantly simplifies implementation. 2238 is to simplify arithmetics for sanitizing LUT index access; there are less than 0x1ffff days from 1925. * Extended DateLUTImpl internal LUT to 0x1ffff items, some of which represent negative (pre-1970) time values. As a collateral benefit, Date now correctly supports dates up to 2149 (instead of 2106). * Added a new strong typedef ExtendedDayNum, which represents dates pre-1970 and post 2149. * Functions that used to return DayNum now return ExtendedDayNum. * Refactored DateLUTImpl to untie DayNum from the dual role of being a value and an index (due to negative time). Index is now a different type LUTIndex with explicit conversion functions from DatNum, time_t, and ExtendedDayNum. * Updated DateLUTImpl to properly support values close to epoch start (1970-01-01 00:00), including negative ones. * Reduced resolution of DateLUTImpl::Values::time_at_offset_change to multiple of 15-minutes to allow storing 64-bits of time_t in DateLUTImpl::Value while keeping same size. * Minor performance updates to DateLUTImpl when building month LUT by skipping non-start-of-month days. * Fixed extractTimeZoneFromFunctionArguments to work correctly with DateTime64. * New unit-tests and stateless integration tests for both DateTime and DateTime64. |
||
---|---|---|
.. | ||
tests | ||
argsToConfig.cpp | ||
argsToConfig.h | ||
arithmeticOverflow.h | ||
CMakeLists.txt | ||
constexpr_helpers.h | ||
coverage.cpp | ||
coverage.h | ||
DateLUT.cpp | ||
DateLUT.h | ||
DateLUTImpl.cpp | ||
DateLUTImpl.h | ||
DayNum.h | ||
defines.h | ||
demangle.cpp | ||
demangle.h | ||
errnoToString.cpp | ||
errnoToString.h | ||
ErrorHandlers.h | ||
extended_types.h | ||
find_symbols.h | ||
getFQDNOrHostName.cpp | ||
getFQDNOrHostName.h | ||
getMemoryAmount.cpp | ||
getMemoryAmount.h | ||
getPageSize.cpp | ||
getPageSize.h | ||
getResource.cpp | ||
getResource.h | ||
getThreadId.cpp | ||
getThreadId.h | ||
iostream_debug_helpers.h | ||
itoa.h | ||
JSON.cpp | ||
JSON.h | ||
LineReader.cpp | ||
LineReader.h | ||
LocalDate.h | ||
LocalDateTime.h | ||
logger_useful.h | ||
memory.h | ||
mremap.cpp | ||
mremap.h | ||
phdr_cache.cpp | ||
phdr_cache.h | ||
preciseExp10.cpp | ||
preciseExp10.h | ||
ReadlineLineReader.cpp | ||
ReadlineLineReader.h | ||
ReplxxLineReader.cpp | ||
ReplxxLineReader.h | ||
setTerminalEcho.cpp | ||
setTerminalEcho.h | ||
shift10.cpp | ||
shift10.h | ||
SimpleCache.h | ||
sleep.cpp | ||
sleep.h | ||
sort.h | ||
StringRef.cpp | ||
StringRef.h | ||
strong_typedef.h | ||
terminalColors.cpp | ||
terminalColors.h | ||
throwError.h | ||
time.h | ||
types.h | ||
unaligned.h | ||
wide_integer_impl.h | ||
wide_integer_to_string.h | ||
wide_integer.h | ||
ya.make | ||
ya.make.in |