mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Fix bug #14466 lost sort order in GROUP_CONCAT() in a view
Item_func_group_concat::print() wasn't printing sort order thus creating wrong view. This results in reported error. sql/item_sum.cc: Fix bug #14466 lost sort order in GROUP_CONCAT() in a view Now Item_func_group_concat::print() prints sort order. mysql-test/r/view.result: Test case for bug #14466 lost sort order in GROUP_CONCAT() in a view mysql-test/t/view.test: Test case for bug #14466 lost sort order in GROUP_CONCAT() in a view
This commit is contained in:
@@ -2323,3 +2323,15 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3;
|
||||
create table t1 (f1 int, f2 int);
|
||||
insert into t1 values(1,1),(1,2),(1,3);
|
||||
create view v1 as select f1 ,group_concat(f2 order by f2 asc) from t1 group by f1;
|
||||
create view v2 as select f1 ,group_concat(f2 order by f2 desc) from t1 group by f1;
|
||||
select * from v1;
|
||||
f1 group_concat(f2 order by f2 asc)
|
||||
1 1,2,3
|
||||
select * from v2;
|
||||
f1 group_concat(f2 order by f2 desc)
|
||||
1 3,2,1
|
||||
drop view v1,v2;
|
||||
drop table t1;
|
||||
|
||||
@@ -2189,4 +2189,14 @@ EXPLAIN SELECT * FROM v2 WHERE a=1;
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
|
||||
#
|
||||
# Bug #14466 lost sort order in GROUP_CONCAT() in a view
|
||||
#
|
||||
create table t1 (f1 int, f2 int);
|
||||
insert into t1 values(1,1),(1,2),(1,3);
|
||||
create view v1 as select f1 ,group_concat(f2 order by f2 asc) from t1 group by f1;
|
||||
create view v2 as select f1 ,group_concat(f2 order by f2 desc) from t1 group by f1;
|
||||
select * from v1;
|
||||
select * from v2;
|
||||
drop view v1,v2;
|
||||
drop table t1;
|
||||
|
||||
@@ -3173,6 +3173,10 @@ void Item_func_group_concat::print(String *str)
|
||||
if (i)
|
||||
str->append(',');
|
||||
(*order[i]->item)->print(str);
|
||||
if (order[i]->asc)
|
||||
str->append(" ASC");
|
||||
else
|
||||
str->append(" DESC");
|
||||
}
|
||||
}
|
||||
str->append(" separator \'", 12);
|
||||
|
||||
Reference in New Issue
Block a user