mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
Fix UBsan report in addDays(INT64_MAX)
https://clickhouse-test-reports.s3.yandex.net/19466/df53438a66ee95de790b60d35f36eca986590027/fuzzer_ubsan/report.html#fail1
This commit is contained in:
parent
df53438a66
commit
cb30a02540
@ -767,7 +767,7 @@ public:
|
||||
/// Adding calendar intervals.
|
||||
/// Implementation specific behaviour when delta is too big.
|
||||
|
||||
inline time_t addDays(time_t t, Int64 delta) const
|
||||
inline NO_SANITIZE_UNDEFINED time_t addDays(time_t t, Int64 delta) const
|
||||
{
|
||||
DayNum index = findIndex(t);
|
||||
time_t time_offset = toHour(t) * 3600 + toMinute(t) * 60 + toSecond(t);
|
||||
|
@ -1,11 +1,22 @@
|
||||
-- { echo }
|
||||
-- tests with INT64_MIN
|
||||
-- tests with INT64_MIN (via overflow)
|
||||
SELECT addMinutes(toDateTime('2021-01-01 00:00:00', 'GMT'), 9223372036854775808);
|
||||
2021-01-01 00:00:00
|
||||
SELECT addHours(toDateTime('2021-01-01 00:00:00', 'GMT'), 9223372036854775808);
|
||||
2021-01-01 00:00:00
|
||||
SELECT addWeeks(toDateTime('2021-01-01 00:00:00', 'GMT'), 9223372036854775808);
|
||||
2021-01-01 00:00:00
|
||||
SELECT addDays(toDateTime('2021-01-01 00:00:00', 'GMT'), 9223372036854775808);
|
||||
2021-01-01 00:00:00
|
||||
-- tests with INT64_MAX
|
||||
SELECT addMinutes(toDateTime('2020-01-01 00:00:00', 'GMT'), 9223372036854775807);
|
||||
2019-12-31 23:59:00
|
||||
SELECT addHours(toDateTime('2020-01-01 00:00:00', 'GMT'), 9223372036854775807);
|
||||
2019-12-31 23:00:00
|
||||
SELECT addWeeks(toDateTime('2020-01-01 00:00:00', 'GMT'), 9223372036854775807);
|
||||
2019-12-25 00:00:00
|
||||
SELECT addDays(toDateTime('2020-01-01 00:00:00', 'GMT'), 9223372036854775807);
|
||||
2019-12-31 00:00:00
|
||||
-- tests with inf
|
||||
SELECT addMinutes(toDateTime('2021-01-01 00:00:00', 'GMT'), inf);
|
||||
2021-01-01 00:00:00
|
||||
@ -13,3 +24,5 @@ SELECT addHours(toDateTime('2021-01-01 00:00:00', 'GMT'), inf);
|
||||
2021-01-01 00:00:00
|
||||
SELECT addWeeks(toDateTime('2021-01-01 00:00:00', 'GMT'), inf);
|
||||
2021-01-01 00:00:00
|
||||
SELECT addDays(toDateTime('2021-01-01 00:00:00', 'GMT'), inf);
|
||||
2021-01-01 00:00:00
|
||||
|
@ -1,9 +1,16 @@
|
||||
-- { echo }
|
||||
-- tests with INT64_MIN
|
||||
-- tests with INT64_MIN (via overflow)
|
||||
SELECT addMinutes(toDateTime('2021-01-01 00:00:00', 'GMT'), 9223372036854775808);
|
||||
SELECT addHours(toDateTime('2021-01-01 00:00:00', 'GMT'), 9223372036854775808);
|
||||
SELECT addWeeks(toDateTime('2021-01-01 00:00:00', 'GMT'), 9223372036854775808);
|
||||
SELECT addDays(toDateTime('2021-01-01 00:00:00', 'GMT'), 9223372036854775808);
|
||||
-- tests with INT64_MAX
|
||||
SELECT addMinutes(toDateTime('2020-01-01 00:00:00', 'GMT'), 9223372036854775807);
|
||||
SELECT addHours(toDateTime('2020-01-01 00:00:00', 'GMT'), 9223372036854775807);
|
||||
SELECT addWeeks(toDateTime('2020-01-01 00:00:00', 'GMT'), 9223372036854775807);
|
||||
SELECT addDays(toDateTime('2020-01-01 00:00:00', 'GMT'), 9223372036854775807);
|
||||
-- tests with inf
|
||||
SELECT addMinutes(toDateTime('2021-01-01 00:00:00', 'GMT'), inf);
|
||||
SELECT addHours(toDateTime('2021-01-01 00:00:00', 'GMT'), inf);
|
||||
SELECT addWeeks(toDateTime('2021-01-01 00:00:00', 'GMT'), inf);
|
||||
SELECT addDays(toDateTime('2021-01-01 00:00:00', 'GMT'), inf);
|
||||
|
Loading…
Reference in New Issue
Block a user