Commit 56ce4907 authored by unknown's avatar unknown
Browse files

Merge bk-internal:/home/bk/mysql-5.1-new-maint

into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-maint

parents 9955750b fdb2e640
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -1428,6 +1428,19 @@ f1
20101112000000.000014
101112.000000
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));
cast(143.481 as decimal(4,1))
143.5
@@ -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));
cast(98.6 as decimal(2,0))
99
select cast(19999999999999999999 as unsigned);
cast(19999999999999999999 as unsigned)
18446744073709551615
Warnings:
Error	1292	Truncated incorrect DECIMAL value: ''
+16 −5
Original line number Diff line number Diff line
@@ -1126,6 +1126,22 @@ insert into t1 values (CAST('10:11:12' AS time));
select * from 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
#
@@ -1136,8 +1152,3 @@ select cast(-3.4 as decimal(2,1));
select cast(99.6 as decimal(2,0));
select cast(-13.4 as decimal(2,1));
select cast(98.6 as decimal(2,0));

# Bug #8663 (cant use bigint as input to CAST)
#
select cast(19999999999999999999 as unsigned);
+9 −0
Original line number Diff line number Diff line
@@ -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
  from string
@@ -580,6 +587,8 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*)
    if (to->real_type() == MYSQL_TYPE_BIT ||
        from->real_type() == MYSQL_TYPE_BIT)
      return do_field_int;
    if (to->result_type() == DECIMAL_RESULT)
      return do_field_decimal;
    // Check if identical fields
    if (from->result_type() == STRING_RESULT)
    {