Commit 6a7c10de authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-26691 SFORMAT: Pass down FLOAT as FLOAT, without upcast to DOUBLE

parent 284ed643
...@@ -449,3 +449,9 @@ sformat("={:d}=", ?) ...@@ -449,3 +449,9 @@ sformat("={:d}=", ?)
NULL NULL
Warnings: Warnings:
Warning 4183 SFORMAT error: invalid type specifier Warning 4183 SFORMAT error: invalid type specifier
#
# MDEV-26691 SFORMAT: Pass down FLOAT as FLOAT, without upcast to DOUBLE
#
select sformat('{}', cast(1.1 as float));
sformat('{}', cast(1.1 as float))
1.1
...@@ -207,3 +207,9 @@ echo #; ...@@ -207,3 +207,9 @@ echo #;
prepare s from 'select sformat("={:d}=", ?)'; prepare s from 'select sformat("={:d}=", ?)';
execute s using 100; execute s using 100;
execute s using 'abc'; execute s using 'abc';
echo #;
echo # MDEV-26691 SFORMAT: Pass down FLOAT as FLOAT, without upcast to DOUBLE;
echo #;
select sformat('{}', cast(1.1 as float));
...@@ -1393,6 +1393,9 @@ String *Item_func_sformat::val_str(String *res) ...@@ -1393,6 +1393,9 @@ String *Item_func_sformat::val_str(String *res)
break; break;
case DECIMAL_RESULT: // TODO case DECIMAL_RESULT: // TODO
case REAL_RESULT: case REAL_RESULT:
if (args[carg]->field_type() == MYSQL_TYPE_FLOAT)
vargs[carg-1]= fmt::detail::make_arg<ctx>((float)args[carg]->val_real());
else
vargs[carg-1]= fmt::detail::make_arg<ctx>(args[carg]->val_real()); vargs[carg-1]= fmt::detail::make_arg<ctx>(args[carg]->val_real());
break; break;
case STRING_RESULT: case STRING_RESULT:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment