Skip to content

Commit 7cb0a69

Browse files
Merge pull request ClickHouse#5 from clrusby/dates_2038
Fix for 2038 date bug
2 parents 3b80560 + db831a6 commit 7cb0a69

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

clickhouse/columns/date.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ ColumnDate::ColumnDate()
99
}
1010

1111
void ColumnDate::Append(const std::time_t& value) {
12-
data_->Append(static_cast<uint16_t>(value / 86400));
12+
data_->Append(static_cast<uint16_t>(value / std::time_t(86400)));
1313
}
1414

1515
void ColumnDate::Clear() {
1616
data_->Clear();
1717
}
1818

1919
std::time_t ColumnDate::At(size_t n) const {
20-
return data_->At(n) * 86400;
20+
return data_->At(n) * std::time_t(86400);
2121
}
2222

2323
void ColumnDate::Append(ColumnRef column) {

ut/columns_ut.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,15 @@ TEST(ColumnsCase, DateAppend) {
112112
ASSERT_EQ(col2->At(0), (now / 86400) * 86400);
113113
}
114114

115+
TEST(ColumnsCase, Date2038) {
116+
auto col1 = std::make_shared<ColumnDate>();
117+
std::time_t largeDate(25882ul * 86400ul);
118+
col1->Append(largeDate);
119+
120+
ASSERT_EQ(col1->Size(), 1u);
121+
ASSERT_EQ(static_cast<std::uint64_t>(col1->At(0)), 25882ul * 86400ul);
122+
}
123+
115124
TEST(ColumnsCase, EnumTest) {
116125
std::vector<Type::EnumItem> enum_items = {{"Hi", 1}, {"Hello", 2}};
117126

0 commit comments

Comments
 (0)