~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
2201.1.3 by Olaf van der Spek
Fix EOL
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;
1 by brian
clean slate
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
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
72
--error ER_INVALID_GROUP_FUNC_USE
1 by brian
clean slate
73
select group_concat(sum(c)) from t1 group by grp;
1731.3.1 by Lee Bieber
change tests to use enum values instead of error numbers
74
--error ER_BAD_FIELD_ERROR
1 by brian
clean slate
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);
2141.4.2 by Andrew Hutchings
Implicit joins of the form "SELECT * FROM t1, t2" without WHERE or ON now error.
107
select group_concat(t1.id) FROM t1,t2 where t2.id < 2;
1 by brian
clean slate
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);
2141.4.2 by Andrew Hutchings
Implicit joins of the form "SELECT * FROM t1, t2" without WHERE or ON now error.
193
SELECT GROUP_CONCAT(t1.a*t2.a ORDER BY t2.a) FROM t1, t2 WHERE t1.a < 3 GROUP BY t1.a;
1 by brian
clean slate
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;
942.3.1 by Vladimir Kolesnikov
test generalizations
275
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
1 by brian
clean slate
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
#
512 by Brian Aker
Adding back more test cases.
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;
1 by brian
clean slate
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 (
512 by Brian Aker
Adding back more test cases.
332
  aID int NOT NULL auto_increment,
333
  sometitle varchar(155) NOT NULL default '',
334
  bID int NOT NULL,
1 by brian
clean slate
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 (
512 by Brian Aker
Adding back more test cases.
342
  bID int NOT NULL auto_increment,
343
  somename varchar(155) NOT NULL default '',
1 by brian
clean slate
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
#
413.2.2 by Brian Aker
Removed UNSIGNED from parser.
396
create table t1 (f1 int, f2 varchar(255));
1 by brian
clean slate
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
#
512 by Brian Aker
Adding back more test cases.
420
CREATE TABLE t1 (a INT, b LONGTEXT, PRIMARY KEY (a));
1 by brian
clean slate
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
(
512 by Brian Aker
Adding back more test cases.
451
  x text not null,
1 by brian
clean slate
452
  y integer not null
453
);
779.3.10 by Monty Taylor
Turned on -Wshadow.
454
insert into t1 values (repeat('a', 1022), 0), (repeat( 0xc3b7, 4), 0);
1 by brian
clean slate
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
#
413.2.2 by Brian Aker
Removed UNSIGNED from parser.
471
create table t1 (f1 int, f2 varchar(255));
1 by brian
clean slate
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
#
512 by Brian Aker
Adding back more test cases.
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;
1 by brian
clean slate
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
2141.4.2 by Andrew Hutchings
Implicit joins of the form "SELECT * FROM t1, t2" without WHERE or ON now error.
605
 WHERE t2.a IS NULL
1 by brian
clean slate
606
 GROUP BY 1
607
) AS s1;
608
DROP TABLE t1;
609
610
--echo End of 5.0 tests