281
gid int(10) unsigned NOT NULL auto_increment,
282
cid smallint(5) unsigned NOT NULL default '0',
281
CREATE TEMPORARY TABLE t1 (
282
gid int NOT NULL auto_increment,
283
cid int NOT NULL default '0',
283
284
PRIMARY KEY (gid),
284
285
KEY component_id (cid)
286
287
INSERT INTO t1 VALUES (103853,108),(103867,108),(103962,108),(104505,108),(104619,108),(104620,108);
287
ALTER TABLE t1 add skr int(10) not null;
288
ALTER TABLE t1 add skr int not null;
290
gid int(10) unsigned NOT NULL default '0',
291
uid smallint(5) unsigned NOT NULL default '1',
292
sid tinyint(3) unsigned NOT NULL default '1',
290
CREATE TEMPORARY TABLE t2 (
291
gid int NOT NULL default '0',
292
uid int NOT NULL default '1',
293
sid int NOT NULL default '1',
293
294
PRIMARY KEY (gid),
295
296
KEY status_id (sid)
297
298
INSERT INTO t2 VALUES (103853,250,5),(103867,27,5),(103962,27,5),(104505,117,5),(104619,75,5),(104620,15,5);
300
uid smallint(6) NOT NULL auto_increment,
300
CREATE TEMPORARY TABLE t3 (
301
uid int NOT NULL auto_increment,
301
302
PRIMARY KEY (uid)
303
304
INSERT INTO t3 VALUES (1),(15),(27),(75),(117),(250);
304
ALTER TABLE t3 add skr int(10) not null;
305
ALTER TABLE t3 add skr int not null;
306
307
select t1.gid, t2.sid, t3.uid from t2, t1, t3 where t2.gid = t1.gid and t2.uid = t3.uid order by t3.uid, t1.gid;
307
308
select t1.gid, t2.sid, t3.uid from t3, t2, t1 where t2.gid = t1.gid and t2.uid = t3.uid order by t3.uid, t1.gid;
309
310
# The following ORDER BY can be optimimized
310
EXPLAIN select t1.gid, t2.sid, t3.uid from t3, t2, t1 where t2.gid = t1.gid and t2.uid = t3.uid order by t1.gid, t3.uid;
311
EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.gid = t3.uid order by t1.gid,t3.skr;
311
select t1.gid, t2.sid, t3.uid from t3, t2, t1 where t2.gid = t1.gid and t2.uid = t3.uid order by t1.gid, t3.uid;
312
SELECT t1.gid, t3.uid from t1, t3 where t1.gid = t3.uid order by t1.gid,t3.skr;
313
314
# The following ORDER BY can't be optimimized
314
EXPLAIN SELECT t1.gid, t2.sid, t3.uid from t2, t1, t3 where t2.gid = t1.gid and t2.uid = t3.uid order by t3.uid, t1.gid;
315
EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.gid = t3.uid order by t3.skr,t1.gid;
316
EXPLAIN SELECT t1.gid, t3.uid from t1, t3 where t1.skr = t3.uid order by t1.gid,t3.skr;
315
SELECT t1.gid, t2.sid, t3.uid from t2, t1, t3 where t2.gid = t1.gid and t2.uid = t3.uid order by t3.uid, t1.gid;
316
SELECT t1.gid, t3.uid from t1, t3 where t1.gid = t3.uid order by t3.skr,t1.gid;
317
SELECT t1.gid, t3.uid from t1, t3 where t1.skr = t3.uid order by t1.gid,t3.skr;
317
318
drop table t1,t2,t3;
323
324
CREATE TABLE t1 (
324
325
`titre` char(80) NOT NULL default '',
325
`numeropost` mediumint(8) unsigned NOT NULL auto_increment,
326
`date` datetime NOT NULL default '0000-00-00 00:00:00',
326
`numeropost` int NOT NULL auto_increment,
327
328
`auteur` char(35) NOT NULL default '',
328
`icone` tinyint(2) unsigned NOT NULL default '0',
329
`icone` int NOT NULL default '0',
329
330
`lastauteur` char(35) NOT NULL default '',
330
`nbrep` smallint(6) unsigned NOT NULL default '0',
331
`nbrep` int NOT NULL default '0',
331
332
`dest` char(35) NOT NULL default '',
332
`lu` tinyint(1) unsigned NOT NULL default '0',
333
`vue` mediumint(8) unsigned NOT NULL default '0',
334
`ludest` tinyint(1) unsigned NOT NULL default '0',
335
`ouvert` tinyint(1) unsigned NOT NULL default '1',
333
`lu` int NOT NULL default '0',
334
`vue` int NOT NULL default '0',
335
`ludest` int NOT NULL default '0',
336
`ouvert` int NOT NULL default '1',
336
337
PRIMARY KEY (`numeropost`),
337
338
KEY `date` (`date`),
338
339
KEY `dest` (`dest`,`ludest`),
339
340
KEY `auteur` (`auteur`,`lu`),
340
341
KEY `auteur_2` (`auteur`,`date`),
341
342
KEY `dest_2` (`dest`,`date`)
344
345
CREATE TABLE t2 (
345
`numeropost` mediumint(8) unsigned NOT NULL default '0',
346
`numeropost` int NOT NULL default '0',
346
347
`pseudo` char(35) NOT NULL default '',
347
348
PRIMARY KEY (`numeropost`,`pseudo`),
348
349
KEY `pseudo` (`pseudo`)
392
394
CREATE TABLE t1 (
393
395
FieldKey varchar(36) NOT NULL default '',
394
LongVal bigint(20) default NULL,
395
StringVal mediumtext,
396
LongVal bigint default NULL,
396
398
KEY FieldKey (FieldKey),
397
399
KEY LongField (FieldKey,LongVal),
398
400
KEY StringField (FieldKey,StringVal(32))
400
402
INSERT INTO t1 VALUES ('0',3,'0'),('0',2,'1'),('0',1,'2'),('1',2,'1'),('1',1,'3'), ('1',0,'2'),('2',3,'0'),('2',2,'1'),('2',1,'2'),('2',3,'0'),('2',2,'1'),('2',1,'2'),('3',2,'1'),('3',1,'2'),('3','3','3');
401
EXPLAIN SELECT * FROM t1 WHERE FieldKey = '1' ORDER BY LongVal;
402
403
SELECT * FROM t1 WHERE FieldKey = '1' ORDER BY LongVal;
403
EXPLAIN SELECT * FROM t1 ignore index (FieldKey, LongField) WHERE FieldKey > '2' ORDER BY LongVal;
404
404
SELECT * FROM t1 WHERE FieldKey > '2' ORDER BY LongVal;
405
EXPLAIN SELECT * FROM t1 WHERE FieldKey > '2' ORDER BY FieldKey, LongVal;
406
405
SELECT * FROM t1 WHERE FieldKey > '2' ORDER BY FieldKey, LongVal;
716
# Bug#26672: Incorrect SEC_TO_TIME() casting in ORDER BY
718
CREATE TABLE t1 (a INT UNSIGNED NOT NULL, b TIME);
719
INSERT INTO t1 (a) VALUES (100000), (0), (100), (1000000),(10000), (1000), (10);
720
UPDATE t1 SET b = SEC_TO_TIME(a);
723
SELECT a, b FROM t1 ORDER BY b DESC;
725
# must be ordered as the above
726
SELECT a, b FROM t1 ORDER BY SEC_TO_TIME(a) DESC;
731
715
# BUG#16590: Optimized does not do right "const" table pre-read
733
717
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), UNIQUE KEY b (b));
736
720
CREATE TABLE t2 (a INT, b INT, KEY a (a,b));
737
721
INSERT INTO t2 VALUES (1,1),(1,2),(2,1),(2,2);
739
EXPLAIN SELECT 1 FROM t1,t2 WHERE t1.b=2 AND t1.a=t2.a ORDER BY t2.b;
723
SELECT 1 FROM t1,t2 WHERE t1.b=2 AND t1.a=t2.a ORDER BY t2.b;
741
725
DROP TABLE t1,t2;
746
# Bug #28404: query with ORDER BY and ref access
750
id int auto_increment PRIMARY KEY, c2 int, c3 int, INDEX k2(c2), INDEX k3(c3));
752
INSERT INTO t1 (c2,c3) VALUES
753
(31,34),(35,38),(34,31),(32,35),(31,39),
754
(11,14),(15,18),(14,11),(12,15),(11,19);
756
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
757
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
758
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
759
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
760
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
761
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
762
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
763
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
764
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
765
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
766
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
767
INSERT INTO t1 (c2,c3) SELECT c2,c3 FROM t1;
768
UPDATE t1 SET c2=20 WHERE id%100 = 0;
769
SELECT COUNT(*) FROM t1;
771
CREATE TABLE t2 LIKE t1;
772
INSERT INTO t2 SELECT * FROM t1 ORDER BY id;
774
EXPLAIN SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 20;
775
EXPLAIN SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 4000;
776
EXPLAIN SELECT id,c3 FROM t2 WHERE c2 BETWEEN 10 AND 12 ORDER BY c3 LIMIT 20;
777
EXPLAIN SELECT id,c3 FROM t2 WHERE c2 BETWEEN 20 AND 30 ORDER BY c3 LIMIT 4000;
779
SELECT id,c3 FROM t2 WHERE c2=11 ORDER BY c3 LIMIT 20;
784
730
# Bug #30665: Inconsistent optimization of IGNORE INDEX FOR {ORDER BY|GROUP BY}
796
742
INSERT INTO t1 SELECT a +32, b +32 FROM t1;
797
743
INSERT INTO t1 SELECT a +64, b +64 FROM t1;
799
EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR GROUP BY (a, ab) GROUP BY a;
802
--let $q = `show status like 'Created_tmp_tables';`
803
eval set @tmp_tables_before =
804
CAST(REPLACE('$q', 'Created_tmp_tables', '') AS UNSIGNED);
807
745
SELECT a FROM t1 IGNORE INDEX FOR GROUP BY (a, ab) GROUP BY a;
809
# this query creates one temporary table in itself, which we are not
813
--let $q = `show status like 'Created_tmp_tables';`
814
eval set @tmp_tables_after =
815
CAST(REPLACE('$q', 'Created_tmp_tables', '') AS UNSIGNED);
818
747
SELECT @tmp_tables_after = @tmp_tables_before ;
820
EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR ORDER BY (a, ab) ORDER BY a;
823
--let $q = `show status like 'Created_tmp_tables';`
824
eval set @tmp_tables_before =
825
CAST(REPLACE('$q', 'Created_tmp_tables', '') AS UNSIGNED);
828
749
SELECT a FROM t1 IGNORE INDEX FOR ORDER BY (a, ab) ORDER BY a;
831
--let $q = `show status like 'Created_tmp_tables';`
832
eval set @tmp_tables_after =
833
CAST(REPLACE('$q', 'Created_tmp_tables', '') AS UNSIGNED);
836
751
SELECT @tmp_tables_after = @tmp_tables_before;
840
755
--echo # Bug#31590: Wrong error message on sort buffer being too small.
842
create table t1(a int, b tinytext);
757
create table t1(a int, b text);
843
758
insert into t1 values (1,2),(3,2);
844
759
set session sort_buffer_size= 30000;
845
760
set session max_sort_length= 2180;
847
761
select * from t1 order by b;