[MCOL-2146] group_concat with distinct concatenates even non-distinct values Created: 2019-02-08  Updated: 2020-02-18  Resolved: 2019-09-27

Status: Closed
Project: MariaDB ColumnStore
Component/s: ExeMgr
Affects Version/s: 1.0.15, 1.1.6, 1.2.2
Fix Version/s: 1.4.0

Type: Bug Priority: Minor
Reporter: Roman Assignee: Daniel Lee (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Duplicate
is duplicated by MCOL-2159 Fix group_concat Closed
is duplicated by MCOL-3805 CLONE - Fix group_concat Closed
Relates
relates to MCOL-1829 Output of 'select * (with order by li... Closed
Sprint: 2019-06

 Description   

If the group_concat contains distinct together with sorting over non-distinct column CS concatenates distinct values multiple times.

Here is the setting:

create table cs1 (i bigint, a bigint) engine=columnstore;
insert into cs1 values (1,2),(1,3),(2,5),(1,42);

MariaDB [tpch1]> select group_concat(distinct i order by a) s from cs1;
+---------+
| s       |
+---------+
| 1,1,2,1 |
+---------+
1 row in set (0.031 sec)



 Comments   
Comment by Roman [ 2019-02-08 ]

IdbOrderBy::Hasher::operator() and IdbOrderBy::Eq::operator() both don't exempt non-distinct columns from calculation when they call Row::hash() and Row:eq() respectively. Hasher and Eq operators must sent down the stack the column count equals with distinct columns count.
LimitedOrderBy is protected by an error message group_concat doesn't have such barrier. We should remove the error message for LimitedOrderBy when resolve the issue and get extra feature - distinct sorting by non-projected columns.

Comment by Daniel Lee (Inactive) [ 2019-09-27 ]

Build verified: 1.4.0-1

[dlee@master centos7]$ cat gitversionInfo.txt
engine commit:
1f47534

MariaDB [mytest]> create table cs1 (i bigint, a bigint) engine=columnstore;
Query OK, 0 rows affected (0.230 sec)

MariaDB [mytest]> insert into cs1 values (1,2),(1,3),(2,5),(1,42);
Query OK, 4 rows affected (1.239 sec)
Records: 4 Duplicates: 0 Warnings: 0

MariaDB [mytest]> select group_concat(distinct i order by a) s from cs1;
------

s

------

1,2

------
1 row in set (0.533 sec)

Generated at Thu Feb 08 02:34:05 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.