mirror of
https://github.com/MariaDB/server.git
synced 2025-05-08 15:01:49 +03:00
Make sure that warning message when GROUP_CONCAT() cuts values is also
updated with the correct number of lines. (Bug #8681)
This commit is contained in:
parent
a50be4d42b
commit
624f855e94
@ -816,3 +816,22 @@ id text_id text_data
|
|||||||
1 0 0-SV
|
1 0 0-SV
|
||||||
2 10 10-SV
|
2 10 10-SV
|
||||||
DROP TABLE invoice, text_table;
|
DROP TABLE invoice, text_table;
|
||||||
|
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;
|
||||||
|
@ -582,3 +582,14 @@ SELECT invoice.id, invoice.text_id, text_table.text_data
|
|||||||
WHERE (invoice.id LIKE '%' OR text_table.text_data LIKE '%');
|
WHERE (invoice.id LIKE '%' OR text_table.text_data LIKE '%');
|
||||||
|
|
||||||
DROP TABLE invoice, text_table;
|
DROP TABLE invoice, text_table;
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
@ -1787,16 +1787,26 @@ Item_func_group_concat::Item_func_group_concat(THD *thd,
|
|||||||
|
|
||||||
void Item_func_group_concat::cleanup()
|
void Item_func_group_concat::cleanup()
|
||||||
{
|
{
|
||||||
|
THD *thd= current_thd;
|
||||||
|
|
||||||
DBUG_ENTER("Item_func_group_concat::cleanup");
|
DBUG_ENTER("Item_func_group_concat::cleanup");
|
||||||
Item_sum::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
|
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 )
|
to original item from which was made copy => it own its objects )
|
||||||
*/
|
*/
|
||||||
if (!original)
|
if (!original)
|
||||||
{
|
{
|
||||||
THD *thd= current_thd;
|
|
||||||
if (table)
|
if (table)
|
||||||
{
|
{
|
||||||
free_tmp_table(thd, table);
|
free_tmp_table(thd, table);
|
||||||
@ -1809,13 +1819,6 @@ void Item_func_group_concat::cleanup()
|
|||||||
tree_mode= 0;
|
tree_mode= 0;
|
||||||
delete_tree(tree);
|
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;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
@ -2076,6 +2079,10 @@ String* Item_func_group_concat::val_str(String* str)
|
|||||||
if (null_value)
|
if (null_value)
|
||||||
return 0;
|
return 0;
|
||||||
if (count_cut_values && !warning)
|
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,
|
warning= push_warning(item_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_CUT_VALUE_GROUP_CONCAT,
|
ER_CUT_VALUE_GROUP_CONCAT,
|
||||||
ER(ER_CUT_VALUE_GROUP_CONCAT));
|
ER(ER_CUT_VALUE_GROUP_CONCAT));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user