[FEAT MERGE] Support float/double(m, d) in mysql mode

This commit is contained in:
hezuojiao
2022-12-29 12:09:23 +00:00
committed by ob-robot
parent d967637528
commit 26f2754db2
58 changed files with 695 additions and 118 deletions

View File

@ -177,18 +177,23 @@ int ObExprFuncRound::set_res_scale_prec(ObExprTypeCtx &type_ctx, ObExprResType *
}
}
if (OB_SUCC(ret)) {
if (!is_oracle_mode() && ob_is_number_tc(res_type)) {
ObPrecision tmp_res_prec = -1;
if (1 == param_num) {
tmp_res_prec = static_cast<ObPrecision>(params[0].get_precision() -
params[0].get_scale() + 1);
if (!is_oracle_mode()) {
if (ob_is_number_tc(res_type)) {
ObPrecision tmp_res_prec = -1;
if (1 == param_num) {
tmp_res_prec = static_cast<ObPrecision>(params[0].get_precision() -
params[0].get_scale() + 1);
res_prec = tmp_res_prec >= 0 ? tmp_res_prec : res_prec;
res_scale = 0;
} else {
tmp_res_prec = static_cast<ObPrecision>(params[0].get_precision() -
params[0].get_scale() + res_scale + 1);
}
res_prec = tmp_res_prec >= 0 ? tmp_res_prec : res_prec;
res_scale = 0;
} else {
tmp_res_prec = static_cast<ObPrecision>(params[0].get_precision() -
params[0].get_scale() + res_scale + 1);
} else if (ob_is_real_type(res_type)) {
res_prec = (SCALE_UNKNOWN_YET == res_scale) ?
PRECISION_UNKNOWN_YET : ObMySQLUtil::float_length(res_scale);
}
res_prec = tmp_res_prec >= 0 ? tmp_res_prec : res_prec;
}
type.set_scale(res_scale);
type.set_precision(res_prec);