MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
join_cache.inc
1 --disable_warnings
2 DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;
3 DROP DATABASE IF EXISTS world;
4 --enable_warnings
5 
6 set names utf8;
7 
8 CREATE DATABASE world;
9 
10 use world;
11 
12 --source include/world_schema1.inc
13 
14 --disable_query_log
15 --disable_result_log
16 --disable_warnings
17 --source include/world.inc
18 --enable_warnings
19 --enable_result_log
20 --enable_query_log
21 
22 SELECT COUNT(*) FROM Country;
23 SELECT COUNT(*) FROM City;
24 SELECT COUNT(*) FROM CountryLanguage;
25 
26 show variables like 'join_buffer_size';
27 
28 EXPLAIN
29 SELECT City.Name, Country.Name FROM City,Country
30  WHERE City.Country=Country.Code AND
31  Country.Name LIKE 'L%' AND City.Population > 100000;
32 
33 --sorted_result
34 SELECT City.Name, Country.Name FROM City,Country
35  WHERE City.Country=Country.Code AND
36  Country.Name LIKE 'L%' AND City.Population > 100000;
37 
38 EXPLAIN
39 SELECT City.Name, Country.Name, CountryLanguage.Language
40  FROM City,Country,CountryLanguage
41  WHERE City.Country=Country.Code AND
42  CountryLanguage.Country=Country.Code AND
43  City.Name LIKE 'L%' AND Country.Population > 3000000 AND
44  CountryLanguage.Percentage > 50;
45 
46 --sorted_result
47 SELECT City.Name, Country.Name, CountryLanguage.Language
48  FROM City,Country,CountryLanguage
49  WHERE City.Country=Country.Code AND
50  CountryLanguage.Country=Country.Code AND
51  City.Name LIKE 'L%' AND Country.Population > 3000000 AND
52  CountryLanguage.Percentage > 50;
53 
54 set join_buffer_size=256;
55 show variables like 'join_buffer_size';
56 
57 EXPLAIN
58 SELECT City.Name, Country.Name FROM City,Country
59  WHERE City.Country=Country.Code AND
60  Country.Name LIKE 'L%' AND City.Population > 100000;
61 
62 --sorted_result
63 SELECT City.Name, Country.Name FROM City,Country
64  WHERE City.Country=Country.Code AND
65  Country.Name LIKE 'L%' AND City.Population > 100000;
66 
67 EXPLAIN
68 SELECT City.Name, Country.Name, CountryLanguage.Language
69  FROM City,Country,CountryLanguage
70  WHERE City.Country=Country.Code AND
71  CountryLanguage.Country=Country.Code AND
72  City.Name LIKE 'L%' AND Country.Population > 3000000 AND
73  CountryLanguage.Percentage > 50;
74 
75 --sorted_result
76 SELECT City.Name, Country.Name, CountryLanguage.Language
77  FROM City,Country,CountryLanguage
78  WHERE City.Country=Country.Code AND
79  CountryLanguage.Country=Country.Code AND
80  City.Name LIKE 'L%' AND Country.Population > 3000000 AND
81  CountryLanguage.Percentage > 50;
82 
83 set join_buffer_size=default;
84 show variables like 'join_buffer_size';
85 
86 DROP DATABASE world;
87 
88 
89 CREATE DATABASE world;
90 
91 use world;
92 
93 --source include/world_schema.inc
94 
95 --disable_query_log
96 --disable_result_log
97 --disable_warnings
98 --source include/world.inc
99 --enable_warnings
100 --enable_result_log
101 --enable_query_log
102 
103 show variables like 'join_buffer_size';
104 
105 EXPLAIN
106 SELECT City.Name, Country.Name FROM City,Country
107  WHERE City.Country=Country.Code AND
108  Country.Name LIKE 'L%' AND City.Population > 100000;
109 
110 --sorted_result
111 SELECT City.Name, Country.Name FROM City,Country
112  WHERE City.Country=Country.Code AND
113  Country.Name LIKE 'L%' AND City.Population > 100000;
114 
115 --replace_result 185 # 188 #
116 EXPLAIN
117 SELECT City.Name, Country.Name, CountryLanguage.Language
118  FROM City,Country,CountryLanguage
119  WHERE City.Country=Country.Code AND
120  CountryLanguage.Country=Country.Code AND
121  City.Name LIKE 'L%' AND Country.Population > 3000000 AND
122  CountryLanguage.Percentage > 50;
123 
124 --sorted_result
125 SELECT City.Name, Country.Name, CountryLanguage.Language
126  FROM City,Country,CountryLanguage
127  WHERE City.Country=Country.Code AND
128  CountryLanguage.Country=Country.Code AND
129  City.Name LIKE 'L%' AND Country.Population > 3000000 AND
130  CountryLanguage.Percentage > 50;
131 
132 EXPLAIN
133 SELECT Name FROM City
134  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
135  City.Population > 100000;
136 
137 --sorted_result
138 SELECT Name FROM City
139  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
140  City.Population > 100000;
141 
142 EXPLAIN
143 SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage)
144  FROM Country LEFT JOIN CountryLanguage ON
145  (CountryLanguage.Country=Country.Code AND Language='English')
146  WHERE
147  Country.Population > 10000000;
148 
149 --sorted_result
150 SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage)
151  FROM Country LEFT JOIN CountryLanguage ON
152  (CountryLanguage.Country=Country.Code AND Language='English')
153  WHERE
154  Country.Population > 10000000;
155 
156 set join_buffer_size=256;
157 show variables like 'join_buffer_size';
158 
159 EXPLAIN
160 SELECT City.Name, Country.Name FROM City,Country
161  WHERE City.Country=Country.Code AND
162  Country.Name LIKE 'L%' AND City.Population > 100000;
163 
164 --sorted_result
165 SELECT City.Name, Country.Name FROM City,Country
166  WHERE City.Country=Country.Code AND
167  Country.Name LIKE 'L%' AND City.Population > 100000;
168 
169 --replace_result 185 # 188 #
170 EXPLAIN
171 SELECT City.Name, Country.Name, CountryLanguage.Language
172  FROM City,Country,CountryLanguage
173  WHERE City.Country=Country.Code AND
174  CountryLanguage.Country=Country.Code AND
175  City.Name LIKE 'L%' AND Country.Population > 3000000 AND
176  CountryLanguage.Percentage > 50;
177 
178 --sorted_result
179 SELECT City.Name, Country.Name, CountryLanguage.Language
180  FROM City,Country,CountryLanguage
181  WHERE City.Country=Country.Code AND
182  CountryLanguage.Country=Country.Code AND
183  City.Name LIKE 'L%' AND Country.Population > 3000000 AND
184  CountryLanguage.Percentage > 50;
185 
186 EXPLAIN
187 SELECT Name FROM City
188  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
189  City.Population > 100000;
190 
191 --sorted_result
192 SELECT Name FROM City
193  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
194  City.Population > 100000;
195 
196 set join_buffer_size=default;
197 show variables like 'join_buffer_size';
198 
199 --sorted_result
200 SELECT City.Name, Country.Name FROM City,Country
201  WHERE City.Country=Country.Code AND City.Population > 3000000;
202 
203 set join_buffer_size=256;
204 
205 --replace_column 9 #
206 EXPLAIN
207 SELECT City.Name, Country.Name FROM City,Country
208  WHERE City.Country=Country.Code AND City.Population > 3000000;
209 
210 --sorted_result
211 SELECT City.Name, Country.Name FROM City,Country
212  WHERE City.Country=Country.Code AND City.Population > 3000000;
213 
214 set join_buffer_size=default;
215 
216 ALTER TABLE Country MODIFY Name varchar(52) NOT NULL default '';
217 
218 --sorted_result
219 SELECT City.Name, Country.Name FROM City,Country
220  WHERE City.Country=Country.Code AND
221  Country.Name LIKE 'L%' AND City.Population > 100000;
222 
223 ALTER TABLE Country MODIFY Name varchar(300) NOT NULL default '';
224 
225 --sorted_result
226 SELECT City.Name, Country.Name FROM City,Country
227  WHERE City.Country=Country.Code AND
228  Country.Name LIKE 'L%' AND City.Population > 100000;
229 
230 ALTER TABLE Country ADD COLUMN PopulationBar text;
231 UPDATE Country
232  SET PopulationBar=REPEAT('x', CAST(Population/100000 AS unsigned int));
233 
234 --sorted_result
235 SELECT City.Name, Country.Name, Country.PopulationBar FROM City,Country
236  WHERE City.Country=Country.Code AND
237  Country.Name LIKE 'L%' AND City.Population > 100000;
238 
239 set join_buffer_size=256;
240 
241 --sorted_result
242 SELECT City.Name, Country.Name, Country.PopulationBar FROM City,Country
243  WHERE City.Country=Country.Code AND
244  Country.Name LIKE 'L%' AND City.Population > 100000;
245 
246 set join_buffer_size=default;
247 
248 DROP DATABASE world;
249 
250 use test;
251 
252 #
253 # Bug #35685: assertion abort when initializing a BKA cache
254 #
255 
256 CREATE TABLE t1(
257  affiliatetometaid int NOT NULL default '0',
258  uniquekey int NOT NULL default '0',
259  metaid int NOT NULL default '0',
260  affiliateid int NOT NULL default '0',
261  xml text,
262  isactive char(1) NOT NULL default 'Y',
263  PRIMARY KEY (affiliatetometaid)
264 );
265 CREATE UNIQUE INDEX t1_uniquekey ON t1(uniquekey);
266 CREATE INDEX t1_affiliateid ON t1(affiliateid);
267 CREATE INDEX t1_metaid on t1 (metaid);
268 INSERT INTO t1 VALUES
269  (1616, 1571693233, 1391, 2, NULL, 'Y'), (1943, 1993216749, 1726, 2, NULL, 'Y');
270 
271 CREATE TABLE t2(
272  metaid int NOT NULL default '0',
273  name varchar(80) NOT NULL default '',
274  dateadded timestamp NOT NULL ,
275  xml text,
276  status int default NULL,
277  origin int default NULL,
278  gid int NOT NULL default '1',
279  formattypeid int default NULL,
280  PRIMARY KEY (metaid)
281 );
282 CREATE INDEX t2_status ON t2(status);
283 CREATE INDEX t2_gid ON t2(gid);
284 CREATE INDEX t2_formattypeid ON t2(formattypeid);
285 INSERT INTO t2 VALUES
286  (1391, "I Just Died", "2003-10-02 10:07:37", "", 1, NULL, 3, NULL),
287  (1726, "Me, Myself & I", "2003-12-05 11:24:36", " ", 1, NULL, 3, NULL);
288 
289 CREATE TABLE t3(
290  mediaid int NOT NULL ,
291  metaid int NOT NULL default '0',
292  formatid int NOT NULL default '0',
293  status int default NULL,
294  path varchar(100) NOT NULL default '',
295  datemodified timestamp NOT NULL ,
296  resourcetype int NOT NULL default '1',
297  parameters text,
298  signature int default NULL,
299  quality int NOT NULL default '255',
300  PRIMARY KEY (mediaid)
301 );
302 CREATE INDEX t3_metaid ON t3(metaid);
303 CREATE INDEX t3_formatid ON t3(formatid);
304 CREATE INDEX t3_status ON t3(status);
305 CREATE INDEX t3_metaidformatid ON t3(metaid,formatid);
306 CREATE INDEX t3_signature ON t3(signature);
307 CREATE INDEX t3_quality ON t3(quality);
308 INSERT INTO t3 VALUES
309  (6, 4, 8, 0, "010101_anastacia_spmidi.mid", "2004-03-16 13:40:00", 1, NULL, NULL, 255),
310  (3343, 3, 8, 1, "010102_4VN4bsPwnxRQUJW5Zp1RhG2IL9vvl_8.mid", "2004-03-16 13:40:00", 1, NULL, NULL, 255);
311 
312 CREATE TABLE t4(
313  formatid int NOT NULL ,
314  name varchar(60) NOT NULL default '',
315  formatclassid int NOT NULL default '0',
316  mime varchar(60) default NULL,
317  extension varchar(10) default NULL,
318  priority int NOT NULL default '0',
319  canaddtocapability char(1) NOT NULL default 'Y',
320  PRIMARY KEY (formatid)
321 );
322 CREATE INDEX t4_formatclassid ON t4(formatclassid);
323 CREATE INDEX t4_formats_idx ON t4(canaddtocapability);
324 INSERT INTO t4 VALUES
325  (19, "XHTML", 11, "text/html", "xhtml", 10, 'Y'),
326  (54, "AMR (wide band)", 13, "audio/amr-wb", "awb", 0, 'Y');
327 
328 CREATE TABLE t5(
329  formatclassid int NOT NULL ,
330  name varchar(60) NOT NULL default '',
331  priority int NOT NULL default '0',
332  formattypeid int NOT NULL default '0',
333  PRIMARY KEY (formatclassid)
334 );
335 CREATE INDEX t5_formattypeid on t5(formattypeid);
336 INSERT INTO t5 VALUES
337  (11, "Info", 0, 4), (13, "Digital Audio", 0, 2);
338 
339 CREATE TABLE t6(
340  formattypeid int NOT NULL ,
341  name varchar(60) NOT NULL default '',
342  priority int default NULL,
343  PRIMARY KEY (formattypeid)
344 );
345 INSERT INTO t6 VALUES
346  (2, "Ringtones", 0);
347 
348 CREATE TABLE t7(
349  metaid int NOT NULL default '0',
350  artistid int NOT NULL default '0',
351  PRIMARY KEY (metaid,artistid)
352 );
353 INSERT INTO t7 VALUES
354  (4, 5), (3, 4);
355 
356 CREATE TABLE t8(
357  artistid int NOT NULL ,
358  name varchar(80) NOT NULL default '',
359  PRIMARY KEY (artistid)
360 );
361 INSERT INTO t8 VALUES
362  (5, "Anastacia"), (4, "John Mayer");
363 
364 CREATE TABLE t9(
365  subgenreid int NOT NULL default '0',
366  metaid int NOT NULL default '0',
367  PRIMARY KEY (subgenreid,metaid)
368 ) ;
369 CREATE INDEX t9_subgenreid ON t9(subgenreid);
370 CREATE INDEX t9_metaid ON t9(metaid);
371 INSERT INTO t9 VALUES
372  (138, 4), (31, 3);
373 
374 CREATE TABLE t10(
375  subgenreid int NOT NULL ,
376  genreid int NOT NULL default '0',
377  name varchar(80) NOT NULL default '',
378  PRIMARY KEY (subgenreid)
379 ) ;
380 CREATE INDEX t10_genreid ON t10(genreid);
381 INSERT INTO t10 VALUES
382  (138, 19, ''), (31, 3, '');
383 
384 CREATE TABLE t11(
385  genreid int NOT NULL default '0',
386  name char(80) NOT NULL default '',
387  priority int NOT NULL default '0',
388  masterclip char(1) default NULL,
389  PRIMARY KEY (genreid)
390 ) ;
391 CREATE INDEX t11_masterclip ON t11( masterclip);
392 INSERT INTO t11 VALUES
393  (19, "Pop & Dance", 95, 'Y'), (3, "Rock & Alternative", 100, 'Y');
394 
395 EXPLAIN
396 SELECT t1.uniquekey, t1.xml AS affiliateXml,
397  t8.name AS artistName, t8.artistid,
398  t11.name AS genreName, t11.genreid, t11.priority AS genrePriority,
399  t10.subgenreid, t10.name AS subgenreName,
400  t2.name AS metaName, t2.metaid, t2.xml AS metaXml,
401  t4.priority + t5.priority + t6.priority AS overallPriority,
402  t3.path AS path, t3.mediaid,
403  t4.formatid, t4.name AS formatName,
404  t5.formatclassid, t5.name AS formatclassName,
405  t6.formattypeid, t6.name AS formattypeName
406 FROM t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11
407 WHERE t7.metaid = t2.metaid AND t7.artistid = t8.artistid AND
408  t9.metaid = t2.metaid AND t9.subgenreid = t10.subgenreid AND
409  t10.genreid = t11.genreid AND t3.metaid = t2.metaid AND
410  t3.formatid = t4.formatid AND t4.formatclassid = t5.formatclassid AND
411  t4.canaddtocapability = 'Y' AND t5.formattypeid = t6.formattypeid AND
412  t6.formattypeid IN (2) AND (t3.formatid IN (31, 8, 76)) AND
413  t1.metaid = t2.metaid AND t1.affiliateid = '2';
414 
415 SELECT t1.uniquekey, t1.xml AS affiliateXml,
416  t8.name AS artistName, t8.artistid,
417  t11.name AS genreName, t11.genreid, t11.priority AS genrePriority,
418  t10.subgenreid, t10.name AS subgenreName,
419  t2.name AS metaName, t2.metaid, t2.xml AS metaXml,
420  t4.priority + t5.priority + t6.priority AS overallPriority,
421  t3.path AS path, t3.mediaid,
422  t4.formatid, t4.name AS formatName,
423  t5.formatclassid, t5.name AS formatclassName,
424  t6.formattypeid, t6.name AS formattypeName
425 FROM t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11
426 WHERE t7.metaid = t2.metaid AND t7.artistid = t8.artistid AND
427  t9.metaid = t2.metaid AND t9.subgenreid = t10.subgenreid AND
428  t10.genreid = t11.genreid AND t3.metaid = t2.metaid AND
429  t3.formatid = t4.formatid AND t4.formatclassid = t5.formatclassid AND
430  t4.canaddtocapability = 'Y' AND t5.formattypeid = t6.formattypeid AND
431  t6.formattypeid IN (2) AND (t3.formatid IN (31, 8, 76)) AND
432  t1.metaid = t2.metaid AND t1.affiliateid = '2';
433 
434 DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;
435 
436 #
437 # Bug #37131: 3-way join query with BKA used with a small buffer and
438 # only for the third table
439 #
440 
441 CREATE TABLE t1 (a1 int, filler1 char(64) default ' ' );
442 CREATE TABLE t2 (
443  a2 int, b2 int, filler2 char(64) default ' ',
444  PRIMARY KEY idx(a2,b2,filler2)
445 ) ;
446 CREATE TABLE t3 (b3 int, c3 int, INDEX idx(b3));
447 
448 INSERT INTO t1(a1) VALUES
449  (4), (7), (1), (9), (8), (5), (3), (6), (2);
450 INSERT INTO t2(a2,b2) VALUES
451  (1,30), (3,40), (2,61), (6,73), (8,92), (9,27), (4,18), (5,84), (7,56),
452  (4,14), (6,76), (8,98), (7,55), (1,39), (2,68), (3,45), (9,21), (5,81),
453  (5,88), (2,65), (6,74), (9,23), (1,37), (3,44), (4,17), (8,99), (7,51),
454  (9,28), (7,52), (1,33), (4,13), (5,87), (3,43), (8,91), (2,62), (6,79),
455  (3,49), (8,93), (7,34), (5,82), (6,78), (2,63), (1,32), (9,22), (4,11);
456 INSERT INTO t3 VALUES
457  (30,302), (92,923), (18,187), (45,459), (30,309),
458  (39,393), (68,685), (45,458), (21,210), (81,817),
459  (40,405), (61,618), (73,738), (92,929), (27,275),
460  (18,188), (84,846), (56,564), (14,144), (76,763),
461  (98,982), (55,551), (17,174), (99,998), (51,513),
462  (28,282), (52,527), (33,336), (13,138), (87,878),
463  (43,431), (91,916), (62,624), (79,797), (49,494),
464  (93,933), (34,347), (82,829), (78,780), (63,634),
465  (32,329), (22,228), (11,114), (74,749), (23,236);
466 
467 EXPLAIN
468 SELECT a1<>a2, a1, a2, b2, b3, c3,
469  SUBSTR(filler1,1,1) AS s1, SUBSTR(filler2,1,1) AS s2
470 FROM t1,t2,t3 WHERE a1=a2 AND b2=b3 AND MOD(c3,10)>7;
471 
472 --sorted_result
473 SELECT a1<>a2, a1, a2, b2, b3, c3,
474  SUBSTR(filler1,1,1) AS s1, SUBSTR(filler2,1,1) AS s2
475 FROM t1,t2,t3 WHERE a1=a2 AND b2=b3 AND MOD(c3,10)>7;
476 
477 set join_buffer_size=512;
478 
479 EXPLAIN
480 SELECT a1<>a2, a1, a2, b2, b3, c3,
481  SUBSTR(filler1,1,1) AS s1, SUBSTR(filler2,1,1) AS s2
482 FROM t1,t2,t3 WHERE a1=a2 AND b2=b3 AND MOD(c3,10)>7;
483 
484 --sorted_result
485 SELECT a1<>a2, a1, a2, b2, b3, c3,
486  SUBSTR(filler1,1,1) AS s1, SUBSTR(filler2,1,1) AS s2
487 FROM t1,t2,t3 WHERE a1=a2 AND b2=b3 AND MOD(c3,10)>7;
488 
489 DROP TABLE t1,t2,t3;
490 
491 #
492 # Bug #37690: crash with a tiny buffer when using BKA_JOIN_CACHE_UNIQUE
493 #
494 
495 CREATE TABLE t1 (a int, b int, INDEX idx(b));
496 CREATE TABLE t2 (a int, b int, INDEX idx(a));
497 INSERT INTO t1 VALUES (5,30), (3,20), (7,40), (2,10), (8,30), (1,10), (4,20);
498 INSERT INTO t2 VALUES (7,10), (1,20), (2,20), (8,20), (8,10), (1,20);
499 INSERT INTO t2 VALUES (1,10), (4,20), (3,20), (7,20), (7,10), (1,20);
500 
501 set join_buffer_size=32;
502 
503 EXPLAIN SELECT * FROM t1,t2 WHERE t1.a=t2.a AND t1.b >= 30;
504 --sorted_result
505 SELECT * FROM t1,t2 WHERE t1.a=t2.a AND t1.b >= 30;
506 
507 DROP TABLE t1,t2;
508 
509 --echo
510 --echo BUG#40136: Group by is ignored when join buffer is used for an outer join
511 --echo
512 create table t1(a int PRIMARY KEY, b int);
513 insert into t1 values
514  (5, 10), (2, 70), (7, 80), (6, 20), (1, 50), (9, 40), (8, 30), (3, 60);
515 create table t2 (p int, a int, INDEX i_a(a));
516 insert into t2 values
517  (103, 7), (109, 3), (102, 3), (108, 1), (106, 3),
518  (107, 7), (105, 1), (101, 3), (100, 7), (110, 1);
519 explain
520 select t1.a, count(t2.p) as count
521  from t1 left join t2 on t1.a=t2.a and t2.p % 2 = 1 group by t1.a;
522 select t1.a, count(t2.p) as count
523  from t1 left join t2 on t1.a=t2.a and t2.p % 2 = 1 group by t1.a;
524 drop table t1, t2;
525 
526 --echo #
527 --echo # Bug #40134: outer join with not exists optimization and join buffer
528 --echo #
529 
530 set join_buffer_size=default;
531 
532 CREATE TABLE t1 (a int NOT NULL);
533 INSERT INTO t1 VALUES (2), (4), (3), (5), (1);
534 CREATE TABLE t2 (a int NOT NULL, b int NOT NULL, INDEX i_a(a));
535 INSERT INTO t2 VALUES (4,10), (2,10), (2,30), (2,20), (4,20);
536 
537 EXPLAIN
538 SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t2.b IS NULL;
539 SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t2.b IS NULL;
540 
541 DROP TABLE t1, t2;
542 
543 --echo #
544 --echo # BUG#40268: Nested outer join with not null-rejecting where condition
545 --echo # over an inner table which is not the last in the nest
546 --echo #
547 
548 CREATE TABLE t2 (a int, b int, c int);
549 CREATE TABLE t3 (a int, b int, c int);
550 CREATE TABLE t4 (a int, b int, c int);
551 
552 INSERT INTO t2 VALUES (3,3,0), (4,2,0), (5,3,0);
553 INSERT INTO t3 VALUES (1,2,0), (2,2,0);
554 INSERT INTO t4 VALUES (3,2,0), (4,2,0);
555 
556 --sorted_result
557 SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
558  FROM t2 LEFT JOIN (t3, t4) ON t2.b=t4.b
559  WHERE t3.a+2<t2.a OR t3.c IS NULL;
560 
561 DROP TABLE t2, t3, t4;
562 
563 --echo #
564 --echo # Bug #40192: outer join with where clause when using BNL
565 --echo #
566 
567 create table t1 (a int, b int);
568 insert into t1 values (2, 20), (3, 30), (1, 10);
569 create table t2 (a int, c int);
570 insert into t2 values (1, 101), (3, 102), (1, 100);
571 
572 --sorted_result
573 select * from t1 left join t2 on t1.a=t2.a;
574 explain select * from t1 left join t2 on t1.a=t2.a where t2.c=102 or t2.c is null;
575 --sorted_result
576 select * from t1 left join t2 on t1.a=t2.a where t2.c=102 or t2.c is null;
577 
578 drop table t1, t2;
579 
580 --echo #
581 --echo # Bug #40317: outer join with with constant on expression equal to FALSE
582 --echo #
583 
584 create table t1 (a int);
585 insert into t1 values (30), (40), (20);
586 create table t2 (b int);
587 insert into t2 values (200), (100);
588 
589 select * from t1 left join t2 on (1=0);
590 explain select * from t1 left join t2 on (1=0) where a=40;
591 select * from t1 left join t2 on (1=0) where a=40;
592 
593 drop table t1, t2;
594 
595 --echo #
596 --echo # Bug #41204: small buffer with big rec_per_key for ref access
597 --echo #
598 
599 CREATE TABLE t1 (a int);
600 
601 INSERT INTO t1 VALUES (0);
602 INSERT INTO t1(a) SELECT a FROM t1;
603 INSERT INTO t1(a) SELECT a FROM t1;
604 INSERT INTO t1(a) SELECT a FROM t1;
605 INSERT INTO t1(a) SELECT a FROM t1;
606 INSERT INTO t1(a) SELECT a FROM t1;
607 INSERT INTO t1(a) SELECT a FROM t1;
608 INSERT INTO t1(a) SELECT a FROM t1;
609 INSERT INTO t1(a) SELECT a FROM t1;
610 INSERT INTO t1(a) SELECT a FROM t1;
611 INSERT INTO t1(a) SELECT a FROM t1;
612 INSERT INTO t1(a) SELECT a FROM t1;
613 INSERT INTO t1 VALUES (20000), (10000);
614 
615 CREATE TABLE t2 (pk int AUTO_INCREMENT PRIMARY KEY, b int, c int, INDEX idx(b));
616 INSERT INTO t2(b,c) VALUES (10000, 3), (20000, 7), (20000, 1), (10000, 9), (20000, 5);
617 INSERT INTO t2(b,c) SELECT b,c FROM t2;
618 INSERT INTO t2(b,c) SELECT b,c FROM t2;
619 INSERT INTO t2(b,c) SELECT b,c FROM t2;
620 INSERT INTO t2(b,c) SELECT b,c FROM t2;
621 INSERT INTO t2(b,c) SELECT b,c FROM t2;
622 INSERT INTO t2(b,c) SELECT b,c FROM t2;
623 INSERT INTO t2(b,c) SELECT b,c FROM t2;
624 INSERT INTO t2(b,c) SELECT b,c FROM t2;
625 
626 --disable_result_log
627 ANALYZE TABLE t1,t2;
628 --enable_result_log
629 
630 set join_buffer_size=1024;
631 
632 EXPLAIN SELECT AVG(c) FROM t1,t2 WHERE t1.a=t2.b;
633 SELECT AVG(c) FROM t1,t2 WHERE t1.a=t2.b;
634 
635 set join_buffer_size=default;
636 
637 DROP TABLE t1, t2;
638 
639 --echo #
640 --echo # Bug #41894: big join buffer of level 7 used to join records
641 --echo # with null values in place of varchar strings
642 --echo #
643 
644 CREATE TABLE t1 (a int NOT NULL AUTO_INCREMENT PRIMARY KEY,
645  b varchar(127) DEFAULT NULL);
646 
647 INSERT INTO t1(a) VALUES (1);
648 INSERT INTO t1(b) SELECT b FROM t1;
649 INSERT INTO t1(b) SELECT b FROM t1;
650 INSERT INTO t1(b) SELECT b FROM t1;
651 INSERT INTO t1(b) SELECT b FROM t1;
652 INSERT INTO t1(b) SELECT b FROM t1;
653 INSERT INTO t1(b) SELECT b FROM t1;
654 INSERT INTO t1(b) SELECT b FROM t1;
655 INSERT INTO t1(b) SELECT b FROM t1;
656 INSERT INTO t1(b) SELECT b FROM t1;
657 INSERT INTO t1(b) SELECT b FROM t1;
658 INSERT INTO t1(b) SELECT b FROM t1;
659 INSERT INTO t1(b) SELECT b FROM t1;
660 INSERT INTO t1(b) SELECT b FROM t1;
661 INSERT INTO t1(b) SELECT b FROM t1;
662 
663 CREATE TABLE t2 (a int NOT NULL PRIMARY KEY, b varchar(127) DEFAULT NULL);
664 INSERT INTO t2 SELECT * FROM t1;
665 
666 CREATE TABLE t3 (a int NOT NULL PRIMARY KEY, b varchar(127) DEFAULT NULL);
667 INSERT INTO t3 SELECT * FROM t1;
668 
669 set join_buffer_size=1024*1024;
670 
671 EXPLAIN
672 SELECT COUNT(*) FROM t1,t2,t3
673  WHERE t1.a=t2.a AND t2.a=t3.a AND
674  t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL;
675 
676 SELECT COUNT(*) FROM t1,t2,t3
677  WHERE t1.a=t2.a AND t2.a=t3.a AND
678  t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL;
679 
680 set join_buffer_size=default;
681 
682 DROP TABLE t1,t2,t3;
683 
684 --echo #
685 --echo # Bug #42020: join buffer is used for outer join with fields of
686 --echo # several outer tables in join buffer
687 --echo #
688 
689 CREATE TABLE t1 (
690  a bigint NOT NULL,
691  PRIMARY KEY (a)
692 );
693 INSERT INTO t1 VALUES
694  (2), (1);
695 
696 CREATE TABLE t2 (
697  a bigint NOT NULL,
698  b bigint NOT NULL,
699  PRIMARY KEY (a,b)
700 );
701 INSERT INTO t2 VALUES
702  (2,30), (2,40), (2,50), (2,60), (2,70), (2,80),
703  (1,10), (1, 20), (1,30), (1,40), (1,50);
704 
705 CREATE TABLE t3 (
706  pk bigint NOT NULL AUTO_INCREMENT,
707  a bigint NOT NULL,
708  b bigint NOT NULL,
709  val bigint DEFAULT '0',
710  PRIMARY KEY (pk),
711  KEY idx (a,b)
712 );
713 INSERT INTO t3(a,b) VALUES
714  (2,30), (2,40), (2,50), (2,60), (2,70), (2,80),
715  (4,30), (4,40), (4,50), (4,60), (4,70), (4,80),
716  (5,30), (5,40), (5,50), (5,60), (5,70), (5,80),
717  (7,30), (7,40), (7,50), (7,60), (7,70), (7,80);
718 
719 --sorted_result
720 SELECT t1.a, t2.a, t3.a, t2.b, t3.b, t3.val
721  FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b)
722  WHERE t1.a=t2.a;
723 
724 set join_buffer_size=256;
725 
726 EXPLAIN
727 SELECT t1.a, t2.a, t3.a, t2.b, t3.b, t3.val
728  FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b)
729  WHERE t1.a=t2.a;
730 --sorted_result
731 SELECT t1.a, t2.a, t3.a, t2.b, t3.b, t3.val
732  FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b)
733  WHERE t1.a=t2.a;
734 
735 DROP INDEX idx ON t3;
736 
737 EXPLAIN
738 SELECT t1.a, t2.a, t3.a, t2.b, t3.b, t3.val
739  FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b)
740  WHERE t1.a=t2.a;
741 
742 --sorted_result
743 SELECT t1.a, t2.a, t3.a, t2.b, t3.b, t3.val
744  FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b)
745  WHERE t1.a=t2.a;
746 
747 set join_buffer_size=default;
748 DROP TABLE t1,t2,t3;
749 
750 #
751 # WL#4424 Full index condition pushdown with batched key access join
752 #
753 create table t1(f1 int, f2 int);
754 insert into t1 values (1,1),(2,2),(3,3);
755 create table t2(f1 int not null, f2 int not null, f3 char(200), key(f1,f2));
756 insert into t2 values (1,1, 'qwerty'),(1,2, 'qwerty'),(1,3, 'qwerty');
757 insert into t2 values (2,1, 'qwerty'),(2,2, 'qwerty'),(2,3, 'qwerty'),
758  (2,4, 'qwerty'),(2,5, 'qwerty');
759 insert into t2 values (3,1, 'qwerty'),(3,4, 'qwerty');
760 insert into t2 values (4,1, 'qwerty'),(4,2, 'qwerty'),(4,3, 'qwerty'),
761  (4,4, 'qwerty');
762 insert into t2 values (1,1, 'qwerty'),(1,2, 'qwerty'),(1,3, 'qwerty');
763 insert into t2 values (2,1, 'qwerty'),(2,2, 'qwerty'),(2,3, 'qwerty'),
764  (2,4, 'qwerty'),(2,5, 'qwerty');
765 insert into t2 values (3,1, 'qwerty'),(3,4, 'qwerty');
766 insert into t2 values (4,1, 'qwerty'),(4,2, 'qwerty'),(4,3, 'qwerty'),
767  (4,4, 'qwerty');
768 
769 --sorted_result
770 select t2.f1, t2.f2, t2.f3 from t1,t2
771 where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
772 
773 explain select t2.f1, t2.f2, t2.f3 from t1,t2
774 where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
775 
776 drop table t1,t2;
777 
778 --echo #
779 --echo # Bug #42955: join with GROUP BY/ORDER BY and when BKA is enabled
780 --echo #
781 
782 create table t1 (d int, id1 int, index idx1 (d, id1));
783 insert into t1 values
784  (3, 20), (2, 40), (3, 10), (1, 10), (3, 20), (1, 40), (2, 30), (3, 30);
785 
786 create table t2 (id1 int, id2 int, index idx2 (id1));
787 insert into t2 values
788  (20, 100), (30, 400), (20, 400), (30, 200), (10, 300), (10, 200), (40, 100),
789  (40, 200), (30, 300), (10, 400), (20, 200), (20, 300);
790 
791 explain
792 select t1.id1, sum(t2.id2) from t1 join t2 on t1.id1=t2.id1
793  where t1.d=3 group by t1.id1;
794 
795 select t1.id1, sum(t2.id2) from t1 join t2 on t1.id1=t2.id1
796  where t1.d=3 group by t1.id1;
797 
798 explain
799 select t1.id1 from t1 join t2 on t1.id1=t2.id1
800  where t1.d=3 and t2.id2 > 200 order by t1.id1;
801 
802 select t1.id1 from t1 join t2 on t1.id1=t2.id1
803  where t1.d=3 and t2.id2 > 200 order by t1.id1;
804 
805 drop table t1,t2;
806 
807 --echo #
808 --echo # Bug #44019: star-like multi-join query executed optimizer_join_cache_level=6
809 --echo #
810 
811 create table t1 (a int, b int, c int, d int);
812 create table t2 (b int, e varchar(16), index idx(b));
813 create table t3 (d int, f varchar(16), index idx(d));
814 create table t4 (c int, g varchar(16), index idx(c));
815 
816 insert into t1 values
817  (5, 50, 500, 5000), (3, 30, 300, 3000), (9, 90, 900, 9000),
818  (2, 20, 200, 2000), (4, 40, 400, 4000), (8, 80, 800, 800),
819  (7, 70, 700, 7000);
820 insert into t2 values
821  (30, 'bbb'), (10, 'b'), (70, 'bbbbbbb'), (60, 'bbbbbb'),
822  (31, 'bbb'), (11, 'b'), (71, 'bbbbbbb'), (61, 'bbbbbb'),
823  (32, 'bbb'), (12, 'b'), (72, 'bbbbbbb'), (62, 'bbbbbb');
824 insert into t3 values
825  (4000, 'dddd'), (3000, 'ddd'), (1000, 'd'), (8000, 'dddddddd'),
826  (4001, 'dddd'), (3001, 'ddd'), (1001, 'd'), (8001, 'dddddddd'),
827  (4002, 'dddd'), (3002, 'ddd'), (1002, 'd'), (8002, 'dddddddd');
828 insert into t4 values
829  (200, 'cc'), (600, 'cccccc'), (300, 'ccc'), (500, 'ccccc'),
830  (201, 'cc'), (601, 'cccccc'), (301, 'ccc'), (501, 'ccccc'),
831  (202, 'cc'), (602, 'cccccc'), (302, 'ccc'), (502, 'ccccc');
832 
833 --disable_result_log
834 --disable_warnings
835 analyze table t2,t3,t4;
836 --enable_warnings
837 --enable_result_log
838 
839 explain
840 select t1.a, t1.b, t1.c, t1.d, t2.e, t3.f, t4.g from t1,t2,t3,t4
841  where t2.b=t1.b and t3.d=t1.d and t4.c=t1.c;
842 
843 select t1.a, t1.b, t1.c, t1.d, t2.e, t3.f, t4.g from t1,t2,t3,t4
844  where t2.b=t1.b and t3.d=t1.d and t4.c=t1.c;
845 
846 drop table t1,t2,t3,t4;
847 
848 --echo #
849 --echo # Bug #44250: Corruption of linked join buffers when using BKA
850 --echo #
851 
852 CREATE TABLE t1 (
853  id1 bigint(20) DEFAULT NULL,
854  id2 bigint(20) DEFAULT NULL,
855  id3 bigint(20) DEFAULT NULL,
856  num1 bigint(20) DEFAULT NULL,
857  num2 int(11) DEFAULT NULL,
858  num3 bigint(20) DEFAULT NULL
859 );
860 
861 CREATE TABLE t2 (
862  id3 bigint(20) NOT NULL DEFAULT '0',
863  id4 bigint(20) DEFAULT NULL,
864  enum1 enum('Enabled','Disabled','Paused') DEFAULT NULL,
865  PRIMARY KEY (id3)
866 );
867 
868 CREATE TABLE t3 (
869  id4 bigint(20) NOT NULL DEFAULT '0',
870  text1 text,
871  PRIMARY KEY (id4)
872 );
873 
874 CREATE TABLE t4 (
875  id2 bigint(20) NOT NULL DEFAULT '0',
876  dummy int(11) DEFAULT '0',
877  PRIMARY KEY (id2)
878 );
879 
880 CREATE TABLE t5 (
881  id1 bigint(20) NOT NULL DEFAULT '0',
882  id2 bigint(20) NOT NULL DEFAULT '0',
883  enum2 enum('Active','Deleted','Paused') DEFAULT NULL,
884  PRIMARY KEY (id1,id2)
885 );
886 
887 --disable_query_log
888 --disable_result_log
889 --disable_warnings
890 
891 INSERT INTO t1 VALUES
892 (228172702,72485641,2667134182,10,1,14),(228172702,94266195,2667134182,134,0,134),
893 (228172702,94266195,2667134182,15,0,15),(228172702,94266195,2667134182,2,0,3),
894 (228172702,818095880,2667134182,1,1,1),(228172702,1004959639,2667134182,3,0,3),
895 (228172702,1297484422,2667134182,1,2,1),(228172702,1730911800,2667134182,11,0,28),
896 (228172702,1730911800,2667134182,4,0,4),(228172702,2182755982,2667134182,5,0,15),
897 (228172702,2182755982,2667134182,1,0,1),(228172702,2968841184,2667134182,1,0,1),
898 (228172702,4765525626,2667134182,2,0,3),(228172702,4765525626,2667134182,29,0,38),
899 (228172702,4765525626,2667134182,7,0,7),(228172702,4765525626,2667134182,7,0,8),
900 (228172702,5330573302,2667134182,1,0,1),(228512602,191149872,935692942,3,0,17),
901 (228512602,259118753,935692942,13,7,13),(228512602,259118753,935692942,83,33,83),
902 (228512602,585705465,935692942,1,0,1),(228512602,585716775,935692942,1,0,1),
903 (228512602,585716775,935692942,6,6,6),(228512602,585716775,935692942,1,1,1),
904 (228512602,1105371172,935692942,2,0,3),(228512602,1105371172,935692942,7,2,7),
905 (228512602,1314223462,935692942,1,0,1),(228512602,1314223642,935692942,1,1,1),
906 (228512602,1411060522,935692942,1,0,1),(228512602,1467398182,935692942,1,0,1),
907 (228512602,1467398182,935692942,3,0,4),(228512602,1467398242,935692942,10,0,41),
908 (228512602,1467398242,935692942,28,0,40),(228512602,1467398242,935692942,0,0,0),
909 (228512602,1467398242,935692942,29,2,33),(228512602,1734178942,935692942,1,0,1),
910 (228512602,1734179122,935692942,1,0,4),(228512602,1734179122,935692942,3,0,6),
911 (228512602,1953612870,935692942,1,0,1),(228512602,2271510562,935692942,1,1,1),
912 (228512602,2271525022,935692942,0,0,0),(228512602,3058831402,935692942,1,1,1),
913 (228512602,3723638842,935692942,1,1,1),(228512602,3723638842,935692942,4,3,4),
914 (228512602,3723836602,935692942,1,1,1),(228512602,3723836842,935692942,1,1,1),
915 (228512602,3723836962,935692942,1,1,1),(228512602,3723988102,935692942,11,4,11),
916 (228512602,3723989182,935692942,8,3,8),(228512602,5920283002,935692942,1,0,1),
917 (228512602,5920314232,935692942,1,0,1),(228512602,191149872,1241589892,0,0,0),
918 (228512602,191149872,1241589892,2,0,4),(228512602,191149872,1241589892,0,0,0),
919 (228512602,259118753,1241589892,8,4,8),(228512602,259118753,1241589892,70,33,70),
920 (228512602,259118753,1241589892,1,1,1),(228512602,585716775,1241589892,8,7,8),
921 (228512602,1105371172,1241589892,1,0,1),(228512602,1105371172,1241589892,9,0,9),
922 (228512602,1314223462,1241589892,1,0,1),(228512602,1411060522,1241589892,1,1,1),
923 (228512602,1467398182,1241589892,1,0,1),(228512602,1467398182,1241589892,4,1,4),
924 (228512602,1467398182,1241589892,1,0,1),(228512602,1467398242,1241589892,10,0,28),
925 (228512602,1467398242,1241589892,37,1,78),(228512602,1467398242,1241589892,28,9,30),
926 (228512602,1467398242,1241589892,5,0,6),(228512602,1734179122,1241589892,3,1,18),
927 (228512602,1734179122,1241589892,1,1,1),(228512602,1734179122,1241589892,2,0,3),
928 (228512602,1953611430,1241589892,1,1,1),(228512602,1953611430,1241589892,1,1,1),
929 (228512602,1953612870,1241589892,1,0,1),(228512602,2026844250,1241589892,1,0,1),
930 (228512602,2271510562,1241589892,1,1,1),(228512602,2271525022,1241589892,1,0,1),
931 (228512602,2941612417,1241589892,1,0,1),(228512602,3723988102,1241589892,1,0,1);
932 INSERT INTO t1 VALUES
933 (228512602,3723988102,1241589892,11,4,11),(228512602,3723989002,1241589892,1,0,1),
934 (228512602,3752960902,1241589892,2,2,4),(228808822,17304242,935693782,6,0,17),
935 (228808822,17304242,935693782,28,1,50),(228808822,17304242,935693782,29,3,61),
936 (228808822,17304242,935693782,6,0,13),(228808822,30931012,935693782,21,0,60),
937 (228808822,30931012,935693782,5,0,13),(228808822,37254452,935693782,3,0,3),
938 (228808822,42726891,935693782,1,0,4),(228808822,42726891,935693782,3,0,6),
939 (228808822,76261151,935693782,8,0,18),(228808822,88240139,935693782,1,0,1),
940 (228808822,88240139,935693782,3,0,3),(228808822,94730895,935693782,2,0,4),
941 (228808822,179737402,935693782,10,0,13),(228808822,179737402,935693782,7,0,8),
942 (228808822,179737402,935693782,3,0,4),(228808822,271288782,935693782,1,0,6),
943 (228808822,304690943,935693782,5,2,10),(228808822,304691183,935693782,4,0,16),
944 (228808822,568994960,935693782,1,0,1),(228808822,631705925,935693782,1,0,1),
945 (228808822,631745165,935693782,1,0,1),(228808822,631749605,935693782,1,0,4),
946 (228808822,1057787002,935693782,1,0,1),(228808822,1057787002,935693782,2,1,4),
947 (228808822,1057787002,935693782,12,1,20),(228808822,1057788022,935693782,2,0,40),
948 (228808822,1057788022,935693782,2,1,3),(228808822,1057788022,935693782,9,2,16),
949 (228808822,1335646822,935693782,3,1,6),(228808822,1335646882,935693782,1,0,3),
950 (228808822,1335646882,935693782,1,0,3),(228808822,1335646942,935693782,7,2,15),
951 (228808822,5510586183,935693782,1,1,1),(228808822,17304242,2482416112,11,0,28),
952 (228808822,17304242,2482416112,34,0,62),(228808822,17304242,2482416112,43,2,89),
953 (228808822,17304242,2482416112,9,0,19),(228808822,30931012,2482416112,32,2,84),
954 (228808822,30931012,2482416112,6,0,14),(228808822,30931012,2482416112,2,0,9),
955 (228808822,37254452,2482416112,1,1,1),(228808822,42726891,2482416112,2,0,10),
956 (228808822,76261151,2482416112,11,0,26),(228808822,88240139,2482416112,3,0,3),
957 (228808822,88240139,2482416112,1,0,1),(228808822,88240139,2482416112,3,0,4),
958 (228808822,94730895,2482416112,1,0,3),(228808822,125469602,2482416112,0,0,0),
959 (228808822,179737402,2482416112,4,0,10),(228808822,179737402,2482416112,8,1,9),
960 (228808822,179737402,2482416112,7,1,9),(228808822,179737402,2482416112,1,0,1),
961 (228808822,271288782,2482416112,2,0,14),(228808822,304690943,2482416112,3,0,6),
962 (228808822,304691183,2482416112,1,0,4),(228808822,555689643,2482416112,2,1,8),
963 (228808822,555689643,2482416112,1,0,4),(228808822,631705925,2482416112,1,0,1),
964 (228808822,631712555,2482416112,1,0,1),(228808822,631745165,2482416112,1,0,1),
965 (228808822,710348755,2482416112,1,0,1),(228808822,753718113,2482416112,1,0,1),
966 (228808822,1057787002,2482416112,1,0,4),(228808822,1057787002,2482416112,1,0,1),
967 (228808822,1057787002,2482416112,4,1,7),(228808822,1057788022,2482416112,7,0,12),
968 (228808822,1057788022,2482416112,3,0,37),(228808822,1057788022,2482416112,0,0,0),
969 (228808822,1057788022,2482416112,12,0,15),(228808822,1335646822,2482416112,14,1,28),
970 (228808822,1335646882,2482416112,1,1,3),(228808822,1335646942,2482416112,5,1,9),
971 (228808822,1335646942,2482416112,1,0,1),(230941762,16069490,2691187582,0,0,0),
972 (230941762,16705991,2691187582,16,0,30),(230941762,16705991,2691187582,12,3,12);
973 INSERT INTO t1 VALUES
974 (230941762,16705991,2691187582,1,0,1),(230941762,27714032,2691187582,6,0,16),
975 (230941762,27714032,2691187582,1,0,1),(230941762,27714032,2691187582,9,0,14),
976 (230941762,28676710,2691187582,3,1,4),(230941762,370319272,2691187582,7,0,7),
977 (230941762,1409814802,2691187582,1,0,3),(230941762,1409814982,2691187582,1,0,1),
978 (230941762,1409814982,2691187582,1,1,1),(230941762,2069703256,2691187582,1,0,3),
979 (230941762,16705991,2691187672,8,1,20),(230941762,16705991,2691187672,11,6,11),
980 (230941762,16705991,2691187672,1,0,1),(230941762,27714032,2691187672,5,0,20),
981 (230941762,27714032,2691187672,1,0,10),(230941762,27714032,2691187672,12,2,17),
982 (230941762,28676710,2691187672,1,0,1),(230941762,142889951,2691187672,2,0,10),
983 (230941762,172526592,2691187672,1,1,1),(230941762,293109282,2691187672,1,0,1),
984 (230941762,370319272,2691187672,10,0,10),(230941762,1409814802,2691187672,1,0,3),
985 (230941762,1409814922,2691187672,1,0,1),(230941762,1409814982,2691187672,1,0,1),
986 (230941762,16069490,2694472582,1,1,1),(230941762,16069490,2694472582,1,1,1),
987 (230941762,16705991,2694472582,15,0,45),(230941762,16705991,2694472582,13,2,15),
988 (230941762,27714032,2694472582,9,0,34),(230941762,27714032,2694472582,2,0,4),
989 (230941762,27714032,2694472582,10,2,14),(230941762,28676710,2694472582,4,0,12),
990 (230941762,28676710,2694472582,1,0,1),(230941762,172526592,2694472582,1,0,4),
991 (230941762,293109282,2694472582,1,0,1),(230941762,370319272,2694472582,6,0,6),
992 (230941762,1409814802,2694472582,1,0,3),(230941762,1409814862,2694472582,1,0,4),
993 (230941762,1409814982,2694472582,1,0,1),(230941762,2680867980,2694472582,1,0,3),
994 (230942122,25451690,935695702,1,0,9),(230942122,31549341,935695702,2,0,18),
995 (230942122,31549341,935695702,2,0,4),(230942122,38900150,935695702,4,0,29),
996 (230942122,38900150,935695702,4,1,13),(230942122,906919252,935695702,39,0,271),
997 (230942122,906919252,935695702,20,0,83),(230942122,906919252,935695702,2,1,9),
998 (230942122,1409816782,935695702,3,0,18),(230942122,1409816842,935695702,1,0,7),
999 (230942122,1409816842,935695702,1,0,3),(230942122,1409816902,935695702,1,0,6),
1000 (230942122,2145075862,935695702,4,1,4),(230942122,25451690,935695822,2,0,16),
1001 (230942122,38900150,935695822,3,0,26),(230942122,38900150,935695822,1,0,3),
1002 (230942122,906919252,935695822,24,0,176),(230942122,906919252,935695822,20,0,74),
1003 (230942122,906919252,935695822,1,0,3),(230942122,1409816782,935695822,2,0,21),
1004 (230942122,1409816782,935695822,2,0,21),(230942122,1409816842,935695822,1,0,3),
1005 (230942122,1409816902,935695822,1,0,7),(231112162,1413675742,935696902,1,0,1),
1006 (231112162,1413675742,935696962,0,0,0),(231112162,1413675742,935696962,4,2,4),
1007 (231112162,1413675922,935696962,1,0,1),(231112162,1413675922,935696962,1,0,1),
1008 (231112162,1413675742,1248588922,1,0,1),(231112162,1413675922,1248588922,3,0,3),
1009 (233937022,12641121,935697562,2,0,13),(233937022,12653871,935697562,1,0,1),
1010 (233937022,12693551,935697562,1,0,1),(233937022,12910461,935697562,2,0,6),
1011 (233937022,12910461,935697562,26,0,65),(233937022,12910461,935697562,44,8,45),
1012 (233937022,12910481,935697562,12,0,19),(233937022,12910481,935697562,7,2,9),
1013 (233937022,12910481,935697562,1,0,1),(233937022,12910511,935697562,8,0,8);
1014 INSERT INTO t1 VALUES
1015 (233937022,12910511,935697562,20,6,22),(233937022,30879781,935697562,34,0,34),
1016 (233937022,30879781,935697562,3,0,4),(233937022,30879781,935697562,1,0,1),
1017 (233937022,45631730,935697562,8,0,39),(233937022,54079090,935697562,12,0,12),
1018 (233937022,54079090,935697562,7,0,11),(233937022,54079090,935697562,14,0,16),
1019 (233937022,94431735,935697562,6,0,31),(233937022,96876131,935697562,3,0,4),
1020 (233937022,105436492,935697562,4,0,4),(233937022,128981555,935697562,3,0,3),
1021 (233937022,145211004,935697562,1,0,1),(233937022,146382622,935697562,1,0,1),
1022 (233937022,175678702,935697562,1,0,4),(233937022,298998998,935697562,1,0,1),
1023 (233937022,335995773,935697562,3,0,3),(233937022,335995773,935697562,2,0,3),
1024 (233937022,347447636,935697562,0,0,0),(233937022,459295955,935697562,3,0,3),
1025 (233937022,459376625,935697562,1,0,1),(233937022,495877773,935697562,1,0,1),
1026 (233937022,497008702,935697562,1,0,3),(233937022,561944105,935697562,1,0,1),
1027 (233937022,561944105,935697562,1,0,1),(233937022,586535965,935697562,3,0,3),
1028 (233937022,631549775,935697562,1,0,7),(233937022,647138479,935697562,1,0,1),
1029 (233937022,655870453,935697562,4,0,7),(233937022,694832725,935697562,1,0,1),
1030 (233937022,864475057,935697562,1,0,1),(233937022,1010757503,935697562,1,0,4),
1031 (233937022,1010847736,935697562,2,0,9),(233937022,1287437116,935697562,2,0,4),
1032 (233937022,1337693056,935697562,1,0,1),(233937022,1569279742,935697562,1,1,1),
1033 (233937022,1569280102,935697562,2,0,7),(233937022,1569280882,935697562,2,1,3),
1034 (233937022,1569281062,935697562,1,0,1),(233937022,1569281962,935697562,1,0,3),
1035 (233937022,2823580588,935697562,2,0,8),(233937022,2823580588,935697562,3,1,10),
1036 (233937022,2842066134,935697562,1,0,1),(233937022,2904542181,935697562,1,0,1),
1037 (233937022,3058483627,935697562,1,0,1),(233937022,4507287318,935697562,1,0,1),
1038 (233937022,5283489892,935697562,1,0,1),(233937022,11890554322,935697562,16,0,16),
1039 (233937022,11890756102,935697562,3,1,3),(233937022,12641121,953996482,1,0,7),
1040 (233937022,12641851,953996482,1,0,1),(233937022,12641851,953996482,1,0,1),
1041 (233937022,12910461,953996482,4,0,14),(233937022,12910461,953996482,20,2,23),
1042 (233937022,12910461,953996482,43,5,43),(233937022,12910461,953996482,1,0,1),
1043 (233937022,12910481,953996482,17,2,30),(233937022,12910511,953996482,7,1,8),
1044 (233937022,12910511,953996482,23,5,23),(233937022,14913951,953996482,2,0,3),
1045 (233937022,21835210,953996482,1,1,1),(233937022,26481052,953996482,1,1,1),
1046 (233937022,26481052,953996482,1,0,1),(233937022,30879781,953996482,2,0,3),
1047 (233937022,30879781,953996482,22,0,22),(233937022,35617681,953996482,1,0,1),
1048 (233937022,45631730,953996482,3,0,11),(233937022,54079090,953996482,13,0,13),
1049 (233937022,54079090,953996482,11,0,16),(233937022,54079090,953996482,29,0,34),
1050 (233937022,94431735,953996482,3,0,9),(233937022,96876131,953996482,3,0,4),
1051 (233937022,105436492,953996482,1,0,1),(233937022,105437952,953996482,3,1,3),
1052 (233937022,123639716,953996482,1,0,6),(233937022,145211004,953996482,2,0,3),
1053 (233937022,145211004,953996482,2,1,3),(233937022,146382622,953996482,1,0,1),
1054 (233937022,146382622,953996482,1,0,1),(233937022,155454324,953996482,1,0,1);
1055 INSERT INTO t1 VALUES
1056 (233937022,298998998,953996482,1,1,1),(233937022,335995773,953996482,1,0,1),
1057 (233937022,335995773,953996482,7,2,9),(233937022,459295955,953996482,2,0,4),
1058 (233937022,561944105,953996482,1,0,1),(233937022,655870453,953996482,5,0,9),
1059 (233937022,694832725,953996482,1,0,1),(233937022,694832725,953996482,1,0,1),
1060 (233937022,864475057,953996482,4,1,4),(233937022,897886118,953996482,1,0,1),
1061 (233937022,897886118,953996482,1,0,3),(233937022,1005147016,953996482,1,0,1),
1062 (233937022,1010757503,953996482,1,0,1),(233937022,1082217873,953996482,1,0,1),
1063 (233937022,1286925326,953996482,1,0,1),(233937022,1337693056,953996482,4,0,4),
1064 (233937022,1407236408,953996482,2,0,3),(233937022,1569280102,953996482,1,0,6),
1065 (233937022,1569280222,953996482,1,0,1),(233937022,1569281062,953996482,1,0,1),
1066 (233937022,1569284362,953996482,1,0,3),(233937022,2823580588,953996482,1,0,3),
1067 (233937022,2904542181,953996482,3,0,7),(233937022,4371581485,953996482,1,0,1),
1068 (233937022,5283491332,953996482,1,0,1),(233937022,7300486013,953996482,1,1,1),
1069 (233937022,11890554322,953996482,16,0,16),(233937022,11890754392,953996482,1,0,1),
1070 (233937022,11890754392,953996482,0,0,0);
1071 
1072 INSERT INTO t2 VALUES
1073 (2667134182,2567095402,'Enabled'),(935692942,826927822,'Enabled'),
1074 (1241589892,1130891152,'Enabled'),(935693782,826928662,'Enabled'),
1075 (2482416112,2381969632,'Enabled'),(2691187582,2591198842,'Enabled'),
1076 (2691187672,2591198932,'Enabled'),(2694472582,2594492212,'Paused'),
1077 (935695702,826930582,'Enabled'),(935695822,826930702,'Enabled'),
1078 (935696902,826931782,'Enabled'),(935696962,826931842,'Enabled'),
1079 (1248588922,1137805582,'Enabled'),(935697562,826932442,'Paused'),
1080 (953996482,845181202,'Enabled'),(2702549092,2602579882,'Enabled'),
1081 (2702549182,2602579972,'Enabled'),(2702550712,2602581502,'Enabled'),
1082 (1125312412,1015179502,'Enabled'),(2708245462,2608290202,'Enabled'),
1083 (2708247262,2608292002,'Enabled'),(935699242,826934122,'Enabled'),
1084 (1125312502,1015179592,'Enabled'),(1125312592,1015179682,'Enabled'),
1085 (2711450452,2611502302,'Enabled'),(2711452252,2611504102,'Enabled'),
1086 (935699902,826934782,'Enabled'),(935700262,826935142,'Enabled'),
1087 (1215381442,1104677032,'Enabled'),(2503848082,2403457762,'Enabled'),
1088 (935701762,826936642,'Enabled'),(935701822,826936702,'Enabled'),
1089 (1468810282,1355227402,'Enabled'),(935702842,826937722,'Enabled'),
1090 (1125312682,1015179772,'Enabled'),(2713816102,2613869392,'Enabled'),
1091 (2688452032,2588455012,'Enabled'),(2688452212,2588455192,'Enabled'),
1092 (2701527412,2601556942,'Enabled'),(1623918712,1510242412,'Enabled'),
1093 (2701521922,2601551452,'Enabled'),(2701527772,2601557302,'Enabled');
1094 
1095 INSERT INTO `t3` VALUES
1096 (2567095402,'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'),
1097 (826927822,'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'),(1130891152,'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'),
1098 (826928662,'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'),
1099 (2381969632,'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'),
1100 (2591198842,'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'),
1101 (2591198932,'EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE'),
1102 (2594492212,'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'),
1103 (826930582,'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG'),
1104 (826930702,'GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG'),
1105 (826931782,'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'),
1106 (826931842,'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'),
1107 (1137805582,'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB');
1108 
1109 INSERT INTO t4 VALUES
1110 (12618121,0),(12641121,0),(12641851,0),(12653871,0),(12665801,0),(12666811,0),
1111 (12693551,0),(12910461,0),(12910481,0),(12910511,0),(14787251,0),(14913941,0),
1112 (14913951,0),(16069490,0),(16705901,0),(16705991,0),(17291062,0),(17304242,0),
1113 (20737411,0),(21524370,0),(21835210,0),(25300361,0),(25451690,0),(25728842,0),
1114 (26481052,0),(27714032,0),(28676710,0),(30879781,0),(30931012,0),(31549341,0),
1115 (35617681,0),(37254452,0),(38619430,0),(38895490,0),(38900150,0),(39798990,0),
1116 (42726891,0),(42867050,0),(43439030,0),(45631730,0),(47171711,0),(49539832,0),
1117 (54079090,0),(60442241,0),(65320501,0),(72485641,0),(76261151,0),(87949714,0),
1118 (88240139,0),(94266195,0),(94431735,0),(94730895,0),(96876131,0);
1119 
1120 INSERT INTO t5 VALUES
1121 (228172702,72485641,'Active'),(228172702,94266195,'Active'),
1122 (228172702,818095880,'Active'),(228172702,1004959639,'Active'),
1123 (228172702,1297484242,'Active'),(228172702,1297484422,'Active'),
1124 (228172702,1730911800,'Active'),(228172702,1808277389,'Active'),
1125 (228172702,2182755982,'Active'),(228172702,2968841184,'Active'),
1126 (228172702,3015116542,'Active'),(228172702,3752383170,'Active'),
1127 (228172702,4765525626,'Active'),(228172702,5330573302,'Active'),
1128 (228512602,191149872,'Active'),(228512602,259118753,'Active'),
1129 (228512602,585705465,'Active'),(228512602,585716775,'Active'),
1130 (228512602,1105371172,'Active'),(228512602,1314223462,'Active'),
1131 (228512602,1314223642,'Active'),(228512602,1411060522,'Active'),
1132 (228512602,1467398182,'Active'),(228512602,1467398242,'Active'),
1133 (228512602,1734178942,'Active'),(228512602,1734179122,'Active'),
1134 (228512602,1953612870,'Active'),(228512602,2271510562,'Active'),
1135 (228512602,2271525022,'Active'),(228512602,2941612417,'Active'),
1136 (228512602,3058831402,'Active'),(228512602,3723638842,'Active'),
1137 (228512602,3723836602,'Active'),(228512602,3723836842,'Active'),
1138 (228512602,3723836962,'Active'),(228512602,3723988102,'Active'),
1139 (228512602,3723989182,'Active'),(228512602,5920283002,'Active'),
1140 (228512602,5920314232,'Active'),(228512602,585717615,'Active'),
1141 (228512602,1953611430,'Active'),(228512602,2026844250,'Active'),
1142 (228512602,3058831462,'Active'),(228512602,3723836902,'Active'),
1143 (228512602,3723989002,'Active'),(228512602,3752960902,'Active'),
1144 (228808822,17304242,'Active'),(228808822,30931012,'Active'),
1145 (228808822,37254452,'Active'),(228808822,42726891,'Active'),
1146 (228808822,76261151,'Active'),(228808822,88240139,'Active'),
1147 (228808822,94730895,'Active'),(228808822,125469622,'Active'),
1148 (228808822,179737402,'Active'),(228808822,271288782,'Active'),
1149 (228808822,304690943,'Active'),(228808822,304691183,'Active'),
1150 (228808822,496123368,'Active'),(228808822,555689643,'Active'),
1151 (228808822,568994960,'Active'),(228808822,631705925,'Active'),
1152 (228808822,631745165,'Active'),(228808822,631749605,'Active'),
1153 (228808822,1057787002,'Active'),(228808822,1057788022,'Active'),
1154 (228808822,1335646822,'Active'),(228808822,1335646882,'Active'),
1155 (228808822,1335646942,'Active'),(228808822,1612792238,'Active'),
1156 (228808822,5510586183,'Active'),(228808822,47171711,'Active'),
1157 (228808822,125469602,'Active'),(228808822,631712555,'Active'),
1158 (228808822,710348755,'Active'),(228808822,753718113,'Active'),
1159 (230941762,16069490,'Active'),(230941762,16705991,'Active'),
1160 (230941762,27714032,'Active'),(230941762,28676710,'Active');
1161 INSERT INTO t5 VALUES
1162 (230941762,370319272,'Active'),(230941762,1409814802,'Active'),
1163 (230941762,1409814982,'Active'),(230941762,2069703256,'Active'),
1164 (230941762,142889951,'Active'),(230941762,172526592,'Active'),
1165 (230941762,293109282,'Active'),(230941762,1409814922,'Active'),
1166 (230941762,1409814862,'Active'),(230941762,2680867980,'Active'),
1167 (230942122,25451690,'Active'),(230942122,31549341,'Active'),
1168 (230942122,38900150,'Active'),(230942122,464554745,'Active'),
1169 (230942122,906919252,'Active'),(230942122,1409816782,'Active'),
1170 (230942122,1409816842,'Active'),(230942122,1409816902,'Active'),
1171 (230942122,2145075862,'Active'),(231112162,1413675742,'Active'),
1172 (231112162,1413675922,'Active'),(231112162,1413675562,'Active'),
1173 (231112162,1413675802,'Active'),(233937022,12641121,'Active'),
1174 (233937022,12653871,'Active'),(233937022,12693551,'Active'),
1175 (233937022,12910461,'Active'),(233937022,12910481,'Active'),
1176 (233937022,12910511,'Active'),(233937022,14913941,'Active'),
1177 (233937022,30879781,'Active'),(233937022,45631730,'Active'),
1178 (233937022,54079090,'Active'),(233937022,65320501,'Active'),
1179 (233937022,94431735,'Active'),(233937022,96876131,'Active'),
1180 (233937022,105436492,'Active'),(233937022,105437952,'Active'),
1181 (233937022,128981555,'Active'),(233937022,145211004,'Active'),
1182 (233937022,146382622,'Active'),(233937022,148832422,'Active'),
1183 (233937022,175678702,'Active'),(233937022,260507673,'Active'),
1184 (233937022,298998998,'Active'),(233937022,335995773,'Active'),
1185 (233937022,347447636,'Active'),(233937022,459295955,'Active'),
1186 (233937022,459376625,'Active'),(233937022,495877773,'Active'),
1187 (233937022,497008702,'Active'),(233937022,561944105,'Active'),
1188 (233937022,586535965,'Active'),(233937022,631549775,'Active'),
1189 (233937022,647138479,'Active'),(233937022,655870453,'Active'),
1190 (233937022,694832725,'Active'),(233937022,835712045,'Active'),
1191 (233937022,864475057,'Active'),(233937022,864484777,'Active'),
1192 (233937022,1010757503,'Active'),(233937022,1010847736,'Active'),
1193 (233937022,1091554836,'Active'),(233937022,1287437116,'Active'),
1194 (233937022,1337693056,'Active'),(233937022,1569279742,'Active'),
1195 (233937022,1569280102,'Active'),(233937022,1569280222,'Active'),
1196 (233937022,1569280582,'Active'),(233937022,1569280882,'Active'),
1197 (233937022,1569281062,'Active'),(233937022,1569281962,'Active'),
1198 (233937022,1569284362,'Active'),(233937022,1743317015,'Active'),
1199 (233937022,2698799002,'Active'),(233937022,2698800742,'Active'),
1200 (233937022,2823580588,'Active'),(233937022,2842066134,'Active'),
1201 (233937022,2904542181,'Active'),(233937022,3058483627,'Active');
1202 INSERT INTO t5 VALUES
1203 (233937022,4507287318,'Active'),(233937022,5283489892,'Active'),
1204 (233937022,11890554322,'Active'),(233937022,11890756102,'Active'),
1205 (233937022,12641851,'Active'),(233937022,14913951,'Active'),
1206 (233937022,21835210,'Active'),(233937022,26481052,'Active'),
1207 (233937022,35617681,'Active'),(233937022,123639716,'Active'),
1208 (233937022,155454324,'Active'),(233937022,299001668,'Active'),
1209 (233937022,897886118,'Active'),(233937022,1005147016,'Active'),
1210 (233937022,1082217873,'Active'),(233937022,1286925326,'Active'),
1211 (233937022,1407236408,'Active'),(233937022,4371581485,'Active'),
1212 (233937022,5283491332,'Active'),(233937022,7300486013,'Active'),
1213 (233937022,11890754392,'Active');
1214 
1215 --enable_warnings
1216 --enable_result_log
1217 --enable_query_log
1218 
1219 set join_buffer_size=2048;
1220 
1221 EXPLAIN
1222 SELECT STRAIGHT_JOIN t1.id1, t1.num3, t3.text1, t3.id4, t2.id3, t4.dummy
1223  FROM t1 JOIN t2 JOIN t3 JOIN t4 JOIN t5
1224  WHERE t1.id1=t5.id1 AND t1.id2=t5.id2 and t4.id2=t1.id2 AND
1225  t5.enum2='Active' AND t3.id4=t2.id4 AND t2.id3=t1.id3 AND t3.text1<'D';
1226 
1227 --sorted_result
1228 SELECT STRAIGHT_JOIN t1.id1, t1.num3, t3.text1, t3.id4, t2.id3, t4.dummy
1229  FROM t1 JOIN t2 JOIN t3 JOIN t4 JOIN t5
1230  WHERE t1.id1=t5.id1 AND t1.id2=t5.id2 and t4.id2=t1.id2 AND
1231  t5.enum2='Active' AND t3.id4=t2.id4 AND t2.id3=t1.id3 AND t3.text1<'D';
1232 
1233 set join_buffer_size=default;
1234 
1235 DROP TABLE t1,t2,t3,t4,t5;
1236 
1237 --echo #
1238 --echo # Bug #46328: Use of aggregate function without GROUP BY clause
1239 --echo # returns many rows (vs. one )
1240 --echo #
1241 
1242 CREATE TABLE t1 (
1243  int_key int(11) NOT NULL,
1244  KEY int_key (int_key)
1245 );
1246 
1247 INSERT INTO t1 VALUES
1248 (0),(2),(2),(2),(3),(4),(5),(5),(6),(6),(8),(8),(9),(9);
1249 
1250 CREATE TABLE t2 (
1251  int_key int(11) NOT NULL,
1252  KEY int_key (int_key)
1253 );
1254 
1255 INSERT INTO t2 VALUES (2),(3);
1256 
1257 --echo
1258 
1259 --echo # The query shall return 1 record with a max value 9 and one of the
1260 --echo # int_key values inserted above (undefined which one). A changed
1261 --echo # execution plan may change the value in the second column
1262 SELECT MAX(t1.int_key), t1.int_key
1263 FROM t1 STRAIGHT_JOIN t2
1264 ORDER BY t1.int_key;
1265 
1266 --echo
1267 
1268 explain
1269 SELECT MAX(t1.int_key), t1.int_key
1270 FROM t1 STRAIGHT_JOIN t2
1271 ORDER BY t1.int_key;
1272 
1273 --echo
1274 
1275 DROP TABLE t1,t2;
1276 
1277 --echo #
1278 --echo # Bug #45019: join buffer contains two blob columns one of which is
1279 --echo # used in the key employed to access the joined table
1280 --echo #
1281 
1282 CREATE TABLE t1 (c1 int, c2 int, key (c2));
1283 INSERT INTO t1 VALUES (1,1);
1284 INSERT INTO t1 VALUES (2,2);
1285 
1286 CREATE TABLE t2 (c1 text, c2 text);
1287 INSERT INTO t2 VALUES('tt', 'uu');
1288 INSERT INTO t2 VALUES('zzzz', 'xxxxxxxxx');
1289 
1290 --disable_result_log
1291 ANALYZE TABLE t1,t2;
1292 --enable_result_log
1293 
1294 SELECT t1.*, t2.*, LENGTH(t2.c1), LENGTH(t2.c2) FROM t1,t2
1295  WHERE t1.c2=LENGTH(t2.c2) and t1.c1=LENGTH(t2.c1);
1296 
1297 DROP TABLE t1,t2;
1298 
1299 --echo #
1300 --echo # Regression test for
1301 --echo # Bug#46733 - NULL value not returned for aggregate on empty result
1302 --echo # set w/ semijoin on
1303 CREATE TABLE t1 (
1304  i int(11) NOT NULL,
1305  v varchar(1) DEFAULT NULL,
1306  PRIMARY KEY (i)
1307 );
1308 
1309 INSERT INTO t1 VALUES (10,'a'),(11,'b'),(12,'c'),(13,'d');
1310 
1311 CREATE TABLE t2 (
1312  i int(11) NOT NULL,
1313  v varchar(1) DEFAULT NULL,
1314  PRIMARY KEY (i)
1315 );
1316 
1317 INSERT INTO t2 VALUES (1,'x'),(2,'y');
1318 
1319 --echo
1320 
1321 SELECT MAX(t1.i)
1322 FROM t1 JOIN t2 ON t2.v
1323 ORDER BY t2.v;
1324 
1325 --echo
1326 
1327 EXPLAIN
1328 SELECT MAX(t1.i)
1329 FROM t1 JOIN t2 ON t2.v
1330 ORDER BY t2.v;
1331 
1332 --echo
1333 
1334 DROP TABLE t1,t2;
1335 
1336 --echo #
1337 --echo # Bug#51092: Linked join buffer gives wrong result
1338 --echo # for 3-way cross join
1339 --echo #
1340 
1341 CREATE TABLE t1 (a INT, b INT);
1342 INSERT INTO t1 VALUES (1,1),(2,2);
1343 
1344 CREATE TABLE t2 (a INT, b INT);
1345 INSERT INTO t2 VALUES (1,1),(2,2);
1346 
1347 CREATE TABLE t3 (a INT, b INT);
1348 INSERT INTO t3 VALUES (1,1),(2,2);
1349 
1350 EXPLAIN SELECT t1.* FROM t1,t2,t3;
1351 SELECT t1.* FROM t1,t2,t3;
1352 
1353 DROP TABLE t1,t2,t3;
1354 
1355 --echo #
1356 --echo # BUG#52394 Segfault in JOIN_CACHE::get_offset () at sql_select.h:445
1357 --echo #
1358 
1359 CREATE TABLE C(a int);
1360 INSERT INTO C VALUES(1),(2),(3),(4),(5);
1361 
1362 CREATE TABLE D (a int(11), b varchar(1));
1363 INSERT INTO D VALUES (6,'r'),(27,'o');
1364 
1365 CREATE TABLE E (a int(11) primary key, b varchar(1));
1366 INSERT INTO E VALUES
1367 (14,'d'),(15,'z'),(16,'e'),(17,'h'),(18,'b'),(19,'s'),(20,'e'),(21,'j'),(22,'e'),(23,'f'),(24,'v'),(25,'x'),(26,'m'),(27,'c');
1368 
1369 SELECT 1 FROM C,D,E WHERE D.a = E.a AND D.b = E.b;
1370 DROP TABLE C,D,E;
1371 
1372 --echo #
1373 --echo # BUG#52540 Crash in JOIN_CACHE::set_match_flag_if_none () at sql_join_cache.cc:1883
1374 --echo #
1375 
1376 CREATE TABLE t1 (a int);
1377 INSERT INTO t1 VALUES (2);
1378 CREATE TABLE t2 (a varchar(10));
1379 INSERT INTO t2 VALUES ('f'),('x');
1380 CREATE TABLE t3 (pk int(11) PRIMARY KEY);
1381 INSERT INTO t3 VALUES (2);
1382 CREATE TABLE t4 (a varchar(10));
1383 
1384 EXPLAIN SELECT 1
1385 FROM t2 LEFT JOIN
1386  ((t1 JOIN t3 ON t1.a = t3.pk)
1387  LEFT JOIN t4 ON 1 )
1388  ON 1 ;
1389 
1390 SELECT 1
1391 FROM t2 LEFT JOIN
1392  ((t1 JOIN t3 ON t1.a = t3.pk)
1393  LEFT JOIN t4 ON 1 )
1394  ON 1 ;
1395 
1396 DROP TABLE t1,t2,t3,t4;
1397 
1398 --echo #
1399 --echo # Bug#51084: Batched key access crashes for SELECT with
1400 --echo # derived table and LEFT JOIN
1401 --echo #
1402 
1403 CREATE TABLE t1 (
1404  carrier int,
1405  id int PRIMARY KEY
1406 );
1407 INSERT INTO t1 VALUES (1,11),(1,12),(2,13);
1408 
1409 CREATE TABLE t2 (
1410  scan_date int,
1411  package_id int
1412 );
1413 INSERT INTO t2 VALUES (2008,21),(2008,22);
1414 
1415 CREATE TABLE t3 (
1416  carrier int PRIMARY KEY,
1417  id int
1418 );
1419 INSERT INTO t3 VALUES (1,31);
1420 
1421 CREATE TABLE t4 (
1422  carrier_id int,
1423  INDEX carrier_id(carrier_id)
1424 );
1425 INSERT INTO t4 VALUES (31),(32);
1426 
1427 --echo
1428 SELECT COUNT(*)
1429  FROM (t2 JOIN t1) LEFT JOIN (t3 JOIN t4 ON t3.id = t4.carrier_id)
1430  ON t3.carrier = t1.carrier;
1431 
1432 --echo
1433 EXPLAIN
1434 SELECT COUNT(*)
1435  FROM (t2 JOIN t1) LEFT JOIN (t3 JOIN t4 ON t3.id = t4.carrier_id)
1436  ON t3.carrier = t1.carrier;
1437 --echo
1438 DROP TABLE t1,t2,t3,t4;
1439 
1440 --echo #
1441 --echo # Bug#45267: Incomplete check caused wrong result.
1442 --echo #
1443 CREATE TABLE t1 (
1444  `pk` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
1445 );
1446 CREATE TABLE t3 (
1447  `pk` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
1448 );
1449 INSERT INTO t3 VALUES
1450 (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),
1451 (16),(17),(18),(19),(20);
1452 CREATE TABLE t2 (
1453  `pk` int(11) NOT NULL AUTO_INCREMENT,
1454  `int_nokey` int(11) NOT NULL,
1455  `time_key` time NOT NULL,
1456  PRIMARY KEY (`pk`),
1457  KEY `time_key` (`time_key`)
1458 );
1459 INSERT INTO t2 VALUES (10,9,'22:36:46'),(11,0,'08:46:46');
1460 
1461 SELECT DISTINCT t1.`pk`
1462 FROM t1 RIGHT JOIN t2 STRAIGHT_JOIN t3 ON t2.`int_nokey` ON t2.`time_key`
1463 GROUP BY 1;
1464 
1465 DROP TABLE IF EXISTS t1, t2, t3;
1466 
1467 --echo #
1468 --echo # BUG#52636 6.0 allowing JOINs on NULL values w/ optimizer_join_cache_level = 5-8
1469 --echo #
1470 
1471 CREATE TABLE t1 (b int);
1472 INSERT INTO t1 VALUES (NULL),(3);
1473 
1474 CREATE TABLE t2 (a int, b int, KEY (b));
1475 INSERT INTO t2 VALUES (100,NULL),(150,200);
1476 
1477 let $query= SELECT t2.a FROM t1 LEFT JOIN t2 FORCE INDEX (b) ON t2.b = t1.b;
1478 --eval EXPLAIN $query
1479 --sorted_result
1480 --eval $query
1481 
1482 # test crash when no key is worth collecting by BKA for t2's ref
1483 delete from t1;
1484 INSERT INTO t1 VALUES (NULL),(NULL);
1485 
1486 --eval EXPLAIN $query
1487 --sorted_result
1488 --eval $query
1489 
1490 DROP TABLE t1,t2;
1491 
1492 # test varchar keys
1493 CREATE TABLE t1 (b varchar(100));
1494 INSERT INTO t1 VALUES (NULL),("some varchar");
1495 
1496 CREATE TABLE t2 (a int, b varchar(100), KEY (b));
1497 INSERT INTO t2 VALUES (100,NULL),(150,"varchar"),(200,NULL),(250,"long long varchar");
1498 
1499 explain SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b = t1.b;
1500 --sorted_result
1501 SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b = t1.b;
1502 
1503 DROP TABLE t1,t2;
1504 
1505 --echo #
1506 --echo # BUG#54359 "Extra rows with join_cache_level=7,8 and two joins
1507 --echo # --and multi-column index"
1508 --echo #
1509 
1510 CREATE TABLE t1 (
1511  `pk` int(11) NOT NULL,
1512  `col_int_key` int(11) DEFAULT NULL,
1513  `col_varchar_key` varchar(1) DEFAULT NULL,
1514  `col_varchar_nokey` varchar(1) DEFAULT NULL,
1515  KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`))
1516 ;
1517 
1518 INSERT INTO t1 VALUES (4,9,'k','k');
1519 INSERT INTO t1 VALUES (12,5,'k','k');
1520 
1521 let $query_i= SELECT table2 .`col_int_key` FROM t1 table2,
1522 t1 table3 force index (`col_varchar_key`)
1523 where table3 .`pk` and table3 .`col_int_key` >= table2 .`pk`
1524  and table3 .`col_varchar_key` = table2 .`col_varchar_nokey`;
1525 
1526 eval explain $query_i;
1527 eval $query_i;
1528 
1529 drop table t1;
1530 
1531 --echo #
1532 --echo # BUG#54481 "GROUP BY loses effect with JOIN + ORDER BY + LIMIT
1533 --echo # and join_cache_level=5-8"
1534 --echo #
1535 
1536 CREATE TABLE t1 (
1537  `col_int_key` int,
1538  `col_datetime` datetime,
1539  KEY `col_int_key` (`col_int_key`)
1540 );
1541 
1542 INSERT INTO t1 VALUES (2,'2003-02-11 21:19:41');
1543 INSERT INTO t1 VALUES (3,'2009-10-18 02:27:49');
1544 INSERT INTO t1 VALUES (0,'2000-09-26 07:45:57');
1545 
1546 CREATE TABLE t2 (
1547  `col_int` int,
1548  `col_int_key` int,
1549  KEY `col_int_key` (`col_int_key`)
1550 );
1551 
1552 INSERT INTO t2 VALUES (14,1);
1553 INSERT INTO t2 VALUES (98,1);
1554 
1555 # The WHERE clause is true for all rows of t2
1556 # but is needed to trigger the desired plan.
1557 # Query uses BKA.
1558 let $query=SELECT t1.col_int_key, t1.col_datetime
1559 FROM t1,t2
1560 WHERE t2.col_int_key = 1 AND t2.col_int >= 3
1561 GROUP BY t1.col_int_key
1562 ORDER BY t1.col_int_key, t1.col_datetime
1563 LIMIT 2;
1564 
1565 eval explain $query;
1566 eval $query;
1567 
1568 # by disabling one index and forcing another, we hit
1569 # block-nested-loop join and see the same bug
1570 let $query=SELECT t1.col_int_key, t1.col_datetime
1571 FROM t1 force index (col_int_key), t2 ignore index (col_int_key)
1572 WHERE t2.col_int_key = 1 AND t2.col_int >= 3
1573 GROUP BY t1.col_int_key
1574 ORDER BY t1.col_int_key, t1.col_datetime
1575 LIMIT 2;
1576 
1577 eval explain $query;
1578 eval $query;
1579 
1580 drop table t1,t2;
1581 
1582 --echo
1583 --echo # Bug#11766522 "59651: ASSERTION `TABLE_REF->HAS_RECORD' FAILED
1584 --echo # WITH JOIN_CACHE_LEVEL=3"
1585 --echo
1586 
1587 CREATE TABLE t1 (
1588  b varchar(20)
1589 ) ;
1590 INSERT INTO t1 VALUES ('1'),('1');
1591 
1592 CREATE TABLE t4 (
1593  col253 text
1594 ) ;
1595 INSERT INTO t4 VALUES (''),('pf');
1596 
1597 CREATE TABLE t6 (
1598  col282 timestamp
1599 ) ;
1600 INSERT INTO t6 VALUES ('2010-11-07 01:04:45'),('2010-12-13 01:36:32');
1601 
1602 CREATE TABLE t7 (
1603  col319 timestamp NOT NULL,
1604  UNIQUE KEY idx263 (col319)
1605 ) ;
1606 # zero rows would do, if there was no const-table optimization
1607 insert into t7 values("2000-01-01"),("2000-01-02");
1608 
1609 CREATE TABLE t3 (
1610  col582 char(230) CHARACTER SET utf8 DEFAULT NULL
1611 ) ;
1612 # one single row would do, if there was no const-table optimization
1613 INSERT INTO t3 VALUES ('cymej'),('spb');
1614 
1615 CREATE TABLE t5 (
1616  col712 time
1617 ) ;
1618 # zero rows would do, if there was no const-table optimization
1619 insert into t5 values(0),(0);
1620 
1621 CREATE TABLE t8 (
1622  col804 char(169),
1623  col805 varchar(51)
1624 ) ;
1625 INSERT INTO t8 VALUES ('tmqcb','pwk');
1626 
1627 CREATE TABLE t2 (
1628  col841 varchar(10)
1629 ) ;
1630 # one single row would do, if there was no const-table optimization
1631 INSERT INTO t2 VALUES (''),('');
1632 
1633 # Small buffer, to trigger "full buffer" in both caches of t8 and t6.
1634 # Setting to 1 will actually set to the smallest allowed value,
1635 # with a "rounding" warning message.
1636 set join_buffer_size=1;
1637 select @@join_buffer_size;
1638 
1639 --disable_warnings
1640 select count(*) from
1641 (t1 join t2 join t3)
1642 left join t4 on 1
1643 left join t5 on 1 like t4.col253
1644 left join t6 on t5.col712 is null
1645 left join t7 on t1.b <=>t7.col319
1646 left join t8 on t3.col582 <= 1;
1647 --enable_warnings
1648 
1649 drop table t1,t2,t3,t4,t5,t6,t7,t8;
1650 
1651 --echo #
1652 --echo # Bug#12616131 - JCL: NULL VS DATE + TWICE AS MANY ROWS
1653 --echo # RETURNED WHEN JCL>=7
1654 --echo #
1655 
1656 CREATE TABLE t1 (t1a int, t1b int);
1657 INSERT INTO t1 VALUES (99, NULL),(99, 3),(99,0);
1658 
1659 CREATE TABLE t2 (t2a int, t2b int, KEY idx (t2b));
1660 INSERT INTO t2 VALUES (100,0),(150,200),(999, 0),(999, NULL);
1661 
1662 let $query1= SELECT * FROM t1 LEFT JOIN t2 force index (idx) ON t2.t2b = t1.t1b;
1663 let $query2= SELECT * FROM t1 LEFT JOIN t2 force index (idx) ON t2.t2b <=> t1.t1b;
1664 
1665 --echo
1666 --echo # t2b is NULL-able
1667 --echo
1668 --eval EXPLAIN $query1
1669 --eval $query1
1670 --echo
1671 --eval EXPLAIN $query2
1672 --eval $query2
1673 --echo
1674 
1675 DROP TABLE t2;
1676 
1677 CREATE TABLE t2 (t2a int, t2b int NOT NULL, KEY idx (t2b));
1678 INSERT INTO t2 VALUES (100,0),(150,200),(999, 0);
1679 
1680 --echo
1681 --echo # t2b is NOT NULL
1682 --echo
1683 --eval EXPLAIN $query1
1684 --eval $query1
1685 --echo
1686 --eval EXPLAIN $query2
1687 --eval $query2
1688 --echo
1689 
1690 DROP TABLE t1,t2;
1691 
1692 --echo #
1693 --echo # BUG#12619399 - JCL: NO ROWS VS 3X NULL QUERY OUTPUT WHEN JCL>=5
1694 --echo #
1695 
1696 CREATE TABLE t1 (
1697  c1 INTEGER NOT NULL,
1698  c2_key INTEGER NOT NULL,
1699  KEY col_int_key (c2_key)
1700 ) ENGINE=InnoDB;
1701 
1702 INSERT INTO t1 VALUES (24,204);
1703 
1704 CREATE TABLE t2 (
1705  pk INTEGER NOT NULL,
1706  PRIMARY KEY (pk)
1707 ) ENGINE=InnoDB;
1708 
1709 INSERT INTO t2 VALUES (10);
1710 
1711 CREATE TABLE t3 (
1712  c1 INTEGER,
1713  KEY k1 (c1)
1714 ) ENGINE=InnoDB;
1715 
1716 INSERT INTO t3 VALUES (NULL), (NULL);
1717 
1718 # Bug was specific of IN->EXISTS:
1719 set @old_opt_switch=@@optimizer_switch;
1720 --disable_query_log
1721 if (`select locate('materialization', @@optimizer_switch) > 0`)
1722 {
1723  set optimizer_switch='materialization=off';
1724 }
1725 --enable_query_log
1726 
1727 --echo
1728 
1729 let query_in=
1730 SELECT t3.c1 FROM t3
1731 WHERE t3.c1 IN (SELECT t1.c2_key FROM t2 JOIN t1 ON t2.pk < t1.c1)
1732 XOR TRUE;
1733 
1734 #BKA is OK for this query
1735 let query_in_toplevel=
1736 SELECT t3.c1 FROM t3
1737 WHERE t3.c1 IN (SELECT t1.c2_key FROM t2 JOIN t1 ON t2.pk < t1.c1);
1738 
1739 let query_notin=
1740 SELECT t3.c1 FROM t3
1741 WHERE t3.c1 NOT IN (SELECT t1.c2_key FROM t2 JOIN t1 ON t2.pk < t1.c1);
1742 
1743 let query_any=
1744 SELECT t3.c1 FROM t3
1745 WHERE t3.c1 = ANY (SELECT t1.c2_key FROM t2 JOIN t1 ON t2.pk < t1.c1)
1746 XOR TRUE;
1747 
1748 let query_some=
1749 SELECT t3.c1 FROM t3
1750 WHERE t3.c1 = SOME (SELECT t1.c2_key FROM t2 JOIN t1 ON t2.pk < t1.c1)
1751 XOR TRUE;
1752 
1753 eval explain $query_some;
1754 eval explain $query_any;
1755 eval explain $query_in;
1756 eval explain $query_notin;
1757 eval explain $query_in_toplevel;
1758 eval $query_some;
1759 eval $query_any;
1760 eval $query_in;
1761 eval $query_notin;
1762 eval $query_in_toplevel;
1763 
1764 
1765 --echo
1766 set @@optimizer_switch=@old_opt_switch;
1767 DROP TABLE t1, t2, t3;
1768 
1769 set @@join_buffer_size=default;
1770 
1771 --echo
1772 --echo # BUG#12586926 "EXTRA ROW WITH JOIN + GROUP BY + ORDER BY WITH
1773 --echo # JCL>=5 AND MRR ENABLED"
1774 --echo
1775 
1776 CREATE TABLE t1 ( col_int_key int(11) NOT NULL,
1777  col_varchar_key varchar(1) NOT NULL,
1778  KEY col_int_key (col_int_key),
1779  KEY col_varchar_key (col_varchar_key,col_int_key)
1780 ) ENGINE=innodb;
1781 
1782 INSERT INTO t1 VALUES (0,'j'),(4,'b'),(4,'d');
1783 
1784 CREATE TABLE t2 (
1785  col_datetime_key datetime NOT NULL,
1786  col_varchar_key varchar(1) NOT NULL,
1787  KEY col_varchar_key (col_varchar_key)
1788 ) ENGINE=innodb;
1789 
1790 INSERT INTO t2 VALUES ('2003-08-21 00:00:00','b');
1791 
1792 -- disable_query_log
1793 -- disable_result_log
1794 ANALYZE TABLE t1;
1795 ANALYZE TABLE t2;
1796 -- enable_query_log
1797 -- enable_result_log
1798 
1799 # need to force the index, or it picks BNL for t2 (lower cost),
1800 # whereas we want to test BKA
1801 let $query=
1802 SELECT MIN(t2.col_datetime_key) AS field1,
1803  t1.col_int_key AS field2
1804 FROM t1
1805  LEFT JOIN t2 force index (col_varchar_key)
1806  ON t1.col_varchar_key = t2.col_varchar_key
1807 GROUP BY field2
1808 ORDER BY field1;
1809 
1810 eval explain $query;
1811 eval $query;
1812 
1813 DROP TABLE t1,t2;
1814 
1815 --echo
1816 --echo # BUG#12619510 "JCL: MORE ROWS AND DIFFERENT OUTPUT WITH JCL>=5"
1817 --echo
1818 
1819 CREATE TABLE t1 (
1820 col_int_key int(11) NOT NULL,
1821 col_datetime_key datetime NOT NULL,
1822 col_varchar_nokey varchar(1) NOT NULL,
1823 KEY col_int_key (col_int_key),
1824 KEY col_datetime_key (col_datetime_key)
1825 );
1826 INSERT INTO t1 VALUES (7,'2004-06-06 04:22:12','v');
1827 INSERT INTO t1 VALUES (0,'2005-11-13 01:12:31','s');
1828 INSERT INTO t1 VALUES (9,'2002-05-04 01:50:00','l');
1829 INSERT INTO t1 VALUES (3,'2004-10-27 10:28:45','y');
1830 INSERT INTO t1 VALUES (4,'2006-07-22 05:24:23','c');
1831 INSERT INTO t1 VALUES (2,'2002-05-16 21:34:03','i');
1832 INSERT INTO t1 VALUES (5,'2008-04-17 10:45:30','h');
1833 INSERT INTO t1 VALUES (3,'2009-04-21 02:58:02','q');
1834 INSERT INTO t1 VALUES (1,'2008-01-11 11:01:51','a');
1835 INSERT INTO t1 VALUES (3,'1900-01-01 00:00:00','v');
1836 INSERT INTO t1 VALUES (6,'2007-05-17 18:24:57','u');
1837 INSERT INTO t1 VALUES (7,'2007-08-07 00:00:00','s');
1838 INSERT INTO t1 VALUES (5,'2001-08-28 00:00:00','y');
1839 INSERT INTO t1 VALUES (1,'2004-04-16 00:27:28','z');
1840 INSERT INTO t1 VALUES (204,'2005-05-03 07:06:22','h');
1841 INSERT INTO t1 VALUES (224,'2009-03-11 17:09:50','p');
1842 INSERT INTO t1 VALUES (9,'2007-12-08 01:54:28','e');
1843 INSERT INTO t1 VALUES (5,'2009-07-28 18:19:54','i');
1844 INSERT INTO t1 VALUES (0,'2008-06-08 00:00:00','y');
1845 INSERT INTO t1 VALUES (3,'2005-02-09 09:20:26','w');
1846 
1847 CREATE TABLE t2 (
1848 pk int(11) NOT NULL,
1849 col_varchar_key varchar(1) NOT NULL,
1850 PRIMARY KEY (pk)
1851 );
1852 INSERT INTO t2 VALUES
1853 (1,'j'),(2,'v'),(3,'c'),(4,'m'),(5,'d'),(6,'d'),(7,'y'),
1854 (8,'t'),(9,'d'),(10,'s'),(11,'r'),(12,'m'),(13,'b'),(14,'x'),
1855 (15,'g'),(16,'p'),(17,'q'),(18,'w'),(19,'d'),(20,'e');
1856 
1857 let $query=SELECT t2.col_varchar_key AS field1 , COUNT(DISTINCT t1.col_varchar_nokey), t2.pk AS field4
1858 FROM t1
1859 RIGHT JOIN t2 ON t2.pk = t1.col_int_key
1860 GROUP BY field1 , field4
1861 ORDER BY t1.col_datetime_key ;
1862 
1863 eval explain $query;
1864 # even though there is ORDER BY, it does not cover all columns, so
1865 # there is still randomness, so we have to sort client-side:
1866 --sorted_result
1867 eval $query;
1868 
1869 DROP TABLE t1,t2;
1870 
1871 --echo
1872 --echo # BUG#12619868 "JCL: MORE ROWS OF OUTPUT WHEN JCL>=5"
1873 --echo
1874 
1875 CREATE TABLE t1 (col_varchar_key varchar(1));
1876 CREATE TABLE t2 (
1877  pk int(11) NOT NULL,
1878  col_int_nokey int(11) NOT NULL,
1879  col_int_key int(11) NOT NULL,
1880  PRIMARY KEY (pk),
1881  KEY col_int_key (col_int_key)
1882 );
1883 INSERT INTO t2 VALUES (5,3,9);
1884 INSERT INTO t2 VALUES (6,246,24);
1885 INSERT INTO t2 VALUES (7,2,6);
1886 INSERT INTO t2 VALUES (8,9,1);
1887 INSERT INTO t2 VALUES (9,3,6);
1888 INSERT INTO t2 VALUES (10,8,2);
1889 INSERT INTO t2 VALUES (11,1,4);
1890 INSERT INTO t2 VALUES (12,8,8);
1891 INSERT INTO t2 VALUES (13,8,4);
1892 INSERT INTO t2 VALUES (14,5,4);
1893 INSERT INTO t2 VALUES (15,7,7);
1894 INSERT INTO t2 VALUES (16,5,4);
1895 INSERT INTO t2 VALUES (17,1,1);
1896 INSERT INTO t2 VALUES (18,6,9);
1897 INSERT INTO t2 VALUES (19,2,4);
1898 INSERT INTO t2 VALUES (20,9,8);
1899 
1900 let $query=SELECT t1.col_varchar_key AS field1, alias2.col_int_key AS field4
1901 FROM t2 AS alias2 STRAIGHT_JOIN t2 AS alias3 ON alias3.pk =
1902 alias2.col_int_nokey
1903 left join t1
1904 ON alias3.col_int_nokey
1905 GROUP BY field1, field4
1906 LIMIT 15;
1907 
1908 eval explain $query;
1909 --sorted_result
1910 eval $query;
1911 
1912 DROP TABLE t1,t2;
1913 
1914 --echo
1915 --echo # BUG#12722133 - JCL: JOIN QUERY GIVES DIFFERENT RESULTS AT
1916 --echo # JCL=6 ONLY [NULL VERSUS NULL+#INTS]
1917 --echo
1918 
1919 CREATE TABLE t1 (pk INTEGER PRIMARY KEY, k INTEGER, i INTEGER, KEY k(k));
1920 CREATE TABLE t2 LIKE t1;
1921 CREATE TABLE t3 LIKE t1;
1922 CREATE TABLE t4 LIKE t1;
1923 
1924 INSERT INTO t1 VALUES (6,NULL,6),(0,1,11);
1925 INSERT INTO t2 VALUES (1,NULL,NULL),(4,7,NULL);
1926 INSERT INTO t3 VALUES (2,3,0),(3,4,4);
1927 INSERT INTO t4 VALUES (1,9,-1),(4,7,NULL);
1928 
1929 let $query=SELECT t2.pk as t2_pk, t4.pk as t4_pk, t4.k as t4_k, t4.i
1930  as t4_i FROM t1
1931  LEFT JOIN t2 ON t1.k = t2.pk
1932  LEFT JOIN t3 ON t3.i
1933  LEFT JOIN t4 ON t4.pk = t2.pk;
1934 
1935 eval EXPLAIN $query;
1936 eval $query;
1937 
1938 DROP TABLE t1, t2, t3, t4;
1939 
1940 --echo
1941 --echo # BUG#12827509 - BNL/BKA: SELECT LEFT/RIGHT JOIN QUERY GIVES
1942 --echo # DIFFERENT OUTPUT ON BNL=OFF+BKA=ON
1943 --echo # (Duplicate of BUG#12722133)
1944 --echo
1945 CREATE TABLE t1 (
1946  col_int INTEGER
1947 );
1948 INSERT INTO t1 VALUES (3), (7), (2), (8), (6);
1949 
1950 CREATE TABLE t2 (
1951  pk INTEGER,
1952  col_int INTEGER,
1953  PRIMARY KEY (pk)
1954 );
1955 INSERT INTO t2 VALUES (1,5), (2,8), (6,3), (8,7), (9,9);
1956 
1957 CREATE TABLE t3 (
1958  pk INTEGER,
1959  col_int INTEGER,
1960  PRIMARY KEY (pk)
1961 );
1962 INSERT INTO t3 VALUES (3,2), (4,3), (8,2);
1963 
1964 CREATE TABLE t4 (
1965  pk INTEGER,
1966  col_int INTEGER,
1967  PRIMARY KEY (pk)
1968 );
1969 INSERT INTO t4 VALUES (2,3), (6,1), (8,2);
1970 
1971 let query=
1972 SELECT t4.col_int
1973  FROM t1
1974  LEFT JOIN t2 ON t1.col_int = t2.col_int
1975  LEFT JOIN t3 ON t2.pk = t3.pk
1976  LEFT JOIN t4 ON t4.pk = t2.pk
1977  WHERE t1.col_int OR t3.col_int;
1978 
1979 eval EXPLAIN $query;
1980 eval $query;
1981 
1982 DROP TABLE t1, t2, t3, t4;
1983 
1984 --echo #
1985 --echo # Bug#12997905: VALGRIND: SYSCALL PARAM PWRITE64(BUF)
1986 --echo # POINTS TO UNINITIALISED BYTE(S)
1987 --echo #
1988 
1989 CREATE TABLE t1 (
1990  col1 varchar(10),
1991  col2 varchar(1024)
1992 ) ENGINE=innodb;
1993 
1994 INSERT INTO t1 VALUES ('a','a');
1995 
1996 CREATE TABLE t2 (i varchar(10)) ENGINE=innodb;
1997 INSERT INTO t2 VALUES ('a');
1998 
1999 SELECT t1.col1
2000 FROM t1 JOIN t2 ON t1.col1 = t2.i
2001 GROUP BY t1.col2;
2002 
2003 DROP TABLE t1,t2;
2004 
2005 --echo # End of Bug#12997905
2006 
2007 --echo #
2008 --echo # Bug 13596330 - EXTRA ROW ON SELECT WITH NESTED IN CLAUSE + IS
2009 --echo # NULL WHEN SEMIJOIN + BNL IS ON
2010 --echo #
2011 
2012 CREATE TABLE t1 (
2013  col_int_nokey int
2014 );
2015 INSERT INTO t1 VALUES(-1),(-1);
2016 
2017 CREATE TABLE t2 (
2018  col_int_nokey int,
2019  col_datetime_nokey datetime NOT NULL,
2020  col_varchar_key varchar(1),
2021  KEY col_varchar_key (col_varchar_key)
2022 );
2023 
2024 INSERT INTO t2 VALUES (9, '2002-08-25 20:35:06', 'e'),
2025  (9, '2002-08-25 20:35:06', 'e');
2026 
2027 set @optimizer_switch_saved=@@session.optimizer_switch;
2028 set @@session.optimizer_switch='semijoin=off';
2029 
2030 let $query=SELECT PARENT1.col_varchar_key
2031 FROM t2 AS PARENT1 LEFT JOIN t1 USING (col_int_nokey)
2032 WHERE PARENT1.col_varchar_key IN
2033  ( SELECT col_varchar_key FROM t2 AS CHILD1
2034  WHERE PARENT1.col_datetime_nokey IS NULL
2035  AND t1.col_int_nokey IS NULL )
2036 ;
2037 eval EXPLAIN $query;
2038 eval $query;
2039 
2040 set @@session.optimizer_switch=@optimizer_switch_saved;
2041 
2042 DROP TABLE t1,t2;