Commit 25335a91 authored by unknown's avatar unknown

Merge mysql.com:/home/jwinstead2/mysql-4.1-clean

into mysql.com:/home/jwinstead2/mysql-5.0-clean


mysql-test/r/type_float.result:
  Auto merged
sql/field.cc:
  Auto merged
parents 6e74893a 0c57a67c
...@@ -143,3 +143,39 @@ drop table t1; ...@@ -143,3 +143,39 @@ drop table t1;
create table t1 (f float(54)); create table t1 (f float(54));
ERROR 42000: Incorrect column specifier for column 'f' ERROR 42000: Incorrect column specifier for column 'f'
drop table if exists t1; 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;
...@@ -143,3 +143,39 @@ drop table t1; ...@@ -143,3 +143,39 @@ drop table t1;
create table t1 (f float(54)); create table t1 (f float(54));
ERROR 42000: Incorrect column specifier for column 'f' ERROR 42000: Incorrect column specifier for column 'f'
drop table if exists t1; 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;
...@@ -93,3 +93,13 @@ create table t1 (f float(54)); # Should give an error ...@@ -93,3 +93,13 @@ create table t1 (f float(54)); # Should give an error
drop table if exists t1; drop table if exists t1;
--enable_warnings --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;
...@@ -2440,23 +2440,7 @@ int Field_float::store(double nr) ...@@ -2440,23 +2440,7 @@ int Field_float::store(double nr)
int Field_float::store(longlong nr) int Field_float::store(longlong nr)
{ {
int error= 0; return store((double)nr);
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;
} }
...@@ -2738,23 +2722,7 @@ int Field_double::store(double nr) ...@@ -2738,23 +2722,7 @@ int Field_double::store(double nr)
int Field_double::store(longlong nr) int Field_double::store(longlong nr)
{ {
double j= (double) nr; return store((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;
} }
......
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