Commit 682baee2 authored by unknown's avatar unknown
Browse files

Merge new tests


mysql-test/r/join_outer.result:
  Update results
mysql-test/t/join_outer.test:
  Merge
parents 52781a48 a728ad71
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -864,3 +864,22 @@ a b a b
3	1	NULL	NULL
4	2	NULL	NULL
DROP TABLE t1,t2;
set group_concat_max_len=5;
create table t1 (a int, b varchar(20));
create table t2 (a int, c varchar(20));
insert into t1 values (1,"aaaaaaaaaa"),(2,"bbbbbbbbbb");
insert into t2 values (1,"cccccccccc"),(2,"dddddddddd");
select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by t1.a;
group_concat(t1.b,t2.c)
aaaaa
bbbbb
Warnings:
Warning	1260	2 line(s) were cut by GROUP_CONCAT()
select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by t1.a;
group_concat(t1.b,t2.c)
aaaaa
bbbbb
Warnings:
Warning	1260	2 line(s) were cut by GROUP_CONCAT()
drop table t1, t2;
set group_concat_max_len=default;
+10 −1
Original line number Diff line number Diff line
@@ -614,4 +614,13 @@ SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE not(0+(t1.a=30 and t2.b=1));

DROP TABLE t1,t2;

# Bug #8681: Bad warning message when group_concat() exceeds max length
set group_concat_max_len=5;
create table t1 (a int, b varchar(20));
create table t2 (a int, c varchar(20));
insert into t1 values (1,"aaaaaaaaaa"),(2,"bbbbbbbbbb");
insert into t2 values (1,"cccccccccc"),(2,"dddddddddd");
select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by t1.a;
select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by t1.a;
drop table t1, t2;
set group_concat_max_len=default;
+15 −8
Original line number Diff line number Diff line
@@ -1787,16 +1787,26 @@ Item_func_group_concat::Item_func_group_concat(THD *thd,

void Item_func_group_concat::cleanup()
{
  THD *thd= current_thd;

  DBUG_ENTER("Item_func_group_concat::cleanup");
  Item_sum::cleanup();

  /* Adjust warning message to include total number of cut values */
  if (warning)
  {
    char warn_buff[MYSQL_ERRMSG_SIZE];
    sprintf(warn_buff, ER(ER_CUT_VALUE_GROUP_CONCAT), count_cut_values);
    warning->set_msg(thd, warn_buff);
    warning= 0;
  }

  /*
    Free table and tree if they belong to this item (if item have not pointer
    to original item from which was made copy => it own its objects )
  */
  if (!original)
  {
    THD *thd= current_thd;
    if (table)
    {
      free_tmp_table(thd, table);
@@ -1809,13 +1819,6 @@ void Item_func_group_concat::cleanup()
      tree_mode= 0;
      delete_tree(tree); 
    }
    if (warning)
    {
      char warn_buff[MYSQL_ERRMSG_SIZE];
      sprintf(warn_buff, ER(ER_CUT_VALUE_GROUP_CONCAT), count_cut_values);
      warning->set_msg(thd, warn_buff);
      warning= 0;
    }
  }
  DBUG_VOID_RETURN;
}
@@ -2076,6 +2079,10 @@ String* Item_func_group_concat::val_str(String* str)
  if (null_value)
    return 0;
  if (count_cut_values && !warning)
    /*
      ER_CUT_VALUE_GROUP_CONCAT needs an argument, but this gets set in
      Item_func_group_concat::cleanup().
    */
    warning= push_warning(item_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
                          ER_CUT_VALUE_GROUP_CONCAT,
                          ER(ER_CUT_VALUE_GROUP_CONCAT));