[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:
@ -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();
|
||||
|
||||
@ -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(
|
||||
|
||||
Reference in New Issue
Block a user