~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
#
2
# simple test of group_concat function
3
#
4
--disable_warnings
5
drop table if exists t1, t2;
6
--enable_warnings
7
413.2.2 by Brian Aker
Removed UNSIGNED from parser.
8
create table t1 (grp int, a bigint, c char(10) not null, d char(10) not null);
1 by brian
clean slate
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
512 by Brian Aker
Adding back more test cases.
81
create table t1 ( URL_ID int, URL varchar(80));
82
create table t2 ( REQ_ID int, URL_ID int);
1 by brian
clean slate
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
512 by Brian Aker
Adding back more test cases.
134
CREATE TABLE t1 (id1 int NOT NULL, id2 int NOT NULL);
1 by brian
clean slate
135
INSERT INTO t1 VALUES (1, 1),(1, 2),(1, 3),(1, 4),(1, 5),(2, 1),(2, 2),(2, 3);
512 by Brian Aker
Adding back more test cases.
136
CREATE TABLE t2 (id1 int NOT NULL);
1 by brian
clean slate
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
#
512 by Brian Aker
Adding back more test cases.
270
create table t1 (a varchar(255), b varchar(255) );
1 by brian
clean slate
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
show create table t2;
276
select collation(group_concat(a,b)) from t1;
277
drop table t1;
278
drop table t2;
279
280
#
281
# Bug #12829
282
# Cannot convert the charset of a GROUP_CONCAT result
283
#
512 by Brian Aker
Adding back more test cases.
284
#CREATE TABLE t1 (a VARCHAR(10));
285
#INSERT INTO t1 VALUES ('À');
286
#SELECT a FROM t1;
287
#SELECT GROUP_CONCAT(a) FROM t1;
288
#DROP TABLE t1;
1 by brian
clean slate
289
290
#
291
# bug #7769: group_concat returning null is checked in having
292
#
293
CREATE TABLE t1 (id int);
294
SELECT GROUP_CONCAT(id) AS gc FROM t1 HAVING gc IS NULL;
295
DROP TABLE t1;
296
297
#
298
# Bug #8656: Crash with group_concat on alias in outer table
299
#
300
create table t2 (a int, b int);
301
insert into t2 values (1,1), (2,2);
302
select  b x, (select group_concat(x) from t2) from  t2;
303
drop table t2;
304
305
#
306
# Bug #7405: problems with rollup
307
#
308
309
create table t1 (d int not null auto_increment,primary key(d), a int, b int, c int);
310
insert into t1(a,b) values (1,3), (1,4), (1,2), (2,7), (1,1), (1,2), (2,3), (2,3);
311
select d,a,b from t1 order by a;
312
explain select a, group_concat(b) from t1 group by a with rollup;
313
select a, group_concat(b) from t1 group by a with rollup;
314
select a, group_concat(distinct b) from t1 group by a with rollup;
315
select a, group_concat(b order by b) from t1 group by a with rollup;
316
select a, group_concat(distinct b order by b) from t1 group by a with rollup;
317
drop table t1;
318
319
#
320
# Bug #6475
321
#
322
create table t1 (a char(3), b char(20), primary key (a, b));
323
insert into t1 values ('ABW', 'Dutch'), ('ABW', 'English');
324
select group_concat(a) from t1 group by b;
325
drop table t1;
326
#
327
# Bug #12095: GROUP_CONCAT for one row table 
328
#
329
330
CREATE TABLE t1 (
512 by Brian Aker
Adding back more test cases.
331
  aID int NOT NULL auto_increment,
332
  sometitle varchar(155) NOT NULL default '',
333
  bID int NOT NULL,
1 by brian
clean slate
334
  PRIMARY KEY  (aID),
335
  UNIQUE KEY sometitle (sometitle)
336
);
337
INSERT INTO t1 SET sometitle = 'title1', bID = 1;
338
INSERT INTO t1 SET sometitle = 'title2', bID = 1;
339
340
CREATE TABLE t2 (
512 by Brian Aker
Adding back more test cases.
341
  bID int NOT NULL auto_increment,
342
  somename varchar(155) NOT NULL default '',
1 by brian
clean slate
343
  PRIMARY KEY  (bID),
344
  UNIQUE KEY somename (somename)
345
);
346
INSERT INTO t2 SET somename = 'test';
347
348
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
349
  FROM t1 JOIN t2 ON t1.bID = t2.bID;
350
INSERT INTO t2 SET somename = 'test2';
351
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
352
  FROM t1 JOIN t2 ON t1.bID = t2.bID;
353
DELETE FROM t2 WHERE somename = 'test2';
354
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
355
  FROM t1 JOIN t2 ON t1.bID = t2.bID;
356
357
DROP TABLE t1,t2;
358
359
#
360
# Bug #12859 group_concat in subquery cause incorrect not null
361
#
362
create table t1 ( a int not null default 0);
363
select * from (select group_concat(a) from t1) t2;
364
select group_concat('x') UNION ALL select 1;
365
drop table t1;
366
367
#
368
# Bug #12863 : missing separators after first empty cancatanated elements
369
#
370
371
CREATE TABLE t1 (id int, a varchar(9));
372
INSERT INTO t1 VALUES
373
  (2, ''), (1, ''), (2, 'x'), (1, 'y'), (3, 'z'), (3, '');
374
375
SELECT GROUP_CONCAT(a) FROM t1;
376
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1;
377
378
SELECT GROUP_CONCAT(a) FROM t1 GROUP BY id;
379
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY id;
380
381
DROP TABLE t1;
382
383
#
384
# Bug #15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
385
#
386
create table t1(f1 int);
387
insert into t1 values(1),(2),(3);
388
select f1, group_concat(f1+1) from t1 group by f1 with rollup;
389
select count(distinct (f1+1)) from t1 group by f1 with rollup;
390
drop table t1;
391
392
#
393
# Bug#14169 type of group_concat() result changed to blob if tmp_table was used
394
#
413.2.2 by Brian Aker
Removed UNSIGNED from parser.
395
create table t1 (f1 int, f2 varchar(255));
1 by brian
clean slate
396
insert into t1 values (1,repeat('a',255)),(2,repeat('b',255));
397
--enable_metadata
398
select f2,group_concat(f1) from t1 group by f2;
399
--disable_metadata
400
drop table t1;
401
402
# End of 4.1 tests
403
404
#
405
# Bug#8568 "GROUP_CONCAT returns string, unless in a UNION in which case
406
# returns BLOB": add a test case, the bug can not be repeated any more.
407
#
408
409
create table t1 (a char, b char);
410
insert into t1 values ('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'b');
411
create table t2 select group_concat(b) as a from t1 where a = 'a';
412
create table t3 (select group_concat(a) as a from t1 where a = 'a') union
413
                (select group_concat(b) as a from t1 where a = 'b');
414
drop table t1, t2, t3;
415
416
#
417
# Bug #16712: group_concat returns odd string instead of intended result
418
#
512 by Brian Aker
Adding back more test cases.
419
CREATE TABLE t1 (a INT, b LONGTEXT, PRIMARY KEY (a));
1 by brian
clean slate
420
421
SET GROUP_CONCAT_MAX_LEN = 20000000;
422
423
INSERT INTO t1 VALUES (1,REPEAT(CONCAT('A',CAST(CHAR(0) AS BINARY),'B'), 40000));
424
INSERT INTO t1 SELECT a + 1, b FROM t1;
425
426
SELECT a, CHAR_LENGTH(b) FROM t1;
427
SELECT CHAR_LENGTH( GROUP_CONCAT(b) ) FROM t1;
428
SET GROUP_CONCAT_MAX_LEN = 1024;
429
DROP TABLE t1;
430
431
#
432
# Bug #22015: crash with GROUP_CONCAT over a derived table that 
433
#             returns the results of aggregation by GROUP_CONCAT  
434
#
435
436
CREATE TABLE t1 (a int, b int);
437
438
INSERT INTO t1 VALUES (2,1), (1,2), (2,2), (1,3);
439
440
SELECT GROUP_CONCAT(a), x 
441
  FROM (SELECT a, GROUP_CONCAT(b) x FROM t1 GROUP BY a) AS s
442
    GROUP BY x;
443
444
DROP TABLE t1;
445
#
446
# Bug#23451 GROUP_CONCAT truncates a multibyte utf8 character
447
#
448
create table t1
449
(
512 by Brian Aker
Adding back more test cases.
450
  x text not null,
1 by brian
clean slate
451
  y integer not null
452
);
453
insert into t1 values (repeat('a', 1022), 0), (repeat(_utf8 0xc3b7, 4), 0);
454
let $1= 10;
455
while ($1)
456
{
457
  eval set group_concat_max_len= 1022 + $1;
458
  --disable_result_log
459
  select @x:=group_concat(x) from t1 group by y;
460
  --enable_result_log
461
  select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
462
  dec $1;
463
}
464
drop table t1;
465
set group_concat_max_len=1024;
466
467
#
468
# Bug#14169 type of group_concat() result changed to blob if tmp_table was used
469
#
413.2.2 by Brian Aker
Removed UNSIGNED from parser.
470
create table t1 (f1 int, f2 varchar(255));
1 by brian
clean slate
471
insert into t1 values (1,repeat('a',255)),(2,repeat('b',255));
472
--enable_metadata
473
select f2,group_concat(f1) from t1 group by f2;
474
--disable_metadata
475
drop table t1;
476
477
#
478
# Bug #26815: Unexpected built-in function behavior: group_concat(distinct
479
# substring_index())
480
# 
481
CREATE TABLE t1(a TEXT, b CHAR(20));
482
INSERT INTO t1 VALUES ("one.1","one.1"),("two.2","two.2"),("one.3","one.3");
483
SELECT GROUP_CONCAT(DISTINCT UCASE(a)) FROM t1;
484
SELECT GROUP_CONCAT(DISTINCT UCASE(b)) FROM t1;
485
DROP TABLE t1;
486
487
#
488
# Bug #28273: GROUP_CONCAT and ORDER BY: No warning when result gets truncated.
489
#
490
CREATE TABLE t1( a VARCHAR( 10 ), b INT );
491
INSERT INTO t1 VALUES ( repeat( 'a', 10 ), 1), 
492
                      ( repeat( 'b', 10 ), 2);
493
SET group_concat_max_len = 20;
494
SELECT GROUP_CONCAT( a ) FROM t1;
495
SELECT GROUP_CONCAT( DISTINCT a ) FROM t1;  
496
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;          
497
SELECT GROUP_CONCAT( DISTINCT a ORDER BY b ) FROM t1; 
498
SET group_concat_max_len = DEFAULT;
499
DROP TABLE t1;
500
# Bug #23856:GROUP_CONCAT and ORDER BY: junk from previous rows for query on I_S
501
#
502
SET group_concat_max_len= 65535;
503
CREATE TABLE t1( a TEXT, b INTEGER );
504
INSERT INTO t1 VALUES ( 'a', 0 ), ( 'b', 1 );
505
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;
506
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
507
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
508
SET group_concat_max_len= 10;
509
SELECT GROUP_CONCAT(a ORDER BY b) FROM t1;
510
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
511
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
512
513
SET group_concat_max_len= 65535;
514
CREATE TABLE t2( a TEXT );
515
INSERT INTO t2 VALUES( REPEAT( 'a', 5000 ) );
516
INSERT INTO t2 VALUES( REPEAT( 'b', 5000 ) );
517
INSERT INTO t2 VALUES( REPEAT( 'a', 5000 ) );
518
SELECT LENGTH( GROUP_CONCAT( DISTINCT a ) ) FROM t2;
519
520
CREATE TABLE t3( a TEXT, b INT  );
521
INSERT INTO t3 VALUES( REPEAT( 'a', 65534 ), 1 );
522
INSERT INTO t3 VALUES( REPEAT( 'a', 65535 ), 2 );
523
INSERT INTO t3 VALUES( REPEAT( 'a', 65533 ), 3 );
524
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 1;
525
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 2;
526
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 3;
527
528
SET group_concat_max_len= DEFAULT;
529
DROP TABLE t1, t2, t3;
530
531
#
532
# Bug#29850: Wrong charset of the GROUP_CONCAT result when the select employs
533
#            a temporary table.
534
#
512 by Brian Aker
Adding back more test cases.
535
#create table t1 (id int, name varchar(20));
536
#insert into t1 (id, name) values (1, "óra");
537
#insert into t1 (id, name) values (2, "óra");
538
#select b.id, group_concat(b.name) from t1 a, t1 b group by b.id;
539
#drop table t1;
1 by brian
clean slate
540
541
#
542
# Bug#30897 GROUP_CONCAT returns extra comma on empty fields
543
#
544
create table t1 (f1 char(20));
545
insert into t1 values (''),('');
546
select group_concat(distinct f1) from t1;
547
select group_concat(f1) from t1;
548
drop table t1;
549
# Bug#32798: DISTINCT in GROUP_CONCAT clause fails when ordering by a column
550
# with null values
551
#'
552
CREATE TABLE t1 (a INT, b INT);
553
554
INSERT INTO t1 VALUES (1, 1), (2, 2), (2, 3);
555
556
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
557
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b DESC) FROM t1;
558
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
559
560
SELECT GROUP_CONCAT(DISTINCT a + 1 ORDER BY 3 - b) FROM t1;
561
SELECT GROUP_CONCAT(DISTINCT a + 1 ORDER BY b) FROM t1;
562
SELECT GROUP_CONCAT(a ORDER BY 3 - b) FROM t1;
563
564
CREATE TABLE t2 (a INT, b INT, c INT, d INT);
565
566
# There is one duplicate in the expression list: 1,10
567
# There is one duplicate in ORDER BY list, but that shouldnt matter: 1,10
568
INSERT INTO t2 VALUES (1,1, 1,1), (1,1, 2,2), (1,2, 2,1), (2,1, 1,2);
569
570
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY c, d) FROM t2;
571
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY d, c) FROM t2;
572
573
CREATE TABLE t3 (a INT, b INT, c INT);
574
575
INSERT INTO t3 VALUES (1, 1, 1), (2, 1, 2), (3, 2, 1);
576
577
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY b, c) FROM t3;
578
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY c, b) FROM t3;
579
580
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY a, b) FROM t1;
581
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY a, b) FROM t1;
582
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY b, a) FROM t1;
583
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY a, b) FROM t1;
584
SELECT GROUP_CONCAT(DISTINCT a ORDER BY a, b) FROM t1;
585
SELECT GROUP_CONCAT(DISTINCT b ORDER BY b, a) FROM t1;
586
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY a) FROM t1;
587
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY b) FROM t1;
588
589
DROP TABLE t1, t2, t3;
590
591
#
592
# Bug #34747: crash in debug assertion check after derived table
593
#
594
CREATE TABLE t1(a INT);
595
INSERT INTO t1 VALUES (),();
596
SELECT s1.d1 FROM
597
(
598
 SELECT
599
  t1.a as d1,
600
  GROUP_CONCAT(DISTINCT t1.a) AS d2
601
 FROM
602
  t1 AS t1,
603
  t1 AS t2
604
 GROUP BY 1
605
) AS s1;
606
DROP TABLE t1;
607
608
--echo End of 5.0 tests