示例#1
0
 static int float_bool(const ObObjCastParams &params, const ObExprObj &in, ObExprObj &out)
 {
     UNUSED(params);
     OB_ASSERT(in.get_type() == ObFloatType);
     out.set_bool(static_cast<bool> (in.get_float()));
     return OB_SUCCESS;
 }
示例#2
0
 static int float_pdatetime(const ObObjCastParams &params, const ObExprObj &in, ObExprObj &out)
 {
     UNUSED(params);
     OB_ASSERT(in.get_type() == ObFloatType);
     out.set_precise_datetime(static_cast<ObPreciseDateTime> (in.get_float()));
     return OB_SUCCESS;
 }
示例#3
0
 static int float_decimal(const ObObjCastParams &params, const ObExprObj &in, ObExprObj &out)
 {
     int ret = OB_SUCCESS;
     UNUSED(params);
     OB_ASSERT(in.get_type() == ObFloatType);
     static const int64_t MAX_FLOAT_PRINT_SIZE = 64;
     char buf[MAX_FLOAT_PRINT_SIZE];
     snprintf(buf, MAX_FLOAT_PRINT_SIZE, "%f", in.get_float());
     ObNumber num;
     if (OB_SUCCESS != (ret = num.from(buf)))
     {
         jlog(WARNING, "failed to convert float to decimal, err=%d", ret);
     }
     else
     {
         out.set_decimal(num);
     }
     return ret;
 }
示例#4
0
 static int float_varchar(const ObObjCastParams &params, const ObExprObj &in, ObExprObj &out)
 {
     UNUSED(params);
     OB_ASSERT(in.get_type() == ObFloatType);
     return varchar_printf(out, "%f", in.get_float());
 }