~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/distinct.test

  • Committer: Brian Aker
  • Date: 2008-07-16 01:30:24 UTC
  • Revision ID: brian@tangent.org-20080716013024-nmnogwdpa459jrch
First pass of cleanup

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#
2
 
# Bug with distinct and INSERT INTO
3
 
# Bug with group by and not used fields
4
 
#
5
 
 
6
 
--disable_warnings
7
 
drop table if exists t1,t2,t3;
8
 
--enable_warnings
9
 
 
10
 
CREATE TABLE t1 (id int,facility char(20));
11
 
CREATE TABLE t2 (facility char(20));
12
 
INSERT INTO t1 VALUES (NULL,NULL);
13
 
INSERT INTO t1 VALUES (-1,'');
14
 
INSERT INTO t1 VALUES (0,'');
15
 
INSERT INTO t1 VALUES (1,'/L');
16
 
INSERT INTO t1 VALUES (2,'A01');
17
 
INSERT INTO t1 VALUES (3,'ANC');
18
 
INSERT INTO t1 VALUES (4,'F01');
19
 
INSERT INTO t1 VALUES (5,'FBX');
20
 
INSERT INTO t1 VALUES (6,'MT');
21
 
INSERT INTO t1 VALUES (7,'P');
22
 
INSERT INTO t1 VALUES (8,'RV');
23
 
INSERT INTO t1 VALUES (9,'SRV');
24
 
INSERT INTO t1 VALUES (10,'VMT');
25
 
INSERT INTO t2 SELECT DISTINCT FACILITY FROM t1;
26
 
 
27
 
select id from t1 group by id;
28
 
select * from t1 order by id;
29
 
select id-5,facility from t1 order by "id-5";
30
 
select id,concat(facility) from t1 group by id ;
31
 
select id+0 as a,max(id),concat(facility) as b from t1 group by a order by b desc,a;
32
 
select id >= 0 and id <= 5 as grp,count(*) from t1 group by grp;
33
 
 
34
 
SELECT DISTINCT FACILITY FROM t1;
35
 
SELECT FACILITY FROM t2;
36
 
SELECT count(*) from t1,t2 where t1.facility=t2.facility;
37
 
select count(facility) from t1;
38
 
select count(*) from t1;
39
 
select count(*) from t1 where facility IS NULL;
40
 
select count(*) from t1 where facility = NULL;
41
 
select count(*) from t1 where facility IS NOT NULL;
42
 
select count(*) from t1 where id IS NULL;
43
 
select count(*) from t1 where id IS NOT NULL;
44
 
 
45
 
drop table t1,t2;
46
 
 
47
 
#
48
 
# Problem with distinct without results
49
 
#
50
 
CREATE TABLE t1 (UserId int DEFAULT '0' NOT NULL);
51
 
INSERT INTO t1 VALUES (20);
52
 
INSERT INTO t1 VALUES (27);
53
 
 
54
 
SELECT UserId FROM t1 WHERE Userid=22;
55
 
SELECT UserId FROM t1 WHERE UserId=22 group by Userid;
56
 
SELECT DISTINCT UserId FROM t1 WHERE UserId=22 group by Userid;
57
 
SELECT DISTINCT UserId FROM t1 WHERE UserId=22;
58
 
drop table t1;
59
 
 
60
 
#
61
 
# Test of distinct
62
 
#
63
 
 
64
 
CREATE TABLE t1 (a int not null primary key,b int);
65
 
INSERT INTO t1 VALUES (1,1),(2,1),(3,1),(4,1);
66
 
CREATE TABLE t2 (a int not null, key (A));
67
 
INSERT INTO t2 VALUES (1),(2);
68
 
CREATE TABLE t3 (a int, key(A), b text);
69
 
INSERT INTO t3 VALUES (1,'1'),(2,'2');
70
 
SELECT DISTINCT t3.b FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
71
 
INSERT INTO t2 values (1),(2),(3);
72
 
INSERT INTO t3 VALUES (1,'1'),(2,'2'),(1,'1'),(2,'2');
73
 
explain SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
74
 
SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
75
 
 
76
 
# Create a lot of data into t3;
77
 
create temporary table t4 select * from t3;
78
 
insert into t3 select * from t4;
79
 
insert into t4 select * from t3;
80
 
insert into t3 select * from t4;
81
 
insert into t4 select * from t3;
82
 
insert into t3 select * from t4;
83
 
insert into t4 select * from t3;
84
 
insert into t3 select * from t4;
85
 
 
86
 
explain select distinct t1.a from t1,t3 where t1.a=t3.a;
87
 
#flush status;
88
 
select distinct t1.a from t1,t3 where t1.a=t3.a;
89
 
#show status like 'Handler%';
90
 
#flush status;
91
 
select distinct 1 from t1,t3 where t1.a=t3.a;
92
 
#show status like 'Handler%';
93
 
 
94
 
explain SELECT distinct t1.a from t1;
95
 
explain SELECT distinct t1.a from t1 order by a desc;
96
 
explain SELECT t1.a from t1 group by a order by a desc;
97
 
explain SELECT distinct t1.a from t1 order by a desc limit 1;
98
 
explain SELECT distinct a from t3 order by a desc limit 2;
99
 
explain SELECT distinct a,b from t3 order by a+1;
100
 
explain SELECT distinct a,b from t3 order by a limit 2;
101
 
explain SELECT a,b from t3 group by a,b order by a+1;
102
 
 
103
 
drop table t1,t2,t3,t4;
104
 
 
105
 
CREATE TABLE t1 (name varchar(255));
106
 
INSERT INTO t1 VALUES ('aa'),('ab'),('ac'),('ad'),('ae');
107
 
SELECT DISTINCT * FROM t1 LIMIT 2;
108
 
SELECT DISTINCT name FROM t1 LIMIT 2;
109
 
SELECT DISTINCT 1 FROM t1 LIMIT 2;
110
 
drop table t1;
111
 
 
112
 
CREATE TABLE t1 (
113
 
  ID int NOT NULL auto_increment,
114
 
  NAME varchar(75) DEFAULT '' NOT NULL,
115
 
  LINK_ID int DEFAULT '0' NOT NULL,
116
 
  PRIMARY KEY (ID),
117
 
  KEY NAME (NAME),
118
 
  KEY LINK_ID (LINK_ID)
119
 
);
120
 
 
121
 
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (1,'Mike',0),(2,'Jack',0),(3,'Bill',0);
122
 
 
123
 
CREATE TABLE t2 (
124
 
  ID int NOT NULL auto_increment,
125
 
  NAME varchar(150) DEFAULT '' NOT NULL,
126
 
  PRIMARY KEY (ID),
127
 
  KEY NAME (NAME)
128
 
);
129
 
 
130
 
SELECT DISTINCT
131
 
    t2.id AS key_link_id,
132
 
    t2.name AS link
133
 
FROM t1
134
 
LEFT JOIN t2 ON t1.link_id=t2.id
135
 
GROUP BY t1.id
136
 
ORDER BY link;
137
 
drop table t1,t2;
138
 
 
139
 
#
140
 
# Problem with table dependencies
141
 
#
142
 
 
143
 
create table t1 (
144
 
    id          int not null,
145
 
    name        tinytext not null,
146
 
    unique      (id)
147
 
);
148
 
create table t2 (
149
 
    id          int not null,
150
 
    idx         int not null,
151
 
    unique      (id, idx)
152
 
);
153
 
create table t3 (
154
 
    id          int not null,
155
 
    idx         int not null,
156
 
    unique      (id, idx)
157
 
);
158
 
insert into t1 values (1,'yes'), (2,'no');
159
 
insert into t2 values (1,1);
160
 
insert into t3 values (1,1);
161
 
EXPLAIN
162
 
SELECT DISTINCT
163
 
    t1.id
164
 
from
165
 
    t1
166
 
    straight_join
167
 
    t2
168
 
    straight_join
169
 
    t3
170
 
    straight_join
171
 
    t1 as j_lj_t2 left join t2 as t2_lj
172
 
        on j_lj_t2.id=t2_lj.id
173
 
    straight_join
174
 
    t1 as j_lj_t3 left join t3 as t3_lj
175
 
        on j_lj_t3.id=t3_lj.id
176
 
WHERE
177
 
    ((t1.id=j_lj_t2.id AND t2_lj.id IS NULL) OR (t1.id=t2.id AND t2.idx=2))
178
 
    AND ((t1.id=j_lj_t3.id AND t3_lj.id IS NULL) OR (t1.id=t3.id AND t3.idx=2));
179
 
SELECT DISTINCT
180
 
    t1.id
181
 
from
182
 
    t1
183
 
    straight_join
184
 
    t2
185
 
    straight_join
186
 
    t3
187
 
    straight_join
188
 
    t1 as j_lj_t2 left join t2 as t2_lj
189
 
        on j_lj_t2.id=t2_lj.id
190
 
    straight_join
191
 
    t1 as j_lj_t3 left join t3 as t3_lj
192
 
        on j_lj_t3.id=t3_lj.id
193
 
WHERE
194
 
    ((t1.id=j_lj_t2.id AND t2_lj.id IS NULL) OR (t1.id=t2.id AND t2.idx=2))
195
 
    AND ((t1.id=j_lj_t3.id AND t3_lj.id IS NULL) OR (t1.id=t3.id AND t3.idx=2));
196
 
drop table t1,t2,t3;
197
 
 
198
 
#
199
 
# Test using DISTINCT on a function that contains a group function
200
 
# This also test the case when one doesn't use all fields in GROUP BY.
201
 
#
202
 
 
203
 
create table t1 (a int not null, b int not null, t time);
204
 
insert into t1 values (1,1,"00:06:15"),(1,2,"00:06:15"),(1,2,"00:30:15"),(1,3,"00:06:15"),(1,3,"00:30:15");
205
 
select a,sec_to_time(sum(time_to_sec(t))) from t1 group by a,b;
206
 
select distinct a,sec_to_time(sum(time_to_sec(t))) from t1 group by a,b;
207
 
create table t2 (a int not null primary key, b int);
208
 
insert into t2 values (1,1),(2,2),(3,3);
209
 
select t1.a,sec_to_time(sum(time_to_sec(t))) from t1 left join t2 on (t1.b=t2.a) group by t1.a,t2.b;
210
 
select distinct t1.a,sec_to_time(sum(time_to_sec(t))) from t1 left join t2 on (t1.b=t2.a) group by t1.a,t2.b;
211
 
drop table t1,t2;
212
 
 
213
 
#
214
 
# Test problem with DISTINCT and HAVING
215
 
#
216
 
create table t1 (a int not null,b char(5), c text);
217
 
insert into t1 (a) values (1),(2),(3),(4),(1),(2),(3),(4);
218
 
select distinct a from t1 group by b,a having a > 2 order by a desc;
219
 
select distinct a,c from t1 group by b,c,a having a > 2 order by a desc;
220
 
drop table t1;
221
 
 
222
 
#
223
 
# Test problem with DISTINCT and ORDER BY DESC
224
 
#
225
 
 
226
 
create table t1 (a char(1), key(a)) engine=myisam;
227
 
insert into t1 values('1'),('1');
228
 
select * from t1 where a >= '1'; 
229
 
select distinct a from t1 order by a desc;
230
 
select distinct a from t1 where a >= '1' order by a desc;
231
 
drop table t1;
232
 
 
233
 
#
234
 
# Test when using a not previously used column in ORDER BY
235
 
#
236
 
 
237
 
CREATE TABLE t1 (email varchar(50), infoID BIGINT, dateentered DATETIME);
238
 
CREATE TABLE t2 (infoID BIGINT, shipcode varchar(10));
239
 
 
240
 
INSERT INTO t1 (email, infoID, dateentered) VALUES
241
 
      ('test1@testdomain.com', 1, '2002-07-30 22:56:38'),
242
 
      ('test1@testdomain.com', 1, '2002-07-27 22:58:16'),
243
 
      ('test2@testdomain.com', 1, '2002-06-19 15:22:19'),
244
 
      ('test2@testdomain.com', 2, '2002-06-18 14:23:47'),
245
 
      ('test3@testdomain.com', 1, '2002-05-19 22:17:32');
246
 
 
247
 
INSERT INTO t2(infoID, shipcode) VALUES
248
 
      (1, 'Z001'),
249
 
      (2, 'R002');
250
 
 
251
 
SELECT DISTINCTROW email, shipcode FROM t1, t2 WHERE t1.infoID=t2.infoID;
252
 
SELECT DISTINCTROW email FROM t1 ORDER BY dateentered DESC;
253
 
SELECT DISTINCTROW email, shipcode FROM t1, t2 WHERE t1.infoID=t2.infoID ORDER BY dateentered DESC;
254
 
drop table t1,t2;
255
 
 
256
 
#
257
 
# test with table.* in DISTINCT
258
 
#
259
 
 
260
 
CREATE TABLE t1 (privatemessageid int NOT NULL auto_increment,  folderid int NOT NULL default '0',  userid int NOT NULL default '0',  touserid int NOT NULL default '0',  fromuserid int NOT NULL default '0',  title varchar(250) NOT NULL default '',  message mediumtext NOT NULL,  dateline int NOT NULL default '0',  showsignature int NOT NULL default '0',  iconid int NOT NULL default '0',  messageread int NOT NULL default '0',  readtime int NOT NULL default '0',  receipt int NOT NULL default '0',  deleteprompt int NOT NULL default '0',  multiplerecipients int NOT NULL default '0',  PRIMARY KEY  (privatemessageid),  KEY userid (userid)) ENGINE=MyISAM;
261
 
INSERT INTO t1 VALUES (128,0,33,33,8,':D','',996121863,1,0,2,996122850,2,0,0);
262
 
CREATE TABLE t2 (userid int NOT NULL auto_increment,  usergroupid int NOT NULL default '0',  username varchar(50) NOT NULL default '',  password varchar(50) NOT NULL default '',  email varchar(50) NOT NULL default '',  styleid int NOT NULL default '0',  parentemail varchar(50) NOT NULL default '',  coppauser int NOT NULL default '0',  homepage varchar(100) NOT NULL default '',  icq varchar(20) NOT NULL default '',  aim varchar(20) NOT NULL default '',  yahoo varchar(20) NOT NULL default '',  signature mediumtext NOT NULL,  adminemail int NOT NULL default '0',  showemail int NOT NULL default '0',  invisible int NOT NULL default '0',  usertitle varchar(250) NOT NULL default '',  customtitle int NOT NULL default '0',  joindate int NOT NULL default '0',  cookieuser int NOT NULL default '0',  daysprune int NOT NULL default '0',  lastvisit int NOT NULL default '0',  lastactivity int NOT NULL default '0',  lastpost int NOT NULL default '0',  posts int NOT NULL default '0',  timezoneoffset varchar(4) NOT NULL default '',  emailnotification int NOT NULL default '0',  buddylist mediumtext NOT NULL,  ignorelist mediumtext NOT NULL,  pmfolders mediumtext NOT NULL,  receivepm int NOT NULL default '0',  emailonpm int NOT NULL default '0',  pmpopup int NOT NULL default '0',  avatarid int NOT NULL default '0',  avatarrevision int NOT NULL default '0',  options int NOT NULL default '15',  birthday date NOT NULL default '0000-00-00',  maxposts int NOT NULL default '-1',  startofweek int NOT NULL default '1',  ipaddress varchar(20) NOT NULL default '',  referrerid int NOT NULL default '0',  nosessionhash int NOT NULL default '0',  autorefresh int NOT NULL default '-1',  messagepopup int NOT NULL default '0',  inforum int NOT NULL default '0',  ratenum int NOT NULL default '0',  ratetotal int NOT NULL default '0',  allowrate int NOT NULL default '1',  PRIMARY KEY  (userid),  KEY usergroupid (usergroupid),  KEY username (username),  KEY inforum (inforum)) ENGINE=MyISAM;
263
 
INSERT INTO t2 VALUES (33,6,'Kevin','0','kevin@stileproject.com',1,'',0,'http://www.stileproject.com','','','','',1,1,0,'Administrator',0,996120694,1,-1,1030996168,1031027028,1030599436,36,'-6',0,'','','',1,0,1,0,0,15,'0000-00-00',-1,1,'64.0.0.0',0,1,-1,0,0,4,19,1);
264
 
SELECT DISTINCT t1.*, t2.* FROM t1 LEFT JOIN t2 ON (t2.userid = t1.touserid);
265
 
DROP TABLE t1,t2;
266
 
 
267
 
#
268
 
# test with const_item in ORDER BY
269
 
#
270
 
 
271
 
CREATE TABLE t1 (a int primary key, b int, c int);
272
 
INSERT t1 VALUES (1,2,3);
273
 
CREATE TABLE t2 (a int primary key, b int, c int);
274
 
INSERT t2 VALUES (3,4,5);
275
 
SELECT DISTINCT t1.a, t2.b FROM t1, t2 WHERE t1.a=1 ORDER BY t2.c;
276
 
DROP TABLE t1,t2;
277
 
 
278
 
#
279
 
# Test of LEFT() with distinct
280
 
#
281
 
 
282
 
CREATE table t1 (  `id` int NOT NULL auto_increment,  `name` varchar(50) NOT NULL default '',  PRIMARY KEY  (`id`)) ENGINE=MyISAM AUTO_INCREMENT=3 ;
283
 
INSERT INTO t1 VALUES (1, 'aaaaa');
284
 
INSERT INTO t1 VALUES (3, 'aaaaa');
285
 
INSERT INTO t1 VALUES (2, 'eeeeeee');
286
 
select distinct left(name,1) as name from t1;
287
 
drop  table t1; 
288
 
 
289
 
#
290
 
# Test case from sel000100
291
 
#
292
 
 
293
 
CREATE TABLE t1 (
294
 
  ID int NOT NULL auto_increment,
295
 
  NAME varchar(75) DEFAULT '' NOT NULL,
296
 
  LINK_ID int DEFAULT '0' NOT NULL,
297
 
  PRIMARY KEY (ID),
298
 
  KEY NAME (NAME),
299
 
  KEY LINK_ID (LINK_ID)
300
 
);
301
 
 
302
 
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (1,'Mike',0);
303
 
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (2,'Jack',0);
304
 
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (3,'Bill',0);
305
 
 
306
 
CREATE TABLE t2 (
307
 
  ID int NOT NULL auto_increment,
308
 
  NAME varchar(150) DEFAULT '' NOT NULL,
309
 
  PRIMARY KEY (ID),
310
 
  KEY NAME (NAME)
311
 
);
312
 
 
313
 
SELECT DISTINCT
314
 
    t2.id AS key_link_id,
315
 
    t2.name AS link
316
 
FROM t1
317
 
LEFT JOIN t2 ON t1.link_id=t2.id
318
 
GROUP BY t1.id
319
 
ORDER BY link;
320
 
drop table t1,t2;
321
 
 
322
 
#
323
 
# test case for #674
324
 
#
325
 
 
326
 
CREATE TABLE t1 (
327
 
  html varchar(5) default NULL,
328
 
  rin int default '0',
329
 
  rout int default '0'
330
 
) ENGINE=MyISAM;
331
 
 
332
 
INSERT INTO t1 VALUES ('1',1,0);
333
 
SELECT DISTINCT html,SUM(rout)/(SUM(rin)+1) as 'prod' FROM t1 GROUP BY rin;
334
 
drop table t1;
335
 
 
336
 
#
337
 
# Test cases for #12625: DISTINCT for a list with constants
338
 
#
339
 
 
340
 
CREATE TABLE t1 (a int);
341
 
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
342
 
SELECT DISTINCT a, 1 FROM t1;
343
 
SELECT DISTINCT 1, a FROM t1;
344
 
 
345
 
CREATE TABLE t2 (a int, b int); 
346
 
INSERT INTO t2 VALUES (1,1),(2,2),(2,3),(2,4),(3,5);
347
 
SELECT DISTINCT a, b, 2 FROM t2;
348
 
SELECT DISTINCT 2, a, b FROM t2;
349
 
SELECT DISTINCT a, 2, b FROM t2;
350
 
 
351
 
DROP TABLE t1,t2;
352
 
#
353
 
# Bug#16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" 
354
 
#   error.
355
 
#
356
 
CREATE TABLE t1(a INT PRIMARY KEY, b INT);
357
 
INSERT INTO t1 VALUES (1,1), (2,1), (3,1);
358
 
EXPLAIN SELECT DISTINCT a FROM t1;
359
 
EXPLAIN SELECT DISTINCT a,b FROM t1;
360
 
EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2;
361
 
EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2
362
 
  WHERE t1_1.a = t1_2.a;
363
 
EXPLAIN SELECT a FROM t1 GROUP BY a;
364
 
EXPLAIN SELECT a,b FROM t1 GROUP BY a,b;
365
 
EXPLAIN SELECT DISTINCT a,b FROM t1 GROUP BY a,b;
366
 
 
367
 
CREATE TABLE t2(a INT, b INT NOT NULL, c INT NOT NULL, d INT, 
368
 
                PRIMARY KEY (a,b));
369
 
INSERT INTO t2 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
370
 
EXPLAIN SELECT DISTINCT a FROM t2;
371
 
EXPLAIN SELECT DISTINCT a,a FROM t2;
372
 
EXPLAIN SELECT DISTINCT b,a FROM t2;
373
 
EXPLAIN SELECT DISTINCT a,c FROM t2;
374
 
EXPLAIN SELECT DISTINCT c,a,b FROM t2;
375
 
 
376
 
EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d;
377
 
CREATE UNIQUE INDEX c_b_unq ON t2 (c,b);
378
 
EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d;
379
 
 
380
 
DROP TABLE t1,t2;
381
 
 
382
 
# Bug 9784 DISTINCT IFNULL truncates data
383
 
#
384
 
create table t1 (id int, dsc varchar(50));
385
 
insert into t1 values (1, "line number one"), (2, "line number two"), (3, "line number three");
386
 
select distinct id, IFNULL(dsc, '-') from t1;
387
 
drop table t1;
388
 
 
389
 
#
390
 
# Bug 21456: SELECT DISTINCT(x) produces incorrect results when using order by
391
 
#
392
 
CREATE TABLE t1 (a int primary key, b int);
393
 
 
394
 
INSERT INTO t1 (a,b) values (1,1), (2,3), (3,2);
395
 
 
396
 
explain SELECT DISTINCT a, b FROM t1 ORDER BY b;
397
 
SELECT DISTINCT a, b FROM t1 ORDER BY b;
398
 
DROP TABLE t1;
399
 
 
400
 
# End of 4.1 tests
401
 
 
402
 
 
403
 
#
404
 
# Bug #15745 ( COUNT(DISTINCT CONCAT(x,y)) returns wrong result)
405
 
#
406
 
CREATE TABLE t1 (
407
 
  ID int NOT NULL auto_increment,
408
 
  x varchar(20) default NULL,
409
 
  y decimal(10,0) default NULL,
410
 
  PRIMARY KEY  (ID),
411
 
  KEY (y)
412
 
) ENGINE=MyISAM;
413
 
 
414
 
INSERT INTO t1 VALUES
415
 
(1,'ba','-1'),
416
 
(2,'ba','1150'),
417
 
(306,'ba','-1'),
418
 
(307,'ba','1150'),
419
 
(611,'ba','-1'),
420
 
(612,'ba','1150');
421
 
 
422
 
select count(distinct x,y) from t1;
423
 
select count(distinct concat(x,y)) from t1;
424
 
drop table t1;
425
 
 
426
 
#
427
 
# Bug #18068: SELECT DISTINCT
428
 
#
429
 
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b));
430
 
 
431
 
INSERT INTO t1 VALUES (1, 101);
432
 
INSERT INTO t1 SELECT a + 1, a + 101 FROM t1;
433
 
INSERT INTO t1 SELECT a + 2, a + 102 FROM t1;
434
 
INSERT INTO t1 SELECT a + 4, a + 104 FROM t1;
435
 
INSERT INTO t1 SELECT a + 8, a + 108 FROM t1;
436
 
 
437
 
EXPLAIN SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
438
 
SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
439
 
 
440
 
DROP TABLE t1;
441
 
 
442
 
#
443
 
# Bug #25551: inconsistent behaviour in grouping NULL, depending on index type
444
 
#
445
 
CREATE TABLE t1 (a INT, UNIQUE (a));
446
 
INSERT INTO t1 VALUES (4),(null),(2),(1),(null),(3);
447
 
EXPLAIN SELECT DISTINCT a FROM t1;
448
 
#result must have one row with NULL
449
 
SELECT DISTINCT a FROM t1;
450
 
EXPLAIN SELECT a FROM t1 GROUP BY a;
451
 
#result must have one row with NULL
452
 
SELECT a FROM t1 GROUP BY a;
453
 
 
454
 
DROP TABLE t1;
455
 
 
456
 
#
457
 
#Bug #27659: SELECT DISTINCT returns incorrect result set when field is
458
 
#repeated
459
 
#
460
 
#
461
 
CREATE TABLE t1 (a INT, b INT);
462
 
INSERT INTO t1 VALUES(1,1),(1,2),(1,3);
463
 
SELECT DISTINCT a, b FROM t1;
464
 
SELECT DISTINCT a, a, b FROM t1;
465
 
DROP TABLE t1;
466
 
 
467
 
--echo End of 5.0 tests
468
 
 
469
 
#
470
 
# Bug #34928: Confusion by having Primary Key and Index
471
 
#
472
 
CREATE TABLE t1(a INT, b INT, c INT, d INT, e INT,
473
 
                PRIMARY KEY(a,b,c,d,e),
474
 
                KEY(a,b,d,c)
475
 
);
476
 
 
477
 
INSERT INTO t1(a, b, c) VALUES (1, 1, 1),
478
 
                               (1, 1, 2),
479
 
                               (1, 1, 3),
480
 
                               (1, 2, 1),
481
 
                               (1, 2, 2),
482
 
                               (1, 2, 3);
483
 
 
484
 
EXPLAIN SELECT DISTINCT a, b, d, c FROM t1;
485
 
 
486
 
SELECT DISTINCT a, b, d, c FROM t1;
487
 
 
488
 
DROP TABLE t1;
489
 
 
490
 
--echo End of 5.1 tests