You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2020/08/09 12:47:55 UTC
[incubator-doris] branch master updated: [Bug]Fix be crash caused
by decimal to date (#4282)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
The following commit(s) were added to refs/heads/master by this push:
new bdbe59a [Bug]Fix be crash caused by decimal to date (#4282)
bdbe59a is described below
commit bdbe59a41a4ec45fcdee1cae817b3ce016410035
Author: ZhangYu0123 <67...@users.noreply.github.com>
AuthorDate: Sun Aug 9 20:47:43 2020 +0800
[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
---
be/src/exprs/decimalv2_operators.cpp | 18 ++++++++++++++++++
be/src/exprs/decimalv2_operators.h | 1 +
2 files changed, 19 insertions(+)
diff --git a/be/src/exprs/decimalv2_operators.cpp b/be/src/exprs/decimalv2_operators.cpp
index 0a57321..ef83616 100644
--- a/be/src/exprs/decimalv2_operators.cpp
+++ b/be/src/exprs/decimalv2_operators.cpp
@@ -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();
diff --git a/be/src/exprs/decimalv2_operators.h b/be/src/exprs/decimalv2_operators.h
index 8030985..06d8fee 100644
--- a/be/src/exprs/decimalv2_operators.h
+++ b/be/src/exprs/decimalv2_operators.h
@@ -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(
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org