static int float_bool(const ObObjCastParams ¶ms, 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; }
static int float_pdatetime(const ObObjCastParams ¶ms, 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; }
static int float_decimal(const ObObjCastParams ¶ms, 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; }
static int float_varchar(const ObObjCastParams ¶ms, const ObExprObj &in, ObExprObj &out) { UNUSED(params); OB_ASSERT(in.get_type() == ObFloatType); return varchar_printf(out, "%f", in.get_float()); }