[fix](storage)(vectorized) query get wrong result when read datetime type column (#8872)

This commit is contained in:
Pxl
2022-04-18 19:34:06 +08:00
committed by GitHub
parent a71e0554be
commit 681f960257
9 changed files with 64 additions and 168 deletions

View File

@ -231,13 +231,16 @@ void convert_col_to_pvalue(const ColumnPtr& column, const DataTypePtr& data_type
PDateTime* date_time = arg->add_datetime_value();
if constexpr (nullable) {
if (!column->is_null_at(row_num)) {
VecDateTimeValue v = VecDateTimeValue(column->get_int(row_num));
VecDateTimeValue v =
binary_cast<vectorized::Int64, vectorized::VecDateTimeValue>(
column->get_int(row_num));
date_time->set_day(v.day());
date_time->set_month(v.month());
date_time->set_year(v.year());
}
} else {
VecDateTimeValue v = VecDateTimeValue(column->get_int(row_num));
VecDateTimeValue v = binary_cast<vectorized::Int64, vectorized::VecDateTimeValue>(
column->get_int(row_num));
date_time->set_day(v.day());
date_time->set_month(v.month());
date_time->set_year(v.year());
@ -252,7 +255,9 @@ void convert_col_to_pvalue(const ColumnPtr& column, const DataTypePtr& data_type
PDateTime* date_time = arg->add_datetime_value();
if constexpr (nullable) {
if (!column->is_null_at(row_num)) {
VecDateTimeValue v = VecDateTimeValue(column->get_int(row_num));
VecDateTimeValue v =
binary_cast<vectorized::Int64, vectorized::VecDateTimeValue>(
column->get_int(row_num));
date_time->set_day(v.day());
date_time->set_month(v.month());
date_time->set_year(v.year());
@ -261,7 +266,8 @@ void convert_col_to_pvalue(const ColumnPtr& column, const DataTypePtr& data_type
date_time->set_second(v.second());
}
} else {
VecDateTimeValue v = VecDateTimeValue(column->get_int(row_num));
VecDateTimeValue v = binary_cast<vectorized::Int64, vectorized::VecDateTimeValue>(
column->get_int(row_num));
date_time->set_day(v.day());
date_time->set_month(v.month());
date_time->set_year(v.year());