mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge jwinstead2@wwwtst1.mysql.com:mysql-4.1-7774
into mysql.com:/home/jimw/my/mysql-4.1-clean sql/field.cc: Auto merged
This commit is contained in:
@ -179,3 +179,18 @@ f
|
|||||||
9.999
|
9.999
|
||||||
9.999
|
9.999
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
create table t1 (c char(20));
|
||||||
|
insert into t1 values (5e-28);
|
||||||
|
select * from t1;
|
||||||
|
c
|
||||||
|
5e-28
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (c char(6));
|
||||||
|
insert into t1 values (2e5),(2e6),(2e-4),(2e-5);
|
||||||
|
select * from t1;
|
||||||
|
c
|
||||||
|
200000
|
||||||
|
2e+06
|
||||||
|
0.0002
|
||||||
|
2e-05
|
||||||
|
drop table t1;
|
||||||
|
@ -179,3 +179,18 @@ f
|
|||||||
9.999
|
9.999
|
||||||
9.999
|
9.999
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
create table t1 (c char(20));
|
||||||
|
insert into t1 values (5e-28);
|
||||||
|
select * from t1;
|
||||||
|
c
|
||||||
|
5e-28
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (c char(6));
|
||||||
|
insert into t1 values (2e5),(2e6),(2e-4),(2e-5);
|
||||||
|
select * from t1;
|
||||||
|
c
|
||||||
|
200000
|
||||||
|
2e+06
|
||||||
|
0.0002
|
||||||
|
2e-05
|
||||||
|
drop table t1;
|
||||||
|
@ -103,3 +103,13 @@ create table t1 (f double(4,3));
|
|||||||
insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11");
|
insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11");
|
||||||
select * from t1;
|
select * from t1;
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
|
||||||
|
# Check conversion of floats to character field (Bug #7774)
|
||||||
|
create table t1 (c char(20));
|
||||||
|
insert into t1 values (5e-28);
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (c char(6));
|
||||||
|
insert into t1 values (2e5),(2e6),(2e-4),(2e-5);
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
13
sql/field.cc
13
sql/field.cc
@ -4301,13 +4301,20 @@ int Field_str::store(double nr)
|
|||||||
char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE];
|
char buff[DOUBLE_TO_STRING_CONVERSION_BUFFER_SIZE];
|
||||||
uint length;
|
uint length;
|
||||||
bool use_scientific_notation= TRUE;
|
bool use_scientific_notation= TRUE;
|
||||||
use_scientific_notation= TRUE;
|
/*
|
||||||
if (field_length < 32 && fabs(nr) < log_10[field_length]-1)
|
Check fabs(nr) against longest value that can be stored in field,
|
||||||
|
which depends on whether the value is < 1 or not, and negative or not
|
||||||
|
*/
|
||||||
|
double anr= fabs(nr);
|
||||||
|
int neg= (nr < 0.0) ? 1 : 0;
|
||||||
|
if (field_length > 4 && field_length < 32 &&
|
||||||
|
(anr < 1.0 ? anr > 1/(log_10[max(0,field_length-neg-2)]) /* -2 for "0." */
|
||||||
|
: anr < log_10[field_length-neg]-1))
|
||||||
use_scientific_notation= FALSE;
|
use_scientific_notation= FALSE;
|
||||||
|
|
||||||
length= (uint) my_sprintf(buff, (buff, "%-.*g",
|
length= (uint) my_sprintf(buff, (buff, "%-.*g",
|
||||||
(use_scientific_notation ?
|
(use_scientific_notation ?
|
||||||
max(0, (int)field_length-5) :
|
max(0, (int)field_length-neg-5) :
|
||||||
field_length),
|
field_length),
|
||||||
nr));
|
nr));
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user