~ubuntu-branches/ubuntu/trusty/drizzle/trusty

« back to all changes in this revision

Viewing changes to tests/t/func_gconcat.test

  • Committer: Bazaar Package Importer
  • Author(s): Monty Taylor
  • Date: 2010-03-18 12:12:31 UTC
  • Revision ID: james.westby@ubuntu.com-20100318121231-k6g1xe6cshbwa0f8
Tags: upstream-2010.03.1347
Import upstream version 2010.03.1347

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# simple test of group_concat function
 
3
#
 
4
--disable_warnings
 
5
drop table if exists t1, t2;
 
6
--enable_warnings
 
7
 
 
8
create table t1 (grp int, a bigint, c char(10) not null, d char(10) not null);
 
9
insert into t1 values (1,1,"a","a");
 
10
insert into t1 values (2,2,"b","a");
 
11
insert into t1 values (2,3,"c","b");
 
12
insert into t1 values (3,4,"E","a");
 
13
insert into t1 values (3,5,"C","b");
 
14
insert into t1 values (3,6,"D","b");
 
15
insert into t1 values (3,7,"d","d");
 
16
insert into t1 values (3,8,"d","d");
 
17
insert into t1 values (3,9,"D","c");
 
18
 
 
19
# Test of MySQL simple request
 
20
select grp,group_concat(c) from t1 group by grp;
 
21
explain extended select grp,group_concat(c) from t1 group by grp;
 
22
select grp,group_concat(a,c) from t1 group by grp;
 
23
select grp,group_concat("(",a,":",c,")") from t1 group by grp;
 
24
 
 
25
# Test of MySQL with options
 
26
select grp,group_concat(c separator ",") from t1 group by grp;
 
27
select grp,group_concat(c separator "---->") from t1 group by grp;
 
28
select grp,group_concat(c order by c) from t1 group by grp;
 
29
select grp,group_concat(c order by c desc) from t1 group by grp;
 
30
select grp,group_concat(d order by a) from t1 group by grp;
 
31
select grp,group_concat(d order by a desc) from t1 group by grp;
 
32
--disable_warnings
 
33
select grp,group_concat(a order by a,d+c-ascii(c)-a) from t1 group by grp;
 
34
select grp,group_concat(a order by d+c-ascii(c),a) from t1 group by grp;
 
35
--enable_warnings
 
36
select grp,group_concat(c order by 1) from t1 group by grp;
 
37
select grp,group_concat(distinct c order by c) from t1 group by grp;
 
38
select grp,group_concat(distinct c order by c desc) from t1 group by grp;
 
39
explain extended select grp,group_concat(distinct c order by c desc) from t1 group by grp;
 
40
select grp,group_concat(c order by c separator ",") from t1 group by grp;
 
41
select grp,group_concat(c order by c desc separator ",") from t1 group by grp;
 
42
select grp,group_concat(distinct c order by c separator ",") from t1 group by grp;
 
43
explain extended select grp,group_concat(distinct c order by c separator ",") from t1 group by grp;
 
44
select grp,group_concat(distinct c order by c desc separator ",") from t1 group by grp;
 
45
 
 
46
# Test of SQL_LIST objects
 
47
select grp,group_concat(c order by grp desc) from t1 group by grp order by grp;
 
48
 
 
49
 
 
50
# Test transfer to real values
 
51
 
 
52
select grp, group_concat(a separator "")+0 from t1 group by grp;
 
53
select grp, group_concat(a separator "")+0.0 from t1 group by grp;
 
54
select grp, ROUND(group_concat(a separator "")) from t1 group by grp;
 
55
drop table t1;
 
56
 
 
57
# Test NULL values
 
58
 
 
59
create table t1 (grp int, c char(10));
 
60
insert into t1 values (1,NULL),(2,"b"),(2,NULL),(3,"E"),(3,NULL),(3,"D"),(3,NULL),(3,NULL),(3,"D"),(4,""),(5,NULL);
 
61
select grp,group_concat(c order by c) from t1 group by grp;
 
62
 
 
63
# Test warnings
 
64
 
 
65
set group_concat_max_len = 4;
 
66
select grp,group_concat(c) from t1 group by grp;
 
67
show warnings;
 
68
set group_concat_max_len = 1024;
 
69
 
 
70
# Test errors
 
71
 
 
72
--error 1111
 
73
select group_concat(sum(c)) from t1 group by grp;
 
74
--error 1054
 
75
select grp,group_concat(c order by 2) from t1 group by grp;
 
76
 
 
77
drop table t1;
 
78
 
 
79
# Test variable length
 
80
 
 
81
create table t1 ( URL_ID int, URL varchar(80));
 
82
create table t2 ( REQ_ID int, URL_ID int);
 
83
insert into t1 values (4,'www.host.com'), (5,'www.google.com'),(5,'www.help.com');
 
84
insert into t2 values (1,4), (5,4), (5,5);
 
85
# Make this order independent
 
86
--replace_result www.help.com X www.host.com X www.google.com X
 
87
select REQ_ID, Group_Concat(URL) as URL from t1, t2 where
 
88
t2.URL_ID = t1.URL_ID group by REQ_ID;
 
89
# check min/max function
 
90
--replace_result www.help.com X www.host.com X www.google.com X
 
91
select REQ_ID, Group_Concat(URL) as URL, Min(t1.URL_ID) urll,
 
92
Max(t1.URL_ID) urlg from t1, t2 where t2.URL_ID = t1.URL_ID group by REQ_ID;
 
93
 
 
94
drop table t1;
 
95
drop table t2;
 
96
 
 
97
create table t1 (id int, name varchar(16));
 
98
insert into t1 values (1,'longername'),(1,'evenlongername');
 
99
select ifnull(group_concat(concat(t1.id, ':', t1.name)), 'shortname') as 'without distinct: how it should be' from t1;
 
100
select distinct ifnull(group_concat(concat(t1.id, ':', t1.name)), 'shortname') as 'with distinct: cutoff at length of shortname' from t1;
 
101
drop table t1;
 
102
 
 
103
# check zero rows (bug#836)
 
104
create table t1(id int);
 
105
create table t2(id int);
 
106
insert into t1 values(0),(1);
 
107
select group_concat(t1.id) FROM t1,t2;
 
108
drop table t1;
 
109
drop table t2;
 
110
 
 
111
# check having
 
112
create table t1 (bar varchar(32));
 
113
insert into t1 values('test1'),('test2');
 
114
select group_concat(bar order by concat(bar,bar)) from t1;
 
115
select group_concat(bar order by concat(bar,bar) desc) from t1;
 
116
select bar from t1 having group_concat(bar)='';
 
117
select bar from t1 having instr(group_concat(bar), "test") > 0;
 
118
select bar from t1 having instr(group_concat(bar order by concat(bar,bar) desc), "test2,test1") > 0;
 
119
drop table t1;
 
120
 
 
121
# ORDER BY fix_fields()
 
122
create table t1 (a int, a1 varchar(10));
 
123
create table t2 (a0 int);
 
124
insert into t1 values (0,"a"),(0,"b"),(1,"c");
 
125
insert into t2 values (1),(2),(3);
 
126
select  group_concat(a1 order by (t1.a IN (select a0 from t2))) from t1;
 
127
select  group_concat(a1 order by (t1.a)) from t1;
 
128
drop table t1, t2;
 
129
 
 
130
#
 
131
# Problem with GROUP BY (Bug #2695)
 
132
#
 
133
 
 
134
CREATE TABLE t1 (id1 int NOT NULL, id2 int NOT NULL);
 
135
INSERT INTO t1 VALUES (1, 1),(1, 2),(1, 3),(1, 4),(1, 5),(2, 1),(2, 2),(2, 3);
 
136
CREATE TABLE t2 (id1 int NOT NULL);
 
137
INSERT INTO t2 VALUES (1),(2),(3),(4),(5);
 
138
SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 AND t1.id1=1 GROUP BY t1.id1;
 
139
SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
 
140
SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 DESC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
 
141
SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
 
142
 
 
143
# The following failed when it was run twice:
 
144
SELECT t1.id1, GROUP_CONCAT(t1.id2,6-t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
 
145
SELECT t1.id1, GROUP_CONCAT(t1.id2,6-t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
 
146
 
 
147
SELECT t1.id1, GROUP_CONCAT(t1.id2,"/",6-t1.id2 ORDER BY 1+0,6-t1.id2,t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
 
148
drop table t1,t2;
 
149
 
 
150
#
 
151
# Problem with distinct (Bug #3381)
 
152
#
 
153
 
 
154
create table t1 (s1 char(10), s2 int not null);
 
155
insert into t1 values ('a',2),('b',2),('c',1),('a',3),('b',4),('c',4);
 
156
select distinct s1 from t1 order by s2,s1;
 
157
select group_concat(distinct s1) from t1;
 
158
select group_concat(distinct s1 order by s2) from t1 where s2 < 4;
 
159
# The following is wrong and needs to be fixed ASAP
 
160
select group_concat(distinct s1 order by s2) from t1;
 
161
drop table t1;
 
162
 
 
163
#
 
164
# Test with subqueries (Bug #3319)
 
165
#
 
166
 
 
167
create table t1 (a int, c int);
 
168
insert into t1 values (1, 2), (2, 3), (2, 4), (3, 5);
 
169
create table t2 (a int, c int);
 
170
insert into t2 values (1, 5), (2, 4), (3, 3), (3,3);
 
171
select group_concat(c) from t1;
 
172
select group_concat(c order by (select c from t2 where t2.a=t1.a limit 1)) as grp from t1;
 
173
select group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a)) as grp from t1;
 
174
select group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a) desc) as grp from t1;
 
175
select t1.a, group_concat(c order by (select c from t2 where t2.a=t1.a limit 1)) as grp from t1 group by 1;
 
176
select t1.a, group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a)) as grp from t1 group by 1;
 
177
select t1.a, group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a) desc) as grp from t1 group by 1;
 
178
 
 
179
# The following returns random results as we are sorting on blob addresses
 
180
select group_concat(c order by (select concat(5-t1.c,group_concat(c order by a)) from t2 where t2.a=t1.a)) as grp from t1;
 
181
select group_concat(c order by (select concat(t1.c,group_concat(c)) from t2 where a=t1.a)) as grp from t1;
 
182
 
 
183
select a,c,(select group_concat(c order by a) from t2 where a=t1.a) as grp from t1 order by grp;
 
184
drop table t1,t2;
 
185
 
 
186
#
 
187
# group_concat of expression with GROUP BY and external GROUP BY
 
188
#
 
189
CREATE TABLE t1 ( a int );
 
190
CREATE TABLE t2 ( a int );
 
191
INSERT INTO t1 VALUES (1), (2);
 
192
INSERT INTO t2 VALUES (1), (2);
 
193
SELECT GROUP_CONCAT(t1.a*t2.a ORDER BY t2.a) FROM t1, t2 GROUP BY t1.a;
 
194
DROP TABLE t1, t2;
 
195
 
 
196
#
 
197
# Bug #4035: group_concat() and HAVING
 
198
#
 
199
 
 
200
CREATE TABLE t1 (a char(4));
 
201
INSERT INTO t1 VALUES ('John'), ('Anna'), ('Bill');
 
202
SELECT GROUP_CONCAT(a SEPARATOR '||') AS names FROM t1 
 
203
  HAVING names LIKE '%An%';
 
204
SELECT GROUP_CONCAT(a SEPARATOR '###') AS names FROM t1 
 
205
  HAVING LEFT(names, 1) ='J';
 
206
DROP TABLE t1;
 
207
 
 
208
#
 
209
# check blobs
 
210
#
 
211
 
 
212
CREATE TABLE t1 ( a int, b TEXT );
 
213
INSERT INTO t1 VALUES (1,'First Row'), (2,'Second Row');
 
214
SELECT GROUP_CONCAT(b ORDER BY b) FROM t1 GROUP BY a;
 
215
DROP TABLE t1;
 
216
 
 
217
#
 
218
# check null values #2
 
219
#
 
220
 
 
221
CREATE TABLE t1 (A_ID INT NOT NULL,A_DESC CHAR(3) NOT NULL,PRIMARY KEY (A_ID));
 
222
INSERT INTO t1 VALUES (1,'ABC'), (2,'EFG'), (3,'HIJ');
 
223
CREATE TABLE t2 (A_ID INT NOT NULL,B_DESC CHAR(3) NOT NULL,PRIMARY KEY (A_ID,B_DESC));
 
224
INSERT INTO t2 VALUES (1,'A'),(1,'B'),(3,'F');
 
225
SELECT t1.A_ID, GROUP_CONCAT(t2.B_DESC) AS B_DESC FROM t1 LEFT JOIN t2 ON t1.A_ID=t2.A_ID GROUP BY t1.A_ID ORDER BY t1.A_DESC;
 
226
DROP TABLE t1;
 
227
DROP TABLE t2;
 
228
 
 
229
#
 
230
# blobs
 
231
#
 
232
 
 
233
create table t1 (a int, b text);
 
234
insert into t1 values (1, 'bb'), (1, 'ccc'), (1, 'a'), (1, 'bb'), (1, 'ccc');
 
235
insert into t1 values (2, 'BB'), (2, 'CCC'), (2, 'A'), (2, 'BB'), (2, 'CCC');
 
236
select group_concat(b) from t1 group by a;
 
237
select group_concat(distinct b) from t1 group by a;
 
238
select group_concat(b order by b) from t1 group by a;
 
239
select group_concat(distinct b order by b) from t1 group by a;
 
240
set local group_concat_max_len=4;
 
241
select group_concat(b) from t1 group by a;
 
242
select group_concat(distinct b) from t1 group by a;
 
243
select group_concat(b order by b) from t1 group by a;
 
244
select group_concat(distinct b order by b) from t1 group by a;
 
245
 
 
246
#
 
247
# long blobs
 
248
#
 
249
 
 
250
insert into t1 values (1, concat(repeat('1', 300), '2')), 
 
251
(1, concat(repeat('1', 300), '2')), (1, concat(repeat('0', 300), '1')), 
 
252
(2, concat(repeat('1', 300), '2')), (2, concat(repeat('1', 300), '2')), 
 
253
(2, concat(repeat('0', 300), '1'));
 
254
set local group_concat_max_len=1024;
 
255
select group_concat(b) from t1 group by a;
 
256
select group_concat(distinct b) from t1 group by a;
 
257
select group_concat(b order by b) from t1 group by a;
 
258
select group_concat(distinct b order by b) from t1 group by a;
 
259
set local group_concat_max_len=400;
 
260
select group_concat(b) from t1 group by a;
 
261
select group_concat(distinct b) from t1 group by a;
 
262
select group_concat(b order by b) from t1 group by a;
 
263
select group_concat(distinct b order by b) from t1 group by a;
 
264
 
 
265
drop table t1;
 
266
 
 
267
#
 
268
# Bug#10201
 
269
#
 
270
create table t1 (a varchar(255), b varchar(255) );
 
271
insert into t1 values ('xxx','yyy');
 
272
select collation(a) from t1;
 
273
select collation(group_concat(a)) from t1;
 
274
create table t2 select group_concat(a) as a from t1;
 
275
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
 
276
show create table t2;
 
277
select collation(group_concat(a,b)) from t1;
 
278
drop table t1;
 
279
drop table t2;
 
280
 
 
281
#
 
282
# Bug #12829
 
283
# Cannot convert the charset of a GROUP_CONCAT result
 
284
#
 
285
#CREATE TABLE t1 (a VARCHAR(10));
 
286
#INSERT INTO t1 VALUES ('�');
 
287
#SELECT a FROM t1;
 
288
#SELECT GROUP_CONCAT(a) FROM t1;
 
289
#DROP TABLE t1;
 
290
 
 
291
#
 
292
# bug #7769: group_concat returning null is checked in having
 
293
#
 
294
CREATE TABLE t1 (id int);
 
295
SELECT GROUP_CONCAT(id) AS gc FROM t1 HAVING gc IS NULL;
 
296
DROP TABLE t1;
 
297
 
 
298
#
 
299
# Bug #8656: Crash with group_concat on alias in outer table
 
300
#
 
301
create table t2 (a int, b int);
 
302
insert into t2 values (1,1), (2,2);
 
303
select  b x, (select group_concat(x) from t2) from  t2;
 
304
drop table t2;
 
305
 
 
306
#
 
307
# Bug #7405: problems with rollup
 
308
#
 
309
 
 
310
create table t1 (d int not null auto_increment,primary key(d), a int, b int, c int);
 
311
insert into t1(a,b) values (1,3), (1,4), (1,2), (2,7), (1,1), (1,2), (2,3), (2,3);
 
312
select d,a,b from t1 order by a;
 
313
explain select a, group_concat(b) from t1 group by a with rollup;
 
314
select a, group_concat(b) from t1 group by a with rollup;
 
315
select a, group_concat(distinct b) from t1 group by a with rollup;
 
316
select a, group_concat(b order by b) from t1 group by a with rollup;
 
317
select a, group_concat(distinct b order by b) from t1 group by a with rollup;
 
318
drop table t1;
 
319
 
 
320
#
 
321
# Bug #6475
 
322
#
 
323
create table t1 (a char(3), b char(20), primary key (a, b));
 
324
insert into t1 values ('ABW', 'Dutch'), ('ABW', 'English');
 
325
select group_concat(a) from t1 group by b;
 
326
drop table t1;
 
327
#
 
328
# Bug #12095: GROUP_CONCAT for one row table 
 
329
#
 
330
 
 
331
CREATE TABLE t1 (
 
332
  aID int NOT NULL auto_increment,
 
333
  sometitle varchar(155) NOT NULL default '',
 
334
  bID int NOT NULL,
 
335
  PRIMARY KEY  (aID),
 
336
  UNIQUE KEY sometitle (sometitle)
 
337
);
 
338
INSERT INTO t1 SET sometitle = 'title1', bID = 1;
 
339
INSERT INTO t1 SET sometitle = 'title2', bID = 1;
 
340
 
 
341
CREATE TABLE t2 (
 
342
  bID int NOT NULL auto_increment,
 
343
  somename varchar(155) NOT NULL default '',
 
344
  PRIMARY KEY  (bID),
 
345
  UNIQUE KEY somename (somename)
 
346
);
 
347
INSERT INTO t2 SET somename = 'test';
 
348
 
 
349
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
 
350
  FROM t1 JOIN t2 ON t1.bID = t2.bID;
 
351
INSERT INTO t2 SET somename = 'test2';
 
352
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
 
353
  FROM t1 JOIN t2 ON t1.bID = t2.bID;
 
354
DELETE FROM t2 WHERE somename = 'test2';
 
355
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
 
356
  FROM t1 JOIN t2 ON t1.bID = t2.bID;
 
357
 
 
358
DROP TABLE t1,t2;
 
359
 
 
360
#
 
361
# Bug #12859 group_concat in subquery cause incorrect not null
 
362
#
 
363
create table t1 ( a int not null default 0);
 
364
select * from (select group_concat(a) from t1) t2;
 
365
select group_concat('x') UNION ALL select 1;
 
366
drop table t1;
 
367
 
 
368
#
 
369
# Bug #12863 : missing separators after first empty cancatanated elements
 
370
#
 
371
 
 
372
CREATE TABLE t1 (id int, a varchar(9));
 
373
INSERT INTO t1 VALUES
 
374
  (2, ''), (1, ''), (2, 'x'), (1, 'y'), (3, 'z'), (3, '');
 
375
 
 
376
SELECT GROUP_CONCAT(a) FROM t1;
 
377
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1;
 
378
 
 
379
SELECT GROUP_CONCAT(a) FROM t1 GROUP BY id;
 
380
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY id;
 
381
 
 
382
DROP TABLE t1;
 
383
 
 
384
#
 
385
# Bug #15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
 
386
#
 
387
create table t1(f1 int);
 
388
insert into t1 values(1),(2),(3);
 
389
select f1, group_concat(f1+1) from t1 group by f1 with rollup;
 
390
select count(distinct (f1+1)) from t1 group by f1 with rollup;
 
391
drop table t1;
 
392
 
 
393
#
 
394
# Bug#14169 type of group_concat() result changed to blob if tmp_table was used
 
395
#
 
396
create table t1 (f1 int, f2 varchar(255));
 
397
insert into t1 values (1,repeat('a',255)),(2,repeat('b',255));
 
398
--enable_metadata
 
399
select f2,group_concat(f1) from t1 group by f2;
 
400
--disable_metadata
 
401
drop table t1;
 
402
 
 
403
# End of 4.1 tests
 
404
 
 
405
#
 
406
# Bug#8568 "GROUP_CONCAT returns string, unless in a UNION in which case
 
407
# returns BLOB": add a test case, the bug can not be repeated any more.
 
408
#
 
409
 
 
410
create table t1 (a char, b char);
 
411
insert into t1 values ('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'b');
 
412
create table t2 select group_concat(b) as a from t1 where a = 'a';
 
413
create table t3 (select group_concat(a) as a from t1 where a = 'a') union
 
414
                (select group_concat(b) as a from t1 where a = 'b');
 
415
drop table t1, t2, t3;
 
416
 
 
417
#
 
418
# Bug #16712: group_concat returns odd string instead of intended result
 
419
#
 
420
CREATE TABLE t1 (a INT, b LONGTEXT, PRIMARY KEY (a));
 
421
 
 
422
SET GROUP_CONCAT_MAX_LEN = 20000000;
 
423
 
 
424
INSERT INTO t1 VALUES (1,REPEAT(CONCAT('A',CAST(CHAR(0) AS BINARY),'B'), 40000));
 
425
INSERT INTO t1 SELECT a + 1, b FROM t1;
 
426
 
 
427
SELECT a, CHAR_LENGTH(b) FROM t1;
 
428
SELECT CHAR_LENGTH( GROUP_CONCAT(b) ) FROM t1;
 
429
SET GROUP_CONCAT_MAX_LEN = 1024;
 
430
DROP TABLE t1;
 
431
 
 
432
#
 
433
# Bug #22015: crash with GROUP_CONCAT over a derived table that 
 
434
#             returns the results of aggregation by GROUP_CONCAT  
 
435
#
 
436
 
 
437
CREATE TABLE t1 (a int, b int);
 
438
 
 
439
INSERT INTO t1 VALUES (2,1), (1,2), (2,2), (1,3);
 
440
 
 
441
SELECT GROUP_CONCAT(a), x 
 
442
  FROM (SELECT a, GROUP_CONCAT(b) x FROM t1 GROUP BY a) AS s
 
443
    GROUP BY x;
 
444
 
 
445
DROP TABLE t1;
 
446
#
 
447
# Bug#23451 GROUP_CONCAT truncates a multibyte utf8 character
 
448
#
 
449
create table t1
 
450
(
 
451
  x text not null,
 
452
  y integer not null
 
453
);
 
454
insert into t1 values (repeat('a', 1022), 0), (repeat( 0xc3b7, 4), 0);
 
455
let $1= 10;
 
456
while ($1)
 
457
{
 
458
  eval set group_concat_max_len= 1022 + $1;
 
459
  --disable_result_log
 
460
  select @x:=group_concat(x) from t1 group by y;
 
461
  --enable_result_log
 
462
  select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
 
463
  dec $1;
 
464
}
 
465
drop table t1;
 
466
set group_concat_max_len=1024;
 
467
 
 
468
#
 
469
# Bug#14169 type of group_concat() result changed to blob if tmp_table was used
 
470
#
 
471
create table t1 (f1 int, f2 varchar(255));
 
472
insert into t1 values (1,repeat('a',255)),(2,repeat('b',255));
 
473
--enable_metadata
 
474
select f2,group_concat(f1) from t1 group by f2;
 
475
--disable_metadata
 
476
drop table t1;
 
477
 
 
478
#
 
479
# Bug #26815: Unexpected built-in function behavior: group_concat(distinct
 
480
# substring_index())
 
481
 
482
CREATE TABLE t1(a TEXT, b CHAR(20));
 
483
INSERT INTO t1 VALUES ("one.1","one.1"),("two.2","two.2"),("one.3","one.3");
 
484
SELECT GROUP_CONCAT(DISTINCT UCASE(a)) FROM t1;
 
485
SELECT GROUP_CONCAT(DISTINCT UCASE(b)) FROM t1;
 
486
DROP TABLE t1;
 
487
 
 
488
#
 
489
# Bug #28273: GROUP_CONCAT and ORDER BY: No warning when result gets truncated.
 
490
#
 
491
CREATE TABLE t1( a VARCHAR( 10 ), b INT );
 
492
INSERT INTO t1 VALUES ( repeat( 'a', 10 ), 1), 
 
493
                      ( repeat( 'b', 10 ), 2);
 
494
SET group_concat_max_len = 20;
 
495
SELECT GROUP_CONCAT( a ) FROM t1;
 
496
SELECT GROUP_CONCAT( DISTINCT a ) FROM t1;  
 
497
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;          
 
498
SELECT GROUP_CONCAT( DISTINCT a ORDER BY b ) FROM t1; 
 
499
SET group_concat_max_len = DEFAULT;
 
500
DROP TABLE t1;
 
501
# Bug #23856:GROUP_CONCAT and ORDER BY: junk from previous rows for query on I_S
 
502
#
 
503
SET group_concat_max_len= 65535;
 
504
CREATE TABLE t1( a TEXT, b INTEGER );
 
505
INSERT INTO t1 VALUES ( 'a', 0 ), ( 'b', 1 );
 
506
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;
 
507
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
 
508
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
 
509
SET group_concat_max_len= 10;
 
510
SELECT GROUP_CONCAT(a ORDER BY b) FROM t1;
 
511
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
 
512
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
 
513
 
 
514
SET group_concat_max_len= 65535;
 
515
CREATE TABLE t2( a TEXT );
 
516
INSERT INTO t2 VALUES( REPEAT( 'a', 5000 ) );
 
517
INSERT INTO t2 VALUES( REPEAT( 'b', 5000 ) );
 
518
INSERT INTO t2 VALUES( REPEAT( 'a', 5000 ) );
 
519
SELECT LENGTH( GROUP_CONCAT( DISTINCT a ) ) FROM t2;
 
520
 
 
521
CREATE TABLE t3( a TEXT, b INT  );
 
522
INSERT INTO t3 VALUES( REPEAT( 'a', 65534 ), 1 );
 
523
INSERT INTO t3 VALUES( REPEAT( 'a', 65535 ), 2 );
 
524
INSERT INTO t3 VALUES( REPEAT( 'a', 65533 ), 3 );
 
525
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 1;
 
526
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 2;
 
527
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 3;
 
528
 
 
529
SET group_concat_max_len= DEFAULT;
 
530
DROP TABLE t1, t2, t3;
 
531
 
 
532
#
 
533
# Bug#29850: Wrong charset of the GROUP_CONCAT result when the select employs
 
534
#            a temporary table.
 
535
#
 
536
#create table t1 (id int, name varchar(20));
 
537
#insert into t1 (id, name) values (1, "�ra");
 
538
#insert into t1 (id, name) values (2, "�ra");
 
539
#select b.id, group_concat(b.name) from t1 a, t1 b group by b.id;
 
540
#drop table t1;
 
541
 
 
542
#
 
543
# Bug#30897 GROUP_CONCAT returns extra comma on empty fields
 
544
#
 
545
create table t1 (f1 char(20));
 
546
insert into t1 values (''),('');
 
547
select group_concat(distinct f1) from t1;
 
548
select group_concat(f1) from t1;
 
549
drop table t1;
 
550
# Bug#32798: DISTINCT in GROUP_CONCAT clause fails when ordering by a column
 
551
# with null values
 
552
#'
 
553
CREATE TABLE t1 (a INT, b INT);
 
554
 
 
555
INSERT INTO t1 VALUES (1, 1), (2, 2), (2, 3);
 
556
 
 
557
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
 
558
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b DESC) FROM t1;
 
559
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
 
560
 
 
561
SELECT GROUP_CONCAT(DISTINCT a + 1 ORDER BY 3 - b) FROM t1;
 
562
SELECT GROUP_CONCAT(DISTINCT a + 1 ORDER BY b) FROM t1;
 
563
SELECT GROUP_CONCAT(a ORDER BY 3 - b) FROM t1;
 
564
 
 
565
CREATE TABLE t2 (a INT, b INT, c INT, d INT);
 
566
 
 
567
# There is one duplicate in the expression list: 1,10
 
568
# There is one duplicate in ORDER BY list, but that shouldnt matter: 1,10
 
569
INSERT INTO t2 VALUES (1,1, 1,1), (1,1, 2,2), (1,2, 2,1), (2,1, 1,2);
 
570
 
 
571
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY c, d) FROM t2;
 
572
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY d, c) FROM t2;
 
573
 
 
574
CREATE TABLE t3 (a INT, b INT, c INT);
 
575
 
 
576
INSERT INTO t3 VALUES (1, 1, 1), (2, 1, 2), (3, 2, 1);
 
577
 
 
578
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY b, c) FROM t3;
 
579
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY c, b) FROM t3;
 
580
 
 
581
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY a, b) FROM t1;
 
582
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY a, b) FROM t1;
 
583
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY b, a) FROM t1;
 
584
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY a, b) FROM t1;
 
585
SELECT GROUP_CONCAT(DISTINCT a ORDER BY a, b) FROM t1;
 
586
SELECT GROUP_CONCAT(DISTINCT b ORDER BY b, a) FROM t1;
 
587
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY a) FROM t1;
 
588
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY b) FROM t1;
 
589
 
 
590
DROP TABLE t1, t2, t3;
 
591
 
 
592
#
 
593
# Bug #34747: crash in debug assertion check after derived table
 
594
#
 
595
CREATE TABLE t1(a INT);
 
596
INSERT INTO t1 VALUES (),();
 
597
SELECT s1.d1 FROM
 
598
(
 
599
 SELECT
 
600
  t1.a as d1,
 
601
  GROUP_CONCAT(DISTINCT t1.a) AS d2
 
602
 FROM
 
603
  t1 AS t1,
 
604
  t1 AS t2
 
605
 GROUP BY 1
 
606
) AS s1;
 
607
DROP TABLE t1;
 
608
 
 
609
--echo End of 5.0 tests