Fix for a NAN problem in FORMAT(...) string function ..

parent 5ae3989f
...@@ -10,3 +10,6 @@ inet_aton("255.255.255.255.255") inet_aton("255.255.1.255") inet_aton("0.1.255") ...@@ -10,3 +10,6 @@ inet_aton("255.255.255.255.255") inet_aton("255.255.1.255") inet_aton("0.1.255")
select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511); select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511);
inet_ntoa(1099511627775) inet_ntoa(4294902271) inet_ntoa(511) inet_ntoa(1099511627775) inet_ntoa(4294902271) inet_ntoa(511)
NULL 255.255.1.255 0.0.1.255 NULL 255.255.1.255 0.0.1.255
select format("nan",2);
format("nan",2)
nan
...@@ -7,3 +7,4 @@ select format(1.5555,0),format(123.5555,1),format(1234.5555,2),format(12345.5555 ...@@ -7,3 +7,4 @@ select format(1.5555,0),format(123.5555,1),format(1234.5555,2),format(12345.5555
select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255")); select inet_ntoa(inet_aton("255.255.255.255.255.255.255.255"));
select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255"); select inet_aton("255.255.255.255.255"),inet_aton("255.255.1.255"),inet_aton("0.1.255");
select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511); select inet_ntoa(1099511627775),inet_ntoa(4294902271),inet_ntoa(511);
select format("nan",2);
...@@ -1477,7 +1477,7 @@ String *Item_func_format::val_str(String *str) ...@@ -1477,7 +1477,7 @@ String *Item_func_format::val_str(String *str)
if (nr < 0) if (nr < 0)
str_length--; // Don't count sign str_length--; // Don't count sign
length=str->length()+(diff=(str_length- dec-1)/3); length=str->length()+(diff=(str_length- dec-1)/3);
if (diff) if (diff && diff < 330) // size of buff ...
{ {
char *tmp,*pos; char *tmp,*pos;
str=copy_if_not_alloced(&tmp_str,str,length); str=copy_if_not_alloced(&tmp_str,str,length);
......
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