diff options
author | unknown <ram@gw.mysql.r18.ru> | 2004-06-08 18:01:15 +0500 |
---|---|---|
committer | unknown <ram@gw.mysql.r18.ru> | 2004-06-08 18:01:15 +0500 |
commit | 66c4087289dd05a39c6e4f5a95dad2df4ef1cfe0 (patch) | |
tree | a152aaf558cbcde196313f567fbe97ae284bdf0e /sql/item_sum.cc | |
parent | 5b4120288ebd7f81e198004490032be3e6ba9e79 (diff) | |
download | mariadb-git-66c4087289dd05a39c6e4f5a95dad2df4ef1cfe0.tar.gz |
a fix
(Bug #4035 GROUP_CONCAT with HAVING clause truncates field
Bug #4057 LEFT() function in HAVING clause truncates query result).
mysql-test/r/func_gconcat.result:
a test case
Bug #4035 GROUP_CONCAT with HAVING clause truncates field
Bug #4057 LEFT() function in HAVING clause truncates query result
mysql-test/t/func_gconcat.test:
a test case
Bug #4035 GROUP_CONCAT with HAVING clause truncates field
Bug #4057 LEFT() function in HAVING clause truncates query result
sql/item_strfunc.cc:
a fix (Bug #4057 LEFT() function in HAVING clause truncates query result)
sql/item_strfunc.h:
a fix (Bug #4057 LEFT() function in HAVING clause truncates query result)
sql/item_sum.cc:
a fix (Bug #4035 GROUP_CONCAT with HAVING clause truncates field)
sql/item_sum.h:
a fix (Bug #4035 GROUP_CONCAT with HAVING clause truncates field)
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r-- | sql/item_sum.cc | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 0c5b29fc069..7c11a520d27 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -1666,6 +1666,9 @@ int dump_leaf_key(byte* key, uint32 count __attribute__((unused)), String tmp((char *)&buff,sizeof(buff),default_charset_info), tmp2; char *record= (char*) item->table->record[0]; + if (item->result.length()) + item->result.append(*item->separator); + tmp.length(0); for (uint i= 0; i < item->arg_count_field; i++) @@ -1695,14 +1698,6 @@ int dump_leaf_key(byte* key, uint32 count __attribute__((unused)), item->result.append(*res); } } - if (item->tree_mode) // Last item of tree - { - item->show_elements++; - if (item->show_elements < item->tree->elements_in_tree) - item->result.append(*item->separator); - } - else - item->result.append(*item->separator); /* stop if length of result more than group_concat_max_len */ if (item->result.length() > item->group_concat_max_len) @@ -1733,7 +1728,7 @@ Item_func_group_concat::Item_func_group_concat(bool is_distinct, tree_mode(0), distinct(is_distinct), warning_for_row(0), separator(is_separator), tree(&tree_base), table(0), order(0), tables_list(0), - show_elements(0), arg_count_order(0), arg_count_field(0), + arg_count_order(0), arg_count_field(0), count_cut_values(0) { Item *item_select; @@ -1799,7 +1794,6 @@ Item_func_group_concat::Item_func_group_concat(THD *thd, order(item->order), tables_list(item->tables_list), group_concat_max_len(item->group_concat_max_len), - show_elements(item->show_elements), arg_count_order(item->arg_count_order), arg_count_field(item->arg_count_field), field_list_offset(item->field_list_offset), @@ -2107,15 +2101,9 @@ String* Item_func_group_concat::val_str(String* str) return 0; if (tree_mode) { - show_elements= 0; tree_walk(tree, (tree_walk_action)&dump_leaf_key, (void*)this, left_root_right); } - else - { - if (!warning_for_row) - result.length(result.length()-separator->length()); - } if (count_cut_values && !warning_available) { warning_available= TRUE; |