Loading mysql-test/r/type_float.result +36 −0 Original line number Diff line number Diff line Loading @@ -143,3 +143,39 @@ drop table t1; create table t1 (f float(54)); ERROR 42000: Incorrect column specifier for column 'f' drop table if exists t1; create table t1 (f float(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); Warnings: Warning 1264 Data truncated; out of range for column 'f' at row 1 Warning 1264 Data truncated; out of range for column 'f' at row 2 Warning 1264 Data truncated; out of range for column 'f' at row 3 Warning 1264 Data truncated; out of range for column 'f' at row 4 Warning 1264 Data truncated; out of range for column 'f' at row 5 Warning 1264 Data truncated; out of range for column 'f' at row 6 select * from t1; f -9.999 -9.999 -9.999 9.999 9.999 9.999 drop table if exists t1; create table t1 (f double(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); Warnings: Warning 1264 Data truncated; out of range for column 'f' at row 1 Warning 1264 Data truncated; out of range for column 'f' at row 2 Warning 1264 Data truncated; out of range for column 'f' at row 3 Warning 1264 Data truncated; out of range for column 'f' at row 4 Warning 1264 Data truncated; out of range for column 'f' at row 5 Warning 1264 Data truncated; out of range for column 'f' at row 6 select * from t1; f -9.999 -9.999 -9.999 9.999 9.999 9.999 drop table if exists t1; mysql-test/r/type_float.result.es +36 −0 Original line number Diff line number Diff line Loading @@ -143,3 +143,39 @@ drop table t1; create table t1 (f float(54)); ERROR 42000: Incorrect column specifier for column 'f' drop table if exists t1; create table t1 (f float(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); Warnings: Warning 1264 Data truncated; out of range for column 'f' at row 1 Warning 1264 Data truncated; out of range for column 'f' at row 2 Warning 1264 Data truncated; out of range for column 'f' at row 3 Warning 1264 Data truncated; out of range for column 'f' at row 4 Warning 1264 Data truncated; out of range for column 'f' at row 5 Warning 1264 Data truncated; out of range for column 'f' at row 6 select * from t1; f -9.999 -9.999 -9.999 9.999 9.999 9.999 drop table if exists t1; create table t1 (f double(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); Warnings: Warning 1264 Data truncated; out of range for column 'f' at row 1 Warning 1264 Data truncated; out of range for column 'f' at row 2 Warning 1264 Data truncated; out of range for column 'f' at row 3 Warning 1264 Data truncated; out of range for column 'f' at row 4 Warning 1264 Data truncated; out of range for column 'f' at row 5 Warning 1264 Data truncated; out of range for column 'f' at row 6 select * from t1; f -9.999 -9.999 -9.999 9.999 9.999 9.999 drop table if exists t1; mysql-test/t/type_float.test +10 −0 Original line number Diff line number Diff line Loading @@ -93,3 +93,13 @@ create table t1 (f float(54)); # Should give an error drop table if exists t1; --enable_warnings # Ensure that maximum values as the result of number of decimals # being specified in table schema are enforced (Bug #7361) create table t1 (f float(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); select * from t1; drop table if exists t1; create table t1 (f double(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); select * from t1; drop table if exists t1; sql/field.cc +2 −34 Original line number Diff line number Diff line Loading @@ -2440,23 +2440,7 @@ int Field_float::store(double nr) int Field_float::store(longlong nr) { int error= 0; float j= (float) nr; if (unsigned_flag && j < 0) { set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); j=0; error= 1; } #ifdef WORDS_BIGENDIAN if (table->db_low_byte_first) { float4store(ptr,j); } else #endif memcpy_fixed(ptr,(byte*) &j,sizeof(j)); return error; return store((double)nr); } Loading Loading @@ -2738,23 +2722,7 @@ int Field_double::store(double nr) int Field_double::store(longlong nr) { double j= (double) nr; int error= 0; if (unsigned_flag && j < 0) { set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); error= 1; j=0; } #ifdef WORDS_BIGENDIAN if (table->db_low_byte_first) { float8store(ptr,j); } else #endif doublestore(ptr,j); return error; return store((double)nr); } Loading Loading
mysql-test/r/type_float.result +36 −0 Original line number Diff line number Diff line Loading @@ -143,3 +143,39 @@ drop table t1; create table t1 (f float(54)); ERROR 42000: Incorrect column specifier for column 'f' drop table if exists t1; create table t1 (f float(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); Warnings: Warning 1264 Data truncated; out of range for column 'f' at row 1 Warning 1264 Data truncated; out of range for column 'f' at row 2 Warning 1264 Data truncated; out of range for column 'f' at row 3 Warning 1264 Data truncated; out of range for column 'f' at row 4 Warning 1264 Data truncated; out of range for column 'f' at row 5 Warning 1264 Data truncated; out of range for column 'f' at row 6 select * from t1; f -9.999 -9.999 -9.999 9.999 9.999 9.999 drop table if exists t1; create table t1 (f double(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); Warnings: Warning 1264 Data truncated; out of range for column 'f' at row 1 Warning 1264 Data truncated; out of range for column 'f' at row 2 Warning 1264 Data truncated; out of range for column 'f' at row 3 Warning 1264 Data truncated; out of range for column 'f' at row 4 Warning 1264 Data truncated; out of range for column 'f' at row 5 Warning 1264 Data truncated; out of range for column 'f' at row 6 select * from t1; f -9.999 -9.999 -9.999 9.999 9.999 9.999 drop table if exists t1;
mysql-test/r/type_float.result.es +36 −0 Original line number Diff line number Diff line Loading @@ -143,3 +143,39 @@ drop table t1; create table t1 (f float(54)); ERROR 42000: Incorrect column specifier for column 'f' drop table if exists t1; create table t1 (f float(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); Warnings: Warning 1264 Data truncated; out of range for column 'f' at row 1 Warning 1264 Data truncated; out of range for column 'f' at row 2 Warning 1264 Data truncated; out of range for column 'f' at row 3 Warning 1264 Data truncated; out of range for column 'f' at row 4 Warning 1264 Data truncated; out of range for column 'f' at row 5 Warning 1264 Data truncated; out of range for column 'f' at row 6 select * from t1; f -9.999 -9.999 -9.999 9.999 9.999 9.999 drop table if exists t1; create table t1 (f double(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); Warnings: Warning 1264 Data truncated; out of range for column 'f' at row 1 Warning 1264 Data truncated; out of range for column 'f' at row 2 Warning 1264 Data truncated; out of range for column 'f' at row 3 Warning 1264 Data truncated; out of range for column 'f' at row 4 Warning 1264 Data truncated; out of range for column 'f' at row 5 Warning 1264 Data truncated; out of range for column 'f' at row 6 select * from t1; f -9.999 -9.999 -9.999 9.999 9.999 9.999 drop table if exists t1;
mysql-test/t/type_float.test +10 −0 Original line number Diff line number Diff line Loading @@ -93,3 +93,13 @@ create table t1 (f float(54)); # Should give an error drop table if exists t1; --enable_warnings # Ensure that maximum values as the result of number of decimals # being specified in table schema are enforced (Bug #7361) create table t1 (f float(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); select * from t1; drop table if exists t1; create table t1 (f double(4,3)); insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11"); select * from t1; drop table if exists t1;
sql/field.cc +2 −34 Original line number Diff line number Diff line Loading @@ -2440,23 +2440,7 @@ int Field_float::store(double nr) int Field_float::store(longlong nr) { int error= 0; float j= (float) nr; if (unsigned_flag && j < 0) { set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); j=0; error= 1; } #ifdef WORDS_BIGENDIAN if (table->db_low_byte_first) { float4store(ptr,j); } else #endif memcpy_fixed(ptr,(byte*) &j,sizeof(j)); return error; return store((double)nr); } Loading Loading @@ -2738,23 +2722,7 @@ int Field_double::store(double nr) int Field_double::store(longlong nr) { double j= (double) nr; int error= 0; if (unsigned_flag && j < 0) { set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1); error= 1; j=0; } #ifdef WORDS_BIGENDIAN if (table->db_low_byte_first) { float8store(ptr,j); } else #endif doublestore(ptr,j); return error; return store((double)nr); } Loading