Commit fdb2e640 authored by unknown's avatar unknown

Merge mysql.com:/home/ram/work/b24558/b24558.5.0

into  mysql.com:/home/ram/work/b24558/b24558.5.1


sql/field_conv.cc:
  Auto merged
mysql-test/r/type_newdecimal.result:
  merging
mysql-test/t/type_newdecimal.test:
  merging
parents 0b9d0fef 9e5691cb
...@@ -1428,6 +1428,19 @@ f1 ...@@ -1428,6 +1428,19 @@ f1
20101112000000.000014 20101112000000.000014
101112.000000 101112.000000
drop table t1; drop table t1;
select cast(19999999999999999999 as unsigned);
cast(19999999999999999999 as unsigned)
18446744073709551615
Warnings:
Error 1292 Truncated incorrect DECIMAL value: ''
create table t1(a decimal(18));
insert into t1 values(123456789012345678);
alter table t1 modify column a decimal(19);
select * from t1;
a
123456789012345678
drop table t1;
End of 5.0 tests
select cast(143.481 as decimal(4,1)); select cast(143.481 as decimal(4,1));
cast(143.481 as decimal(4,1)) cast(143.481 as decimal(4,1))
143.5 143.5
...@@ -1455,8 +1468,3 @@ Error 1264 Out of range value for column 'cast(-13.4 as decimal(2,1))' at row 1 ...@@ -1455,8 +1468,3 @@ Error 1264 Out of range value for column 'cast(-13.4 as decimal(2,1))' at row 1
select cast(98.6 as decimal(2,0)); select cast(98.6 as decimal(2,0));
cast(98.6 as decimal(2,0)) cast(98.6 as decimal(2,0))
99 99
select cast(19999999999999999999 as unsigned);
cast(19999999999999999999 as unsigned)
18446744073709551615
Warnings:
Error 1292 Truncated incorrect DECIMAL value: ''
...@@ -1126,6 +1126,22 @@ insert into t1 values (CAST('10:11:12' AS time)); ...@@ -1126,6 +1126,22 @@ insert into t1 values (CAST('10:11:12' AS time));
select * from t1; select * from t1;
drop table t1; drop table t1;
#
# Bug #8663 (cant use bigint as input to CAST)
#
select cast(19999999999999999999 as unsigned);
#
# Bug #24558: Increasing decimal column length causes data loss
#
create table t1(a decimal(18));
insert into t1 values(123456789012345678);
alter table t1 modify column a decimal(19);
select * from t1;
drop table t1;
--echo End of 5.0 tests
# #
# Bug#16172 DECIMAL data type processed incorrectly # Bug#16172 DECIMAL data type processed incorrectly
# #
...@@ -1136,8 +1152,3 @@ select cast(-3.4 as decimal(2,1)); ...@@ -1136,8 +1152,3 @@ select cast(-3.4 as decimal(2,1));
select cast(99.6 as decimal(2,0)); select cast(99.6 as decimal(2,0));
select cast(-13.4 as decimal(2,1)); select cast(-13.4 as decimal(2,1));
select cast(98.6 as decimal(2,0)); select cast(98.6 as decimal(2,0));
# Bug #8663 (cant use bigint as input to CAST)
#
select cast(19999999999999999999 as unsigned);
...@@ -336,6 +336,13 @@ static void do_field_real(Copy_field *copy) ...@@ -336,6 +336,13 @@ static void do_field_real(Copy_field *copy)
} }
static void do_field_decimal(Copy_field *copy)
{
my_decimal value;
copy->to_field->store_decimal(copy->from_field->val_decimal(&value));
}
/* /*
string copy for single byte characters set when to string is shorter than string copy for single byte characters set when to string is shorter than
from string from string
...@@ -580,6 +587,8 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*) ...@@ -580,6 +587,8 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*)
if (to->real_type() == MYSQL_TYPE_BIT || if (to->real_type() == MYSQL_TYPE_BIT ||
from->real_type() == MYSQL_TYPE_BIT) from->real_type() == MYSQL_TYPE_BIT)
return do_field_int; return do_field_int;
if (to->result_type() == DECIMAL_RESULT)
return do_field_decimal;
// Check if identical fields // Check if identical fields
if (from->result_type() == STRING_RESULT) if (from->result_type() == 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