~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/func_gconcat.test

  • Committer: Monty Taylor
  • Date: 2008-09-15 17:24:04 UTC
  • Revision ID: monty@inaugust.com-20080915172404-ygh6hiyu0q7qpa9x
Removed strndup calls.

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
 
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
 
#
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;
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 (
331
 
  aID int NOT NULL auto_increment,
332
 
  sometitle varchar(155) NOT NULL default '',
333
 
  bID int NOT NULL,
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 (
341
 
  bID int NOT NULL auto_increment,
342
 
  somename varchar(155) NOT NULL default '',
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
 
#
395
 
create table t1 (f1 int, f2 varchar(255));
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
 
#
419
 
CREATE TABLE t1 (a INT, b LONGTEXT, PRIMARY KEY (a));
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
 
(
450
 
  x text not null,
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
 
#
470
 
create table t1 (f1 int, f2 varchar(255));
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
 
#
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;
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