mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 01:25:21 +00:00
Attempt to fix #3220
This commit is contained in:
parent
43d922cc37
commit
8b7a71d6c6
@ -250,8 +250,7 @@ public:
|
||||
|
||||
time_t res = t - lut[index].date;
|
||||
|
||||
/// NOTE We doesn't support cases when time change result in switching to previous day.
|
||||
/// Data is cleaned to avoid these cases, so no underflow occurs here.
|
||||
/// Data is cleaned to avoid possibility of underflow.
|
||||
if (res >= lut[index].time_at_offset_change)
|
||||
res += lut[index].amount_of_offset_change;
|
||||
|
||||
|
@ -114,15 +114,7 @@ DateLUTImpl::DateLUTImpl(const std::string & time_zone_)
|
||||
|
||||
lut[i - 1].time_at_offset_change = time_at_offset_change;
|
||||
|
||||
/* std::cerr << lut[i - 1].year << "-" << int(lut[i - 1].month) << "-" << int(lut[i - 1].day_of_month)
|
||||
<< " offset was changed at " << lut[i - 1].time_at_offset_change << " for " << lut[i - 1].amount_of_offset_change << " seconds.\n";*/
|
||||
|
||||
/** We doesn't support cases when time change results in switching to previous day.
|
||||
* As an example, it was a case in Moscow at years 1981..1983 on October 1:
|
||||
* clock was adjusted one hour backwards exactly at midnight (that was lead to extra hour 23 of Sep 30th).
|
||||
* We must clean data (and we will make it slightly incorrect) to avoid these cases.
|
||||
* (In previous example, it will lead to extra hour 0 of Sep 30 instead.)
|
||||
*/
|
||||
/// We doesn't support cases when time change results in switching to previous day.
|
||||
if (static_cast<int>(lut[i - 1].time_at_offset_change) + static_cast<int>(lut[i - 1].amount_of_offset_change) < 0)
|
||||
lut[i - 1].time_at_offset_change = -lut[i - 1].amount_of_offset_change;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user