fix align_date4cmp get_double problem
This commit is contained in:
@ -243,18 +243,10 @@ int ObExprAlignDate4Cmp::integer_to_ob_time(const int64_t& date,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ObExprAlignDate4Cmp::integer_to_ob_time(const ObDatum* date_datum, DateArgType& date_arg_type, ObTime& ob_time) {
|
|
||||||
return integer_to_ob_time(date_datum->get_int(), date_arg_type, ob_time);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ObExprAlignDate4Cmp::double_to_ob_time(const double& date, DateArgType& date_arg_type, ObTime& ob_time) {
|
int ObExprAlignDate4Cmp::double_to_ob_time(const double& date, DateArgType& date_arg_type, ObTime& ob_time) {
|
||||||
return integer_to_ob_time((int64_t)date, date_arg_type, ob_time);
|
return integer_to_ob_time((int64_t)date, date_arg_type, ob_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ObExprAlignDate4Cmp::double_to_ob_time(const ObDatum* date_datum, DateArgType& date_arg_type, ObTime& ob_time) {
|
|
||||||
return double_to_ob_time(date_datum->get_double(), date_arg_type, ob_time);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ObExprAlignDate4Cmp::number_to_ob_time(const number::ObNumber& date, DateArgType& date_arg_type, ObTime& ob_time) {
|
int ObExprAlignDate4Cmp::number_to_ob_time(const number::ObNumber& date, DateArgType& date_arg_type, ObTime& ob_time) {
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
int64_t date_int = 0;
|
int64_t date_int = 0;
|
||||||
@ -266,10 +258,6 @@ int ObExprAlignDate4Cmp::number_to_ob_time(const number::ObNumber& date, DateArg
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ObExprAlignDate4Cmp::number_to_ob_time(const ObDatum* date_datum, DateArgType& date_arg_type, ObTime& ob_time) {
|
|
||||||
return number_to_ob_time(date_datum->get_number(), date_arg_type, ob_time);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ObExprAlignDate4Cmp::str_to_ob_time(const ObString& date, DateArgType& date_arg_type, ObTime& ob_time) {
|
int ObExprAlignDate4Cmp::str_to_ob_time(const ObString& date, DateArgType& date_arg_type, ObTime& ob_time) {
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
ObDateSqlMode date_sql_mode;
|
ObDateSqlMode date_sql_mode;
|
||||||
@ -291,17 +279,13 @@ int ObExprAlignDate4Cmp::str_to_ob_time(const ObString& date, DateArgType& date_
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ObExprAlignDate4Cmp::str_to_ob_time(const ObDatum* date_datum, DateArgType& date_arg_type, ObTime& ob_time) {
|
|
||||||
return str_to_ob_time(date_datum->get_string(), date_arg_type, ob_time);
|
|
||||||
}
|
|
||||||
|
|
||||||
int ObExprAlignDate4Cmp::datum_to_ob_time(const ObDatum* date_datum, const ObObjType& date_arg_obj_type, DateArgType& date_arg_type, ObTime& ob_time)
|
int ObExprAlignDate4Cmp::datum_to_ob_time(const ObDatum* date_datum, const ObObjType& date_arg_obj_type, DateArgType& date_arg_type, ObTime& ob_time)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
if (date_datum->is_null()) {
|
if (date_datum->is_null()) {
|
||||||
date_arg_type = NULL_DATE;
|
date_arg_type = NULL_DATE;
|
||||||
} else if (ob_is_string_type(date_arg_obj_type)) {
|
} else if (ob_is_string_type(date_arg_obj_type)) {
|
||||||
if (OB_FAIL(str_to_ob_time(date_datum, date_arg_type, ob_time))) {
|
if (OB_FAIL(str_to_ob_time(date_datum->get_string(), date_arg_type, ob_time))) {
|
||||||
LOG_WARN("str_to_ob_time fail.", K(ret), K(date_datum));
|
LOG_WARN("str_to_ob_time fail.", K(ret), K(date_datum));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -314,29 +298,41 @@ int ObExprAlignDate4Cmp::datum_to_ob_time(const ObDatum* date_datum, const ObObj
|
|||||||
case ObSmallIntType:
|
case ObSmallIntType:
|
||||||
case ObMediumIntType:
|
case ObMediumIntType:
|
||||||
case ObInt32Type:
|
case ObInt32Type:
|
||||||
case ObIntType:
|
case ObIntType: {
|
||||||
|
if (OB_FAIL(integer_to_ob_time(static_cast<int64_t>(date_datum->get_uint()),
|
||||||
|
date_arg_type, ob_time))) {
|
||||||
|
LOG_WARN("integer_to_ob_time fail.", K(ret), K(date_datum));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case ObUTinyIntType:
|
case ObUTinyIntType:
|
||||||
case ObUSmallIntType:
|
case ObUSmallIntType:
|
||||||
case ObUMediumIntType:
|
case ObUMediumIntType:
|
||||||
case ObUInt32Type:
|
case ObUInt32Type:
|
||||||
case ObUInt64Type: {
|
case ObUInt64Type: {
|
||||||
if (OB_FAIL(integer_to_ob_time(date_datum, date_arg_type, ob_time))) {
|
if (OB_FAIL(integer_to_ob_time(date_datum->get_int(), date_arg_type, ob_time))) {
|
||||||
LOG_WARN("integer_to_ob_time fail.", K(ret), K(date_datum));
|
LOG_WARN("integer_to_ob_time fail.", K(ret), K(date_datum));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ObFloatType:
|
case ObFloatType:
|
||||||
|
case ObUFloatType: {
|
||||||
|
if (OB_FAIL(double_to_ob_time(static_cast<double>(date_datum->get_float()),
|
||||||
|
date_arg_type, ob_time))) {
|
||||||
|
LOG_WARN("integer_to_ob_time fail.", K(ret), K(date_datum));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case ObDoubleType:
|
case ObDoubleType:
|
||||||
case ObUFloatType:
|
|
||||||
case ObUDoubleType: {
|
case ObUDoubleType: {
|
||||||
if (OB_FAIL(double_to_ob_time(date_datum, date_arg_type, ob_time))) {
|
if (OB_FAIL(double_to_ob_time(date_datum->get_double(), date_arg_type, ob_time))) {
|
||||||
LOG_WARN("double_to_ob_time fail.", K(ret), K(date_datum));
|
LOG_WARN("double_to_ob_time fail.", K(ret), K(date_datum));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ObNumberType:
|
case ObNumberType:
|
||||||
case ObUNumberType: {
|
case ObUNumberType: {
|
||||||
if (OB_FAIL(number_to_ob_time(date_datum, date_arg_type, ob_time))) {
|
if (OB_FAIL(number_to_ob_time(date_datum->get_number(), date_arg_type, ob_time))) {
|
||||||
LOG_WARN("number_to_ob_time fail.", K(ret), K(date_datum));
|
LOG_WARN("number_to_ob_time fail.", K(ret), K(date_datum));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -61,13 +61,9 @@ private:
|
|||||||
static bool day_over_limit(const ObTime &ob_time);
|
static bool day_over_limit(const ObTime &ob_time);
|
||||||
static void set_valid_time_floor(ObTime &ob_time);
|
static void set_valid_time_floor(ObTime &ob_time);
|
||||||
static int integer_to_ob_time(const int64_t &date, DateArgType &date_arg_type, ObTime &ob_time);
|
static int integer_to_ob_time(const int64_t &date, DateArgType &date_arg_type, ObTime &ob_time);
|
||||||
static int integer_to_ob_time(const ObDatum *date_datum, DateArgType &date_arg_type, ObTime &ob_time);
|
|
||||||
static int double_to_ob_time(const double &date, DateArgType &date_arg_type, ObTime &ob_time);
|
static int double_to_ob_time(const double &date, DateArgType &date_arg_type, ObTime &ob_time);
|
||||||
static int double_to_ob_time(const ObDatum *date_datum, DateArgType &date_arg_type, ObTime &ob_time);
|
|
||||||
static int number_to_ob_time(const number::ObNumber &date, DateArgType &date_arg_type, ObTime &ob_time);
|
static int number_to_ob_time(const number::ObNumber &date, DateArgType &date_arg_type, ObTime &ob_time);
|
||||||
static int number_to_ob_time(const ObDatum *date_datum, DateArgType &date_arg_type, ObTime &ob_time);
|
|
||||||
static int str_to_ob_time(const ObString &date, DateArgType &date_arg_type, ObTime &ob_time);
|
static int str_to_ob_time(const ObString &date, DateArgType &date_arg_type, ObTime &ob_time);
|
||||||
static int str_to_ob_time(const ObDatum *date_datum, DateArgType &date_arg_type, ObTime &ob_time);
|
|
||||||
static int datum_to_ob_time(const ObDatum *date_datum,
|
static int datum_to_ob_time(const ObDatum *date_datum,
|
||||||
const ObObjType &date_arg_obj_type,
|
const ObObjType &date_arg_obj_type,
|
||||||
DateArgType &date_arg_type,
|
DateArgType &date_arg_type,
|
||||||
|
|||||||
Reference in New Issue
Block a user