[Bug]Fix be crash caused by decimal to date (#4282)

Fix be crash caused by cast decimal to date. A be crashed bug caused by Unable to find. _ZN5doris18DecimalV2Operators16cast_to_date_val.
also see #4281
This commit is contained in:
ZhangYu0123
2020-08-09 20:47:43 +08:00
committed by GitHub
parent 4beed51366
commit bdbe59a41a
2 changed files with 19 additions and 0 deletions

View File

@ -147,6 +147,24 @@ DateTimeVal DecimalV2Operators::cast_to_datetime_val(
return result;
}
DateTimeVal DecimalV2Operators::cast_to_date_val(
FunctionContext* context, const DecimalV2Val& val) {
if (val.is_null) {
return DateTimeVal::null();
}
// convert from DecimalV2Val to DecimalV2Value for caculation
const DecimalV2Value& dv = DecimalV2Value::from_decimal_val(val);
DateTimeValue dt;
if (!dt.from_date_int64(dv)) {
return DateTimeVal::null();
}
dt.cast_to_date();
DateTimeVal result;
dt.to_datetime_val(&result);
return result;
}
DecimalVal DecimalV2Operators::cast_to_decimal_val(
FunctionContext* context, const DecimalV2Val& val) {
if (val.is_null) return DecimalVal::null();

View File

@ -54,6 +54,7 @@ public:
static DoubleVal cast_to_double_val(FunctionContext*, const DecimalV2Val&);
static StringVal cast_to_string_val(FunctionContext*, const DecimalV2Val&);
static DateTimeVal cast_to_datetime_val(FunctionContext*, const DecimalV2Val&);
static DateTimeVal cast_to_date_val(FunctionContext*, const DecimalV2Val&);
static DecimalVal cast_to_decimal_val(FunctionContext*, const DecimalV2Val&);
static DecimalV2Val add_decimalv2_val_decimalv2_val(