mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-17 21:24:28 +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.
28 lines
1.2 KiB
CMake
28 lines
1.2 KiB
CMake
include (${ClickHouse_SOURCE_DIR}/cmake/add_check.cmake)
|
|
|
|
add_executable (date_lut2 date_lut2.cpp)
|
|
add_executable (date_lut3 date_lut3.cpp)
|
|
add_executable (date_lut_default_timezone date_lut_default_timezone.cpp)
|
|
add_executable (local_date_time_comparison local_date_time_comparison.cpp)
|
|
add_executable (realloc-perf allocator.cpp)
|
|
|
|
set(PLATFORM_LIBS ${CMAKE_DL_LIBS})
|
|
|
|
target_link_libraries (date_lut2 PRIVATE common ${PLATFORM_LIBS})
|
|
target_link_libraries (date_lut3 PRIVATE common ${PLATFORM_LIBS})
|
|
target_link_libraries (date_lut_default_timezone PRIVATE common ${PLATFORM_LIBS})
|
|
target_link_libraries (local_date_time_comparison PRIVATE common)
|
|
target_link_libraries (realloc-perf PRIVATE common)
|
|
add_check(local_date_time_comparison)
|
|
|
|
if(USE_GTEST)
|
|
add_executable(unit_tests_libcommon gtest_json_test.cpp gtest_strong_typedef.cpp gtest_find_symbols.cpp gtest_DateLutImpl.cpp
|
|
${CMAKE_BINARY_DIR}/src/Storages/System/StorageSystemTimeZones.generated.cpp
|
|
)
|
|
target_link_libraries(unit_tests_libcommon PRIVATE common ${GTEST_MAIN_LIBRARIES} ${GTEST_LIBRARIES})
|
|
add_check(unit_tests_libcommon)
|
|
endif()
|
|
|
|
add_executable (dump_variable dump_variable.cpp)
|
|
target_link_libraries (dump_variable PRIVATE clickhouse_common_io)
|