Commit 5c5d721f authored by unknown's avatar unknown
Browse files

Merge moonbone.local:/home/evgen/bk-trees/mysql-5.0-opt

into moonbone.local:/work/15962-bug-5.0-opt-mysql

parents 86334edf 6e80e9a4
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -68,3 +68,10 @@ select 'a' union select concat('a', -0.0000);
a
a
a0.0000
create table t1(f1 varchar(6)) charset=utf8;
insert into t1 values ("123456");
select concat(f1, 2) a from t1 union select 'x' a from t1;
a
1234562
x
drop table t1;
+8 −0
Original line number Diff line number Diff line
@@ -53,3 +53,11 @@ select 'a' union select concat('a', -0.0);
select 'a' union select concat('a', -0.0000);

# End of 4.1 tests

#
# Bug#15962: CONCAT() in UNION may lead to a data trucation.
#
create table t1(f1 varchar(6)) charset=utf8;
insert into t1 values ("123456");
select concat(f1, 2) a from t1 union select 'x' a from t1;
drop table t1;
+8 −1
Original line number Diff line number Diff line
@@ -389,7 +389,14 @@ void Item_func_concat::fix_length_and_dec()
    return;

  for (uint i=0 ; i < arg_count ; i++)
  {
    if (args[i]->collation.collation->mbmaxlen != collation.collation->mbmaxlen)
      max_result_length+= (args[i]->max_length /
                           args[i]->collation.collation->mbmaxlen) *
                           collation.collation->mbmaxlen;
    else
      max_result_length+= args[i]->max_length;
  }

  if (max_result_length >= MAX_BLOB_WIDTH)
  {