[Opt](exec)(multi-catalog) Opt date type reading. (#29571)

This commit is contained in:
Qi Chen
2024-01-09 23:29:38 +08:00
committed by yiguolei
parent fe5b0e9880
commit 7287c0ca15
5 changed files with 55 additions and 50 deletions

View File

@ -2668,17 +2668,14 @@ char* DateV2Value<T>::to_string(char* to, int scale) const {
return to + len + 1;
}
template <typename T>
typename DateV2Value<T>::underlying_value DateV2Value<T>::to_date_int_val() const {
return int_val_;
}
// [1900-01-01, 2039-12-31]
static std::array<DateV2Value<DateV2ValueType>, date_day_offset_dict::DICT_DAYS>
DATE_DAY_OFFSET_ITEMS;
// [1900-01-01, 2039-12-31]
static std::array<std::array<std::array<int, 31>, 12>, 140> DATE_DAY_OFFSET_DICT;
std::array<DateV2Value<DateV2ValueType>, date_day_offset_dict::DICT_DAYS>
date_day_offset_dict::DATE_DAY_OFFSET_ITEMS;
static bool DATE_DAY_OFFSET_ITEMS_INIT = false;
// [1900-01-01, 2039-12-31]
std::array<std::array<std::array<int, 31>, 12>, 140> date_day_offset_dict::DATE_DAY_OFFSET_DICT;
bool date_day_offset_dict::DATE_DAY_OFFSET_ITEMS_INIT = false;
date_day_offset_dict date_day_offset_dict::instance = date_day_offset_dict();
@ -2718,16 +2715,6 @@ date_day_offset_dict::date_day_offset_dict() {
DATE_DAY_OFFSET_ITEMS_INIT = true;
}
DateV2Value<DateV2ValueType> date_day_offset_dict::operator[](int day) const {
int index = day + DAY_BEFORE_EPOCH;
if (LIKELY(index >= 0 && index < DICT_DAYS)) {
return DATE_DAY_OFFSET_ITEMS[index];
} else {
DateV2Value<DateV2ValueType> d = DATE_DAY_OFFSET_ITEMS[0];
return d += index;
}
}
int date_day_offset_dict::daynr(int year, int month, int day) const {
return DATE_DAY_OFFSET_DICT[year - START_YEAR][month - 1][day - 1];
}