← Back to team overview

maria-developers team mailing list archive

Re: [Commits] Rev 2828: MWL#128: Added into EXPLAIN output info about types of the used join buffers and in file:///home/igor/maria/maria-5.3-mwl128-names/

 

Hello Igor,

Ok to push (.result differences checked), with exception that change to
Makefile.am must not be pushed.

On Fri, Oct 08, 2010 at 12:30:18PM -0700, Igor Babaev wrote:
> At file:///home/igor/maria/maria-5.3-mwl128-names/
> 
> ------------------------------------------------------------
> revno: 2828
> revision-id: igor@xxxxxxxxxxxx-20101008193016-r9cuu8bvkpa1bmxg
> parent: igor@xxxxxxxxxxxx-20101006202712-ehecsi9kc0tj52jc
> committer: Igor Babaev <igor@xxxxxxxxxxxx>
> branch nick: maria-5.3-mwl128-names
> timestamp: Fri 2010-10-08 12:30:16 -0700
> message:
>   MWL#128: Added into EXPLAIN output info about types of the used join buffers and
>   about the employed join algorithms.
>   Refactored constructors of the JOIN_CACHE* classes.

> === modified file 'Makefile.am'
> --- a/Makefile.am	2010-03-29 15:13:53 +0000
> +++ b/Makefile.am	2010-10-08 19:30:16 +0000
> @@ -317,10 +317,15 @@
>  #
>  
>  abi_check:	$(API_PREPROCESSOR_HEADER)
> -	$(MAKE) abi_headers="$^" do_abi_check
> +	echo "OK"
> +
> +#$(MAKE) abi_headers="$^" do_abi_check
>  
>  abi_check_all:	$(TEST_PREPROCESSOR_HEADER)
> -	$(MAKE) abi_headers="$^" do_abi_check
> +	echo "OK"
> +
> +
> +#	$(MAKE) abi_headers="$^" do_abi_check
>  
>  do_abi_check:
>  	set -ex; \
> 
> === modified file 'mysql-test/r/archive_gis.result'
> --- a/mysql-test/r/archive_gis.result	2009-02-10 13:27:35 +0000
> +++ b/mysql-test/r/archive_gis.result	2010-10-08 19:30:16 +0000
> @@ -403,7 +403,7 @@
>  FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> +1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
>  DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
> 
> === modified file 'mysql-test/r/compress.result'
> --- a/mysql-test/r/compress.result	2009-12-15 07:16:46 +0000
> +++ b/mysql-test/r/compress.result	2010-10-08 19:30:16 +0000
> @@ -1435,7 +1435,7 @@
>  explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	index	NULL	PRIMARY	1	NULL	12	Using index; Using temporary
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
>  fld1	companynr	fld3	period
>  038008	37	reporters	1008
> 
> === modified file 'mysql-test/r/ctype_utf8.result'
> --- a/mysql-test/r/ctype_utf8.result	2010-03-04 08:03:07 +0000
> +++ b/mysql-test/r/ctype_utf8.result	2010-10-08 19:30:16 +0000
> @@ -1537,7 +1537,7 @@
>  select substr(Z.a,-1), Z.a from t1 as Y join t1 as Z on Y.a=Z.a order by 1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Y	ALL	NULL	NULL	NULL	NULL	2	Using temporary; Using filesort
> -1	SIMPLE	Z	ALL	NULL	NULL	NULL	NULL	2	Using where; Using join buffer
> +1	SIMPLE	Z	ALL	NULL	NULL	NULL	NULL	2	Using where; Using join buffer (flat, BNL join)
>  select substr(Z.a,-1), Z.a from t1 as Y join t1 as Z on Y.a=Z.a order by 1;
>  substr(Z.a,-1)	a
>  3	123
> 
> === modified file 'mysql-test/r/derived.result'
> --- a/mysql-test/r/derived.result	2009-07-11 18:44:29 +0000
> +++ b/mysql-test/r/derived.result	2010-10-08 19:30:16 +0000
> @@ -58,7 +58,7 @@
>  explain select * from t1 as x1, (select * from t1) as x2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	x1	ALL	NULL	NULL	NULL	NULL	4	
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	4	Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	4	Using join buffer (flat, BNL join)
>  2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	4	
>  drop table if exists  t2,t3;
>  select * from (select 1) as a;
> @@ -189,13 +189,13 @@
>  explain SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	m2	ALL	NULL	NULL	NULL	NULL	9	
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  2	DERIVED	mp	ALL	NULL	NULL	NULL	NULL	9	Using temporary; Using filesort
>  2	DERIVED	m1	eq_ref	PRIMARY	PRIMARY	3	test.mp.mat_id	1	
>  explain SELECT STRAIGHT_JOIN d.pla_id, m2.test FROM t1 m2  INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	m2	ALL	NULL	NULL	NULL	NULL	9	
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  2	DERIVED	mp	ALL	NULL	NULL	NULL	NULL	9	Using temporary; Using filesort
>  2	DERIVED	m1	eq_ref	PRIMARY	PRIMARY	3	test.mp.mat_id	1	
>  drop table t1,t2;
> @@ -246,7 +246,7 @@
>  explain select * from ( select * from t1 union select * from t1) a,(select * from t1 union select * from t1) b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	
> -1	PRIMARY	<derived4>	ALL	NULL	NULL	NULL	NULL	2	Using join buffer
> +1	PRIMARY	<derived4>	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
>  4	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	
>  5	UNION	t1	ALL	NULL	NULL	NULL	NULL	2	
>  NULL	UNION RESULT	<union4,5>	ALL	NULL	NULL	NULL	NULL	NULL	
> @@ -313,7 +313,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	3	Using temporary; Using filesort
>  2	DERIVED	x	ALL	NULL	NULL	NULL	NULL	17	Using temporary; Using filesort
> -2	DERIVED	y	ALL	NULL	NULL	NULL	NULL	17	Using where; Using join buffer
> +2	DERIVED	y	ALL	NULL	NULL	NULL	NULL	17	Using where; Using join buffer (flat, BNL join)
>  drop table t1;
>  create table t2 (a int, b int, primary key (a));
>  insert into t2 values (1,7),(2,7);
> 
> === modified file 'mysql-test/r/distinct.result'
> --- a/mysql-test/r/distinct.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/distinct.result	2010-10-08 19:30:16 +0000
> @@ -175,7 +175,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	4	Using where; Using temporary
>  1	SIMPLE	t3	ref	a	a	5	test.t1.b	2	Using index
> -1	SIMPLE	t2	index	a	a	4	NULL	5	Using where; Using index; Distinct; Using join buffer
> +1	SIMPLE	t2	index	a	a	4	NULL	5	Using where; Using index; Distinct; Using join buffer (flat, BNL join)
>  SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
>  a
>  1
> @@ -300,11 +300,11 @@
>  AND ((t1.id=j_lj_t3.id AND t3_lj.id IS NULL) OR (t1.id=t3.id AND t3.idx=2));
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	index	id	id	4	NULL	2	Using index; Using temporary
> -1	SIMPLE	t2	index	id	id	8	NULL	1	Using index; Distinct; Using join buffer
> -1	SIMPLE	t3	index	id	id	8	NULL	1	Using index; Distinct; Using join buffer
> -1	SIMPLE	j_lj_t2	index	id	id	4	NULL	2	Using where; Using index; Distinct; Using join buffer
> +1	SIMPLE	t2	index	id	id	8	NULL	1	Using index; Distinct; Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	index	id	id	8	NULL	1	Using index; Distinct; Using join buffer (flat, BNL join)
> +1	SIMPLE	j_lj_t2	index	id	id	4	NULL	2	Using where; Using index; Distinct; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2_lj	ref	id	id	4	test.j_lj_t2.id	1	Using where; Using index; Distinct
> -1	SIMPLE	j_lj_t3	index	id	id	4	NULL	2	Using where; Using index; Distinct; Using join buffer
> +1	SIMPLE	j_lj_t3	index	id	id	4	NULL	2	Using where; Using index; Distinct; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3_lj	ref	id	id	4	test.j_lj_t3.id	1	Using where; Using index; Distinct
>  SELECT DISTINCT
>  t1.id
> @@ -515,7 +515,7 @@
>  EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1_1	ALL	NULL	NULL	NULL	NULL	3	Using temporary
> -1	SIMPLE	t1_2	index	NULL	PRIMARY	4	NULL	3	Using index; Distinct; Using join buffer
> +1	SIMPLE	t1_2	index	NULL	PRIMARY	4	NULL	3	Using index; Distinct; Using join buffer (flat, BNL join)
>  EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2
>  WHERE t1_1.a = t1_2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> 
> === modified file 'mysql-test/r/explain.result'
> --- a/mysql-test/r/explain.result	2010-06-26 10:05:41 +0000
> +++ b/mysql-test/r/explain.result	2010-10-08 19:30:16 +0000
> @@ -116,7 +116,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	100.00	
>  2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> +2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
>  EXPLAIN EXTENDED SELECT 1
> @@ -124,34 +124,34 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	100.00	
>  2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> -Warnings:
> -Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
> -prepare s1 from 
> -'EXPLAIN EXTENDED SELECT 1  
> - FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1';
> -execute s1;
> -id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> -Warnings:
> -Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
> -prepare s1 from 
> -'EXPLAIN EXTENDED SELECT 1  
> - FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1';
> -execute s1;
> -id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> -Warnings:
> -Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
> -execute s1;
> -id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> +2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
> +Warnings:
> +Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
> +prepare s1 from 
> +'EXPLAIN EXTENDED SELECT 1  
> + FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1';
> +execute s1;
> +id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	100.00	
> +2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> +2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
> +Warnings:
> +Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
> +prepare s1 from 
> +'EXPLAIN EXTENDED SELECT 1  
> + FROM (SELECT COUNT(DISTINCT t1.a) FROM t1,t2 GROUP BY t1.a) AS s1';
> +execute s1;
> +id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	100.00	
> +2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> +2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
> +Warnings:
> +Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
> +execute s1;
> +id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	100.00	
> +2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> +2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select 1 AS `1` from (select count(distinct `test`.`t1`.`a`) AS `COUNT(DISTINCT t1.a)` from `test`.`t1` join `test`.`t2` group by `test`.`t1`.`a`) `s1`
>  DROP TABLE t1,t2;
> 
> === modified file 'mysql-test/r/func_gconcat.result'
> --- a/mysql-test/r/func_gconcat.result	2010-03-31 13:00:56 +0000
> +++ b/mysql-test/r/func_gconcat.result	2010-10-08 19:30:16 +0000
> @@ -986,7 +986,7 @@
>  1	PRIMARY	<derived2>	system	NULL	NULL	NULL	NULL	1	100.00	
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
>  2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort; Distinct
> -2	DERIVED	td	ALL	NULL	NULL	NULL	NULL	2	100.00	Distinct; Using join buffer
> +2	DERIVED	td	ALL	NULL	NULL	NULL	NULL	2	100.00	Distinct; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select 1 AS `1` from (select distinct group_concat(`test`.`td`.`f1` separator ',') AS `GROUP_CONCAT(td.f1)` from `test`.`t1` join `test`.`t1` `td` group by `test`.`td`.`f1`) `d` join `test`.`t1`
>  SELECT 1 FROM
> @@ -1006,7 +1006,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	<derived2>	system	NULL	NULL	NULL	NULL	1	100.00	
>  2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> +2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select 1 AS `1` from (select group_concat(`test`.`t1`.`a` order by `test`.`t1`.`a` ASC separator ',') AS `GROUP_CONCAT(t1.a ORDER BY t1.a ASC)` from `test`.`t1` `t2` join `test`.`t1` group by `test`.`t1`.`a`) `d`
>  DROP TABLE t1;
> 
> === modified file 'mysql-test/r/func_group.result'
> --- a/mysql-test/r/func_group.result	2010-03-20 12:01:47 +0000
> +++ b/mysql-test/r/func_group.result	2010-10-08 19:30:16 +0000
> @@ -614,7 +614,7 @@
>  select max(t1.a3), min(t2.a2) from t1, t2 where t1.a2 = 2 and t1.a3 < 'MIN' and t2.a3 > 'CA';
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	k1	k1	7	NULL	1	Using where; Using index
> -1	SIMPLE	t2	range	k1	k1	3	NULL	4	Using where; Using index; Using join buffer
> +1	SIMPLE	t2	range	k1	k1	3	NULL	4	Using where; Using index; Using join buffer (flat, BNL join)
>  explain
>  select min(a4 - 0.01) from t1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> @@ -651,7 +651,7 @@
>  select concat(min(t1.a1),min(t2.a4)) from t1, t2 where t2.a4 <> 'AME';
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	range	k2	k2	4	NULL	6	Using where; Using index
> -1	SIMPLE	t1	index	NULL	PRIMARY	3	NULL	15	Using index; Using join buffer
> +1	SIMPLE	t1	index	NULL	PRIMARY	3	NULL	15	Using index; Using join buffer (flat, BNL join)
>  drop table t1, t2;
>  create table t1 (a char(10));
>  insert into t1 values ('a'),('b'),('c');
> 
> === modified file 'mysql-test/r/func_group_innodb.result'
> --- a/mysql-test/r/func_group_innodb.result	2007-05-29 12:58:18 +0000
> +++ b/mysql-test/r/func_group_innodb.result	2010-10-08 19:30:16 +0000
> @@ -79,7 +79,7 @@
>  explain select min(7) from t2i join t1i;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2i	ALL	NULL	NULL	NULL	NULL	1	
> -1	SIMPLE	t1i	ALL	NULL	NULL	NULL	NULL	1	Using join buffer
> +1	SIMPLE	t1i	ALL	NULL	NULL	NULL	NULL	1	Using join buffer (flat, BNL join)
>  select min(7) from t2i join t1i;
>  min(7)
>  NULL
> @@ -95,7 +95,7 @@
>  explain select max(7) from t2i join t1i;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2i	ALL	NULL	NULL	NULL	NULL	1	
> -1	SIMPLE	t1i	ALL	NULL	NULL	NULL	NULL	1	Using join buffer
> +1	SIMPLE	t1i	ALL	NULL	NULL	NULL	NULL	1	Using join buffer (flat, BNL join)
>  select max(7) from t2i join t1i;
>  max(7)
>  NULL
> 
> === modified file 'mysql-test/r/func_str.result'
> --- a/mysql-test/r/func_str.result	2010-03-26 05:49:35 +0000
> +++ b/mysql-test/r/func_str.result	2010-10-08 19:30:16 +0000
> @@ -2550,12 +2550,12 @@
>  explain select 1 as a from t1,(select decode(f1,f1) as b from t1) a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
>  2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	
>  explain select 1 as a from t1,(select encode(f1,f1) as b from t1) a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
>  2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	
>  drop table t1;
>  #
> 
> === modified file 'mysql-test/r/gis.result'
> --- a/mysql-test/r/gis.result	2010-02-26 13:16:46 +0000
> +++ b/mysql-test/r/gis.result	2010-10-08 19:30:16 +0000
> @@ -395,7 +395,7 @@
>  FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> +1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
>  DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
> 
> === modified file 'mysql-test/r/greedy_optimizer.result'
> --- a/mysql-test/r/greedy_optimizer.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/greedy_optimizer.result	2010-10-08 19:30:16 +0000
> @@ -121,11 +121,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -133,11 +133,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -145,11 +145,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -157,11 +157,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -169,11 +169,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -181,11 +181,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -201,11 +201,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -213,11 +213,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -225,11 +225,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -237,11 +237,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -249,11 +249,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -261,11 +261,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -277,11 +277,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -289,11 +289,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -304,9 +304,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	794.837037
> @@ -316,9 +316,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	794.837037
> @@ -328,9 +328,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	794.837037
> @@ -340,9 +340,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	794.837037
> @@ -353,11 +353,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -365,11 +365,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -377,11 +377,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -389,11 +389,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -401,11 +401,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -413,11 +413,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -433,11 +433,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -445,11 +445,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -457,11 +457,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -469,11 +469,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -481,11 +481,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -493,11 +493,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -509,11 +509,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -521,11 +521,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -536,9 +536,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	794.837037
> @@ -548,9 +548,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	794.837037
> @@ -560,9 +560,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	794.837037
> @@ -572,9 +572,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	794.837037
> @@ -585,11 +585,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -597,11 +597,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -609,11 +609,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -621,11 +621,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -633,11 +633,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -645,11 +645,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> 
> === modified file 'mysql-test/r/group_by.result'
> --- a/mysql-test/r/group_by.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/group_by.result	2010-10-08 19:30:16 +0000
> @@ -537,11 +537,11 @@
>  explain select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	6	Using temporary; Using filesort
> -1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  explain select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b ORDER BY NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	6	Using temporary
> -1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  drop table t1,t2;
>  create table t1 (a int, b int);
>  insert into t1 values (1, 4),(10, 40),(1, 4),(10, 43),(1, 4),(10, 41),(1, 4),(10, 43),(1, 4);
> 
> === modified file 'mysql-test/r/group_min_max.result'
> --- a/mysql-test/r/group_min_max.result	2010-06-26 10:05:41 +0000
> +++ b/mysql-test/r/group_min_max.result	2010-10-08 19:30:16 +0000
> @@ -2267,7 +2267,7 @@
>  AND t1_outer1.b = t1_outer2.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1_outer1	ref	a	a	5	const	1	Using where; Using index
> -1	PRIMARY	t1_outer2	index	NULL	a	10	NULL	15	Using where; Using index; Using join buffer
> +1	PRIMARY	t1_outer2	index	NULL	a	10	NULL	15	Using where; Using index; Using join buffer (flat, BNL join)
>  2	SUBQUERY	t1	range	NULL	a	5	NULL	8	Using index for group-by
>  EXPLAIN SELECT (SELECT (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) x
>  FROM t1 AS t1_outer) x2 FROM t1 AS t1_outer2;
> 
> === modified file 'mysql-test/r/index_merge_myisam.result'
> --- a/mysql-test/r/index_merge_myisam.result	2010-07-16 08:58:24 +0000
> +++ b/mysql-test/r/index_merge_myisam.result	2010-10-08 19:30:16 +0000
> @@ -271,7 +271,7 @@
>  (t1.key1 = t0.key1 or t1.key8 = t0.key1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t0	ref	i1	i1	4	const	1	
> -1	SIMPLE	t1	index_merge	i1,i8	i1,i8	4,4	NULL	2	Using union(i1,i8); Using where; Using join buffer
> +1	SIMPLE	t1	index_merge	i1,i8	i1,i8	4,4	NULL	2	Using union(i1,i8); Using where; Using join buffer (flat, BNL join)
>  explain select * from t0,t1 where t0.key1 < 3 and
>  (t1.key1 = t0.key1 or t1.key8 = t0.key1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> @@ -348,7 +348,7 @@
>  and   (B.key1 < 500000 or B.key2 < 3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	A	index_merge	i1,i2	i1,i2	4,4	NULL	1013	Using sort_union(i1,i2); Using where
> -1	SIMPLE	B	index_merge	i1,i2	i1,i2	4,4	NULL	1013	Using sort_union(i1,i2); Using where; Using join buffer
> +1	SIMPLE	B	index_merge	i1,i2	i1,i2	4,4	NULL	1013	Using sort_union(i1,i2); Using where; Using join buffer (flat, BNL join)
>  select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5)
>  from t0 as A force index(i1,i2), t0 as B force index (i1,i2)
>  where (A.key1 < 500000 or A.key2 < 3)
> @@ -362,7 +362,7 @@
>  and   (B.key1 = 1 or B.key2 = 1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	A	index_merge	i1,i2	i1,i2	4,4	NULL	1020	Using union(i1,i2); Using where
> -1	SIMPLE	B	index_merge	i1,i2	i1,i2	4,4	NULL	1020	Using union(i1,i2); Using where; Using join buffer
> +1	SIMPLE	B	index_merge	i1,i2	i1,i2	4,4	NULL	1020	Using union(i1,i2); Using where; Using join buffer (flat, BNL join)
>  select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5)
>  from t0 as A force index(i1,i2), t0 as B force index (i1,i2)
>  where (A.key1 = 1 or A.key2 = 1)
> @@ -377,7 +377,7 @@
>  and (B.key1 = 1 and B.key2 = 1 and B.key3 = 1 and B.key4=1 and B.key5=1 and B.key6=1 and B.key7 = 1 or B.key8=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	A	index_merge	i1,i2,i3,i4,i5,i6,i7?,i8	i2,i3,i4,i5,i6,i7?,i8	X	NULL	#	Using union(intersect(i2,i3,i4,i5,i6,i7?),i8); Using where
> -1	SIMPLE	B	index_merge	i1,i2,i3,i4,i5,i6,i7?,i8	i2,i3,i4,i5,i6,i7?,i8	X	NULL	#	Using union(intersect(i2,i3,i4,i5,i6,i7?),i8); Using where; Using join buffer
> +1	SIMPLE	B	index_merge	i1,i2,i3,i4,i5,i6,i7?,i8	i2,i3,i4,i5,i6,i7?,i8	X	NULL	#	Using union(intersect(i2,i3,i4,i5,i6,i7?),i8); Using where; Using join buffer (flat, BNL join)
>  select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5)
>  from t0 as A, t0 as B
>  where (A.key1 = 1 and A.key2 = 1 and A.key3 = 1 and A.key4=1 and A.key5=1 and A.key6=1 and A.key7 = 1 or A.key8=1)
> 
> === modified file 'mysql-test/r/information_schema.result'
> --- a/mysql-test/r/information_schema.result	2010-06-07 21:53:25 +0000
> +++ b/mysql-test/r/information_schema.result	2010-10-08 19:30:16 +0000
> @@ -323,7 +323,7 @@
>  a.ROUTINE_SCHEMA = b.SCHEMA_NAME;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	#	ALL	NULL	NULL	NULL	NULL	NULL	
> -1	SIMPLE	#	ALL	NULL	NULL	NULL	NULL	NULL	Using where; Using join buffer
> +1	SIMPLE	#	ALL	NULL	NULL	NULL	NULL	NULL	Using where; Using join buffer (flat, BNL join)
>  select a.ROUTINE_NAME, b.name from information_schema.ROUTINES a,
>  mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8) AND a.ROUTINE_SCHEMA='test' order by 1;
>  ROUTINE_NAME	name
> @@ -1450,7 +1450,7 @@
>  where a.table_name='t1' and a.table_schema='test' and b.table_name=a.table_name;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	a	ALL	NULL	TABLE_SCHEMA,TABLE_NAME	NULL	NULL	NULL	Using where; Skip_open_table; Scanned 0 databases
> -1	SIMPLE	b	ALL	NULL	NULL	NULL	NULL	NULL	Using where; Open_frm_only; Scanned all databases; Using join buffer
> +1	SIMPLE	b	ALL	NULL	NULL	NULL	NULL	NULL	Using where; Open_frm_only; Scanned all databases; Using join buffer (flat, BNL join)
>  SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
>  WHERE SCHEMA_NAME = 'mysqltest';
>  CATALOG_NAME	SCHEMA_NAME	DEFAULT_CHARACTER_SET_NAME	DEFAULT_COLLATION_NAME	SQL_PATH
> 
> === modified file 'mysql-test/r/innodb_gis.result'
> --- a/mysql-test/r/innodb_gis.result	2009-02-10 13:27:35 +0000
> +++ b/mysql-test/r/innodb_gis.result	2010-10-08 19:30:16 +0000
> @@ -403,7 +403,7 @@
>  FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	g1	ALL	NULL	NULL	NULL	NULL	2	100.00	Using temporary; Using filesort
> -1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> +1	SIMPLE	g2	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
>  DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
> 
> === modified file 'mysql-test/r/innodb_mysql.result'
> --- a/mysql-test/r/innodb_mysql.result	2010-06-26 10:05:41 +0000
> +++ b/mysql-test/r/innodb_mysql.result	2010-10-08 19:30:16 +0000
> @@ -187,7 +187,7 @@
>  explain select min(7) from t2i join t1i;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2i	ALL	NULL	NULL	NULL	NULL	1	
> -1	SIMPLE	t1i	ALL	NULL	NULL	NULL	NULL	1	Using join buffer
> +1	SIMPLE	t1i	ALL	NULL	NULL	NULL	NULL	1	Using join buffer (flat, BNL join)
>  select min(7) from t2i join t1i;
>  min(7)
>  NULL
> @@ -203,7 +203,7 @@
>  explain select max(7) from t2i join t1i;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2i	ALL	NULL	NULL	NULL	NULL	1	
> -1	SIMPLE	t1i	ALL	NULL	NULL	NULL	NULL	1	Using join buffer
> +1	SIMPLE	t1i	ALL	NULL	NULL	NULL	NULL	1	Using join buffer (flat, BNL join)
>  select max(7) from t2i join t1i;
>  max(7)
>  NULL
> 
> === modified file 'mysql-test/r/join.result'
> --- a/mysql-test/r/join.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/join.result	2010-10-08 19:30:16 +0000
> @@ -404,7 +404,7 @@
>  ORDER BY t1.b, t1.c;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	32	Using temporary; Using filesort
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	16	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	16	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN t2.e FROM t1,t2 WHERE t2.d=1 AND t1.b=t2.e
>  ORDER BY t1.b, t1.c;
>  e
> @@ -1099,7 +1099,7 @@
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	0	Using where
>  1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	0	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	0	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	10	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	10	Using where; Using join buffer (flat, BNL join)
>  SELECT * 
>  FROM 
>  t1 JOIN t2 ON t1.a = t2.a 
> 
> === modified file 'mysql-test/r/join_cache.result'
> --- a/mysql-test/r/join_cache.result	2010-10-04 01:45:46 +0000
> +++ b/mysql-test/r/join_cache.result	2010-10-08 19:30:16 +0000
> @@ -45,7 +45,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer
> +1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer (flat, BNL join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -74,8 +74,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	ALL	NULL	NULL	NULL	NULL	984	Using where; Using join buffer
> -1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	ALL	NULL	NULL	NULL	NULL	984	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer (flat, BNL join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -233,7 +233,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer
> +1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer (flat, BNL join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -262,8 +262,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	ALL	NULL	NULL	NULL	NULL	984	Using where; Using join buffer
> -1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	ALL	NULL	NULL	NULL	NULL	984	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer (incremental, BNL join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -425,7 +425,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer
> +1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer (flat, BNL join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -454,8 +454,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	ALL	NULL	NULL	NULL	NULL	984	Using where; Using join buffer
> -1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	ALL	NULL	NULL	NULL	NULL	984	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer (flat, BNL join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -613,7 +613,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer
> +1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer (flat, BNL join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -642,8 +642,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	ALL	NULL	NULL	NULL	NULL	984	Using where; Using join buffer
> -1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	ALL	NULL	NULL	NULL	NULL	984	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	City	ALL	NULL	NULL	NULL	NULL	4079	Using where; Using join buffer (incremental, BNL join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -840,7 +840,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -869,8 +869,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BNLH join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -1024,7 +1024,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -1052,7 +1052,7 @@
>  Country.Population > 10000000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer (flat, BNLH join)
>  SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage)
>  FROM Country LEFT JOIN CountryLanguage ON
>  (CountryLanguage.Country=Country.Code AND Language='English')
> @@ -1150,7 +1150,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -1179,8 +1179,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BNLH join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using where; Using join buffer (incremental, BNLH join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -1334,7 +1334,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -1362,7 +1362,7 @@
>  Country.Population > 10000000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer (flat, BNLH join)
>  SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage)
>  FROM Country LEFT JOIN CountryLanguage ON
>  (CountryLanguage.Country=Country.Code AND Language='English')
> @@ -1460,7 +1460,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKA join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -1489,8 +1489,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer (flat, BKA join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -1644,7 +1644,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKA join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -1672,7 +1672,7 @@
>  Country.Population > 10000000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer (flat, BKA join)
>  SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage)
>  FROM Country LEFT JOIN CountryLanguage ON
>  (CountryLanguage.Country=Country.Code AND Language='English')
> @@ -1767,7 +1767,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKA join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -1796,8 +1796,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer (incremental, BKA join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -1951,7 +1951,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKA join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -1979,7 +1979,7 @@
>  Country.Population > 10000000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer (flat, BKA join)
>  SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage)
>  FROM Country LEFT JOIN CountryLanguage ON
>  (CountryLanguage.Country=Country.Code AND Language='English')
> @@ -2074,7 +2074,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKAH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -2103,8 +2103,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BKAH join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer (flat, BKAH join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -2258,7 +2258,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKAH join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -2286,7 +2286,7 @@
>  Country.Population > 10000000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer (flat, BKAH join)
>  SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage)
>  FROM Country LEFT JOIN CountryLanguage ON
>  (CountryLanguage.Country=Country.Code AND Language='English')
> @@ -2381,7 +2381,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKAH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -2410,8 +2410,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BKAH join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer (incremental, BKAH join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -2565,7 +2565,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKAH join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -2593,7 +2593,7 @@
>  Country.Population > 10000000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	ALL	NULL	NULL	NULL	NULL	239	Using where
> -1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer
> +1	SIMPLE	CountryLanguage	eq_ref	PRIMARY	PRIMARY	33	world.Country.Code,const	1	Using where; Using join buffer (flat, BKAH join)
>  SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage)
>  FROM Country LEFT JOIN CountryLanguage ON
>  (CountryLanguage.Country=Country.Code AND Language='English')
> @@ -2692,7 +2692,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -2721,8 +2721,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BNLH join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -2876,7 +2876,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -2906,7 +2906,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -2935,8 +2935,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BNLH join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using where; Using join buffer (incremental, BNLH join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -3090,7 +3090,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BNLH join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -3120,7 +3120,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKA join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -3149,8 +3149,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer (flat, BKA join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -3304,7 +3304,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKA join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -3334,7 +3334,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKA join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -3363,8 +3363,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer (incremental, BKA join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -3518,7 +3518,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKA join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -3548,7 +3548,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKAH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -3577,8 +3577,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BKAH join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer (flat, BKAH join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -3732,7 +3732,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKAH join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -3762,7 +3762,7 @@
>  Country.Name LIKE 'L%' AND City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	SIMPLE	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKAH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND 
>  Country.Name LIKE 'L%' AND City.Population > 100000;
> @@ -3791,8 +3791,8 @@
>  CountryLanguage.Percentage > 50;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	CountryLanguage	ALL	PRIMARY,Percentage	NULL	NULL	NULL	984	Using where
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer
> -1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.CountryLanguage.Country	1	Using where; Using join buffer (flat, BKAH join)
> +1	SIMPLE	City	ref	Country	Country	3	world.Country.Code	18	Using index condition(BKA); Using where; Using join buffer (incremental, BKAH join)
>  SELECT City.Name, Country.Name, CountryLanguage.Language
>  FROM City,Country,CountryLanguage
>  WHERE City.Country=Country.Code AND
> @@ -3946,7 +3946,7 @@
>  City.Population > 100000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	Country	range	PRIMARY,Name	Name	52	NULL	10	Using index condition; Using MRR
> -1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer
> +1	PRIMARY	City	ref	Population,Country	Country	3	world.Country.Code	18	Using where; Using join buffer (flat, BKAH join)
>  SELECT Name FROM City
>  WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND
>  City.Population > 100000;
> @@ -4031,7 +4031,7 @@
>  WHERE City.Country=Country.Code AND City.Population > 3000000;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	City	range	Population,Country	Population	4	NULL	#	Using index condition; Using MRR
> -1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.City.Country	#	Using join buffer
> +1	SIMPLE	Country	eq_ref	PRIMARY	PRIMARY	3	world.City.Country	#	Using join buffer (flat, BKAH join)
>  SELECT City.Name, Country.Name FROM City,Country
>  WHERE City.Country=Country.Code AND City.Population > 3000000;
>  Name	Name
> @@ -4320,15 +4320,15 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t6	system	PRIMARY	NULL	NULL	NULL	1	
>  1	SIMPLE	t1	ref	t1_affiliateid,t1_metaid	t1_affiliateid	4	const	1	
> -1	SIMPLE	t4	ref	PRIMARY,t4_formatclassid,t4_formats_idx	t4_formats_idx	1	const	1	Using index condition; Using where; Using join buffer
> -1	SIMPLE	t5	eq_ref	PRIMARY,t5_formattypeid	PRIMARY	4	test.t4.formatclassid	1	Using where; Using join buffer
> -1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.metaid	1	Using join buffer
> +1	SIMPLE	t4	ref	PRIMARY,t4_formatclassid,t4_formats_idx	t4_formats_idx	1	const	1	Using index condition; Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	t5	eq_ref	PRIMARY,t5_formattypeid	PRIMARY	4	test.t4.formatclassid	1	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.metaid	1	Using join buffer (incremental, BKA join)
>  1	SIMPLE	t7	ref	PRIMARY	PRIMARY	4	test.t1.metaid	1	Using index
> -1	SIMPLE	t3	ref	t3_metaid,t3_formatid,t3_metaidformatid	t3_metaid	4	test.t1.metaid	2	Using where; Using join buffer
> -1	SIMPLE	t8	eq_ref	PRIMARY	PRIMARY	4	test.t7.artistid	1	Using join buffer
> -1	SIMPLE	t9	index	PRIMARY,t9_subgenreid,t9_metaid	PRIMARY	8	NULL	2	Using where; Using index; Using join buffer
> -1	SIMPLE	t10	eq_ref	PRIMARY,t10_genreid	PRIMARY	4	test.t9.subgenreid	1	Using join buffer
> -1	SIMPLE	t11	eq_ref	PRIMARY	PRIMARY	4	test.t10.genreid	1	Using join buffer
> +1	SIMPLE	t3	ref	t3_metaid,t3_formatid,t3_metaidformatid	t3_metaid	4	test.t1.metaid	2	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	t8	eq_ref	PRIMARY	PRIMARY	4	test.t7.artistid	1	Using join buffer (incremental, BKA join)
> +1	SIMPLE	t9	index	PRIMARY,t9_subgenreid,t9_metaid	PRIMARY	8	NULL	2	Using where; Using index; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t10	eq_ref	PRIMARY,t10_genreid	PRIMARY	4	test.t9.subgenreid	1	Using join buffer (incremental, BKA join)
> +1	SIMPLE	t11	eq_ref	PRIMARY	PRIMARY	4	test.t10.genreid	1	Using join buffer (incremental, BKA join)
>  SELECT t1.uniquekey, t1.xml AS affiliateXml,
>  t8.name AS artistName, t8.artistid, 
>  t11.name AS genreName, t11.genreid, t11.priority AS genrePriority,
> @@ -4409,7 +4409,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	9	Using where
>  1	SIMPLE	t2	ref	PRIMARY	PRIMARY	4	test.t1.a1	1	Using index
> -1	SIMPLE	t3	ref	idx	idx	5	test.t2.b2	5	Using where; Using join buffer
> +1	SIMPLE	t3	ref	idx	idx	5	test.t2.b2	5	Using where; Using join buffer (flat, BKA join)
>  SELECT a1<>a2, a1, a2, b2, b3, c3,
>  SUBSTR(filler1,1,1) AS s1, SUBSTR(filler2,1,1) AS s2
>  FROM t1,t2,t3 WHERE a1=a2 AND b2=b3 AND MOD(c3,10)>7;
> @@ -4441,7 +4441,7 @@
>  EXPLAIN SELECT * FROM t1,t2 WHERE t1.a=t2.a AND t1.b >= 30;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	idx	NULL	NULL	NULL	7	Using where
> -1	SIMPLE	t2	ref	idx	idx	5	test.t1.a	2	Using join buffer
> +1	SIMPLE	t2	ref	idx	idx	5	test.t1.a	2	Using join buffer (flat, BKAH join)
>  SELECT * FROM t1,t2 WHERE t1.a=t2.a AND t1.b >= 30;
>  a	b	a	b
>  7	40	7	10
> @@ -4474,7 +4474,7 @@
>  SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
> -1	SIMPLE	t2	ref	i_a	i_a	4	test.t1.a	2	Using where; Not exists; Using join buffer
> +1	SIMPLE	t2	ref	i_a	i_a	4	test.t1.a	2	Using where; Not exists; Using join buffer (flat, BKA join)
>  SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t2.b IS NULL;
>  a	a	b
>  3	NULL	NULL
> @@ -4501,7 +4501,7 @@
>  from t1 left join t2 on t1.a=t2.a and t2.p % 2 = 1 group by t1.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	8	Using temporary; Using filesort
> -1	SIMPLE	t2	ref	i_a	i_a	5	test.t1.a	2	Using where; Using join buffer
> +1	SIMPLE	t2	ref	i_a	i_a	5	test.t1.a	2	Using where; Using join buffer (flat, BKA join)
>  select t1.a, count(t2.p) as count
>  from t1 left join t2 on t1.a=t2.a and t2.p % 2 = 1 group by t1.a;
>  a	count
> @@ -4553,7 +4553,7 @@
>  explain select * from t1 left join t2 on t1.a=t2.a where t2.c=102 or t2.c is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on t1.a=t2.a where t2.c=102 or t2.c is null;
>  a	b	a	c
>  3	30	3	102
> @@ -4576,7 +4576,7 @@
>  explain select * from t1 left join t2 on (1=0) where a=40;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on (1=0) where a=40;
>  a	b
>  40	NULL
> @@ -4620,7 +4620,7 @@
>  EXPLAIN SELECT AVG(c) FROM t1,t2 WHERE t1.a=t2.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2050	Using where
> -1	SIMPLE	t2	ref	idx	idx	5	test.t1.a	640	Using join buffer
> +1	SIMPLE	t2	ref	idx	idx	5	test.t1.a	640	Using join buffer (flat, BKA join)
>  SELECT AVG(c) FROM t1,t2 WHERE t1.a=t2.b;
>  AVG(c)
>  5.0000
> @@ -4660,8 +4660,8 @@
>  t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	16384	Using where
> -1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where; Using join buffer
> -1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where; Using join buffer
> +1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where; Using join buffer (flat, BKAH join)
> +1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where; Using join buffer (flat, BKAH join)
>  SELECT COUNT(*) FROM t1,t2,t3
>  WHERE t1.a=t2.a AND t2.a=t3.a AND
>  t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL;
> @@ -4726,7 +4726,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	index	PRIMARY	PRIMARY	8	NULL	2	Using index
>  1	SIMPLE	t2	ref	PRIMARY	PRIMARY	8	test.t1.a	1	Using index
> -1	SIMPLE	t3	ref	idx	idx	16	test.t1.a,test.t2.b	2	Using join buffer
> +1	SIMPLE	t3	ref	idx	idx	16	test.t1.a,test.t2.b	2	Using join buffer (flat, BKA join)
>  SELECT t1.a, t2.a, t3.a, t2.b, t3.b, t3.val 
>  FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b) 
>  WHERE t1.a=t2.a;
> @@ -4751,7 +4751,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	index	PRIMARY	PRIMARY	8	NULL	2	Using index
>  1	SIMPLE	t2	ref	PRIMARY	PRIMARY	8	test.t1.a	1	Using index
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	24	Using where; Using join buffer
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	24	Using where; Using join buffer (flat, BNL join)
>  SELECT t1.a, t2.a, t3.a, t2.b, t3.b, t3.val 
>  FROM (t1,t2) LEFT JOIN t3 ON (t1.a=t3.a AND t2.b=t3.b) 
>  WHERE t1.a=t2.a;
> @@ -4797,7 +4797,7 @@
>  where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ref	f1	f1	4	test.t1.f1	3	Using index condition(BKA); Using join buffer
> +1	SIMPLE	t2	ref	f1	f1	4	test.t1.f1	3	Using index condition(BKA); Using join buffer (flat, BKA join)
>  set join_cache_level=6;
>  select t2.f1, t2.f2, t2.f3 from t1,t2
>  where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
> @@ -4810,7 +4810,7 @@
>  where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ref	f1	f1	4	test.t1.f1	3	Using index condition(BKA); Using join buffer
> +1	SIMPLE	t2	ref	f1	f1	4	test.t1.f1	3	Using index condition(BKA); Using join buffer (flat, BKA join)
>  set join_cache_level=7;
>  select t2.f1, t2.f2, t2.f3 from t1,t2
>  where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
> @@ -4823,7 +4823,7 @@
>  where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ref	f1	f1	4	test.t1.f1	3	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	t2	ref	f1	f1	4	test.t1.f1	3	Using index condition(BKA); Using where; Using join buffer (flat, BKAH join)
>  set join_cache_level=8;
>  select t2.f1, t2.f2, t2.f3 from t1,t2
>  where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
> @@ -4836,7 +4836,7 @@
>  where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ref	f1	f1	4	test.t1.f1	3	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	t2	ref	f1	f1	4	test.t1.f1	3	Using index condition(BKA); Using where; Using join buffer (flat, BKAH join)
>  drop table t1,t2;
>  set join_cache_level=default;
>  #
> @@ -4855,7 +4855,7 @@
>  where t1.d=3 group by t1.id1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	idx1	idx1	5	const	4	Using where; Using index; Using temporary; Using filesort
> -1	SIMPLE	t2	ref	idx2	idx2	5	test.t1.id1	2	Using join buffer
> +1	SIMPLE	t2	ref	idx2	idx2	5	test.t1.id1	2	Using join buffer (flat, BKA join)
>  select t1.id1, sum(t2.id2) from t1 join t2 on t1.id1=t2.id1 
>  where t1.d=3 group by t1.id1;
>  id1	sum(t2.id2)
> @@ -4867,7 +4867,7 @@
>  where t1.d=3 and t2.id2 > 200 order by t1.id1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	idx1	idx1	5	const	4	Using where; Using index; Using temporary; Using filesort
> -1	SIMPLE	t2	ref	idx2	idx2	5	test.t1.id1	2	Using where; Using join buffer
> +1	SIMPLE	t2	ref	idx2	idx2	5	test.t1.id1	2	Using where; Using join buffer (flat, BKA join)
>  select t1.id1  from t1 join t2 on t1.id1=t2.id1 
>  where t1.d=3 and t2.id2 > 200 order by t1.id1;
>  id1
> @@ -4924,9 +4924,9 @@
>  where t2.b=t1.b and t3.d=t1.d and t4.c=t1.c;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	7	Using where
> -1	SIMPLE	t2	ref	idx	idx	5	test.t1.b	1	Using join buffer
> -1	SIMPLE	t3	ref	idx	idx	5	test.t1.d	1	Using join buffer
> -1	SIMPLE	t4	ref	idx	idx	5	test.t1.c	1	Using join buffer
> +1	SIMPLE	t2	ref	idx	idx	5	test.t1.b	1	Using join buffer (flat, BKA join)
> +1	SIMPLE	t3	ref	idx	idx	5	test.t1.d	1	Using join buffer (incremental, BKA join)
> +1	SIMPLE	t4	ref	idx	idx	5	test.t1.c	1	Using join buffer (incremental, BKA join)
>  select t1.a, t1.b, t1.c, t1.d, t2.e, t3.f, t4.g from t1,t2,t3,t4
>  where t2.b=t1.b and t3.d=t1.d and t4.c=t1.c;
>  a	b	c	d	e	f	g
> @@ -4975,10 +4975,10 @@
>  t5.enum2='Active' AND t3.id4=t2.id4 AND t2.id3=t1.id3 AND t3.text1<'D';
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	349	Using where
> -1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	8	test.t1.id3	1	Using where; Using join buffer
> -1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	8	test.t2.id4	1	Using where; Using join buffer
> -1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	8	test.t1.id2	1	Using join buffer
> -1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	16	test.t1.id1,test.t1.id2	1	Using where; Using join buffer
> +1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	8	test.t1.id3	1	Using where; Using join buffer (flat, BKAH join)
> +1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	8	test.t2.id4	1	Using where; Using join buffer (incremental, BKAH join)
> +1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	8	test.t1.id2	1	Using join buffer (incremental, BKAH join)
> +1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	16	test.t1.id1,test.t1.id2	1	Using where; Using join buffer (incremental, BKAH join)
>  SELECT STRAIGHT_JOIN t1.id1, t1.num3, t3.text1, t3.id4, t2.id3, t4.dummy
>  FROM t1 JOIN  t2 JOIN  t3 JOIN  t4 JOIN  t5 
>  WHERE t1.id1=t5.id1 AND t1.id2=t5.id2 and  t4.id2=t1.id2 AND
> @@ -5075,7 +5075,7 @@
>  ORDER BY t1.int_key;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	index	NULL	int_key	4	NULL	14	Using index
> -1	SIMPLE	t2	index	NULL	int_key	4	NULL	2	Using index; Using join buffer
> +1	SIMPLE	t2	index	NULL	int_key	4	NULL	2	Using index; Using join buffer (flat, BNL join)
>  
>  DROP TABLE t1,t2;
>  SET join_cache_level=default;
> @@ -5109,7 +5109,7 @@
>  ORDER BY t2.v;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
> -1	SIMPLE	t1	index	NULL	PRIMARY	4	NULL	4	Using index; Using join buffer
> +1	SIMPLE	t1	index	NULL	PRIMARY	4	NULL	4	Using index; Using join buffer (flat, BNL join)
>  
>  DROP TABLE t1,t2;
>  #
> @@ -5143,8 +5143,8 @@
>  explain select t1.* from t1,t2,t3;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
>  select t1.* from t1,t2,t3;
>  a	b
>  1	1
> @@ -5159,8 +5159,8 @@
>  explain select t1.* from t1,t2,t3;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (incremental, BNL join)
>  select t1.* from t1,t2,t3;
>  a	b
>  1	1
> @@ -5190,8 +5190,8 @@
>  SELECT t3.a FROM t1,t2,t3 WHERE t1.a = t3.a AND t1.b = t3.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	5	Using join buffer
> -1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	5	Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where; Using join buffer (incremental, BKA join)
>  SELECT t3.a FROM t1,t2,t3 WHERE t1.a = t3.a AND t1.b = t3.b;
>  a
>  27
> @@ -5237,7 +5237,7 @@
>  ON t3.carrier = t1.carrier;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.carrier	1	Using where
>  1	SIMPLE	t4	ref	carrier_id	carrier_id	5	test.t3.id	2	Using index
>  SET join_cache_level=default;
> @@ -5253,7 +5253,7 @@
>  explain SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ref	b	b	5	test.t1.b	2	Using where; Using join buffer
> +1	SIMPLE	t2	ref	b	b	5	test.t1.b	2	Using where; Using join buffer (flat, BKA join)
>  SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  a
>  NULL
> @@ -5262,7 +5262,7 @@
>  explain SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ref	b	b	5	test.t1.b	2	Using where; Using join buffer
> +1	SIMPLE	t2	ref	b	b	5	test.t1.b	2	Using where; Using join buffer (flat, BKAH join)
>  SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  a
>  NULL
> @@ -5273,7 +5273,7 @@
>  explain SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ref	b	b	5	test.t1.b	2	Using where; Using join buffer
> +1	SIMPLE	t2	ref	b	b	5	test.t1.b	2	Using where; Using join buffer (flat, BKA join)
>  SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  a
>  NULL
> @@ -5287,7 +5287,7 @@
>  explain SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ref	b	b	103	test.t1.b	2	Using where; Using join buffer
> +1	SIMPLE	t2	ref	b	b	103	test.t1.b	2	Using where; Using join buffer (flat, BKA join)
>  SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  a
>  NULL
> @@ -5296,7 +5296,7 @@
>  explain SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ref	b	b	103	test.t1.b	2	Using where; Using join buffer
> +1	SIMPLE	t2	ref	b	b	103	test.t1.b	2	Using where; Using join buffer (flat, BKAH join)
>  SELECT t2.a FROM t1 LEFT JOIN t2 ON t2.b  = t1.b;
>  a
>  NULL
> @@ -5322,7 +5322,7 @@
>  WHERE s.pk AND s.a  >= t.pk AND  s.b  = t.c;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t	ALL	NULL	NULL	NULL	NULL	2	Using where
> -1	SIMPLE	s	ref	idx	idx	19	test.t.c	1	Using index condition(BKA); Using where; Using join buffer
> +1	SIMPLE	s	ref	idx	idx	19	test.t.c	1	Using index condition(BKA); Using where; Using join buffer (flat, BKAH join)
>  SELECT t.a FROM t1 t, t1 s FORCE INDEX(idx)
>  WHERE s.pk AND s.a  >= t.pk AND  s.b  = t.c;
>  a
> @@ -5345,8 +5345,8 @@
>  WHERE t1.a OR t3.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer (incremental, BNL join)
>  SELECT t1.a 
>  FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t2.a) ON 0 
>  WHERE t1.a OR t3.a;
> @@ -5359,9 +5359,9 @@
>  WHERE t1.a OR t4.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	4	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer (incremental, BNL join)
>  SELECT t1.a 
>  FROM t1 LEFT JOIN (t2 LEFT JOIN (t3 LEFT JOIN t4 ON 1) ON t2.a) ON 0
>  WHERE t1.a OR t4.a;
> 
> === modified file 'mysql-test/r/join_nested.result'
> --- a/mysql-test/r/join_nested.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/join_nested.result	2010-10-08 19:30:16 +0000
> @@ -229,7 +229,7 @@
>  ON t7.b=t8.b AND t6.b < 10;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (flat, BNL join)
>  1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  Warnings:
>  Note	1003	select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t7`.`b` = `test`.`t8`.`b`) and (`test`.`t6`.`b` < 10))) where 1
> @@ -544,7 +544,7 @@
>  (t2.a >= 4 OR t2.c IS NULL);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> @@ -639,7 +639,7 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> @@ -647,7 +647,7 @@
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  SELECT t9.a,t9.b
> @@ -836,7 +836,7 @@
>  WHERE t1.a <= 2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  Warnings:
> @@ -850,7 +850,7 @@
>  ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ref	idx_b	idx_b	5	test.t3.b	2	100.00	Using where
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	
>  Warnings:
> @@ -906,7 +906,7 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> @@ -914,7 +914,7 @@
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  CREATE INDEX idx_b ON t4(b);
> @@ -956,7 +956,7 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	100.00	Using where
> @@ -964,7 +964,7 @@
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  CREATE INDEX idx_b ON t8(b);
> @@ -1005,7 +1005,7 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	100.00	Using where
> @@ -1013,7 +1013,7 @@
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	100.00	Using where
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)) and (`test`.`t5`.`b` is not null)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  CREATE INDEX idx_b ON t1(b);
> @@ -1063,7 +1063,7 @@
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	100.00	Using where
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)) and (`test`.`t5`.`b` is not null)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
> 
> === modified file 'mysql-test/r/join_nested_jcl6.result'
> --- a/mysql-test/r/join_nested_jcl6.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/join_nested_jcl6.result	2010-10-08 19:30:16 +0000
> @@ -80,8 +80,8 @@
>  WHERE t3.a=1 OR t3.c IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((`test`.`t4`.`b` = `test`.`t2`.`b`)) where ((`test`.`t3`.`a` = 1) or isnull(`test`.`t3`.`c`))
>  SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
> @@ -156,9 +156,9 @@
>  WHERE t3.a>1 OR t3.c IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b` from `test`.`t2` left join (`test`.`t3` join `test`.`t4` join `test`.`t5`) on((`test`.`t4`.`b` = `test`.`t2`.`b`)) where ((`test`.`t3`.`a` > 1) or isnull(`test`.`t3`.`c`))
>  SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
> @@ -186,9 +186,9 @@
>  (t5.a<3 OR t5.c IS NULL);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b` from `test`.`t2` left join (`test`.`t3` join `test`.`t4` join `test`.`t5`) on((`test`.`t4`.`b` = `test`.`t2`.`b`)) where (((`test`.`t3`.`a` > 1) or isnull(`test`.`t3`.`c`)) and ((`test`.`t5`.`a` < 3) or isnull(`test`.`t5`.`c`)))
>  SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
> @@ -236,8 +236,8 @@
>  ON t7.b=t8.b AND t6.b < 10;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> -1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (flat, BNL join)
> +1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t7`.`b` = `test`.`t8`.`b`) and (`test`.`t6`.`b` < 10))) where 1
>  SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
> @@ -551,14 +551,14 @@
>  (t2.a >= 4 OR t2.c IS NULL);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> -1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (incremental, BNL join)
> +1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)))
>  SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
> @@ -646,15 +646,15 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  SELECT t9.a,t9.b
> @@ -843,9 +843,9 @@
>  WHERE t1.a <= 2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) where (`test`.`t1`.`a` <= 2)
>  CREATE INDEX idx_b ON t2(b);
> @@ -857,9 +857,9 @@
>  ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> -1	SIMPLE	t2	ref	idx_b	idx_b	5	test.t3.b	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
> +1	SIMPLE	t2	ref	idx_b	idx_b	5	test.t3.b	2	100.00	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on((((`test`.`t3`.`a` = 1) and (`test`.`t3`.`b` = `test`.`t2`.`b`) and (`test`.`t2`.`b` = `test`.`t4`.`b`)) and (`test`.`t3`.`b` is not null))) where 1
>  SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
> @@ -913,15 +913,15 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  CREATE INDEX idx_b ON t4(b);
> @@ -963,15 +963,15 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	100.00	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  CREATE INDEX idx_b ON t8(b);
> @@ -1012,15 +1012,15 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	100.00	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	100.00	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)) and (`test`.`t5`.`b` is not null)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  CREATE INDEX idx_b ON t1(b);
> @@ -1062,15 +1062,15 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ref	idx_a	idx_a	5	const	1	100.00	Using where
> -1	SIMPLE	t1	ref	idx_b	idx_b	5	test.t0.b	2	100.00	Using join buffer
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> -1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	100.00	Using where; Using join buffer
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ref	idx_b	idx_b	5	test.t0.b	2	100.00	Using join buffer (flat, BKA join)
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	100.00	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t5	ALL	idx_b	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	2	100.00	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (incremental, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on((((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)) and (`test`.`t5`.`b` is not null)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
> @@ -1324,8 +1324,8 @@
>  EXPLAIN SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	0	Using where; Using join buffer (incremental, BNL join)
>  DROP TABLE t1,t2,t3;
>  CREATE TABLE t1 (goods int(12) NOT NULL, price varchar(128) NOT NULL);
>  INSERT INTO t1 VALUES (23, 2340), (26, 9900);
> @@ -1452,27 +1452,27 @@
>  t2 left join (t3 join t5 on t5.a=t3.b) on t3.a=t2.b where t4.a<=>t3.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	X	
> -1	SIMPLE	t3	ref	a	a	5	test.t2.b	X	Using where; Using join buffer
> -1	SIMPLE	t5	ref	a	a	5	test.t3.b	X	Using join buffer
> -1	SIMPLE	t4	ref	a	a	5	test.t3.b	X	Using index condition(BKA); Using join buffer
> +1	SIMPLE	t3	ref	a	a	5	test.t2.b	X	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	t5	ref	a	a	5	test.t3.b	X	Using join buffer (incremental, BKA join)
> +1	SIMPLE	t4	ref	a	a	5	test.t3.b	X	Using index condition(BKA); Using join buffer (incremental, BKA join)
>  explain select * from (t4 join t6 on t6.a=t4.b) right join t3 on t4.a=t3.b
>  join t2 left join (t5 join t7 on t7.a=t5.b) on t5.a=t2.b where t3.a<=>t2.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	X	
> -1	SIMPLE	t3	ref	a	a	5	test.t2.b	X	Using index condition(BKA); Using join buffer
> -1	SIMPLE	t4	ref	a	a	5	test.t3.b	X	Using where; Using join buffer
> -1	SIMPLE	t6	ref	a	a	5	test.t4.b	X	Using join buffer
> -1	SIMPLE	t5	ref	a	a	5	test.t2.b	X	Using where; Using join buffer
> -1	SIMPLE	t7	ref	a	a	5	test.t5.b	X	Using join buffer
> +1	SIMPLE	t3	ref	a	a	5	test.t2.b	X	Using index condition(BKA); Using join buffer (flat, BKA join)
> +1	SIMPLE	t4	ref	a	a	5	test.t3.b	X	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t6	ref	a	a	5	test.t4.b	X	Using join buffer (incremental, BKA join)
> +1	SIMPLE	t5	ref	a	a	5	test.t2.b	X	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t7	ref	a	a	5	test.t5.b	X	Using join buffer (incremental, BKA join)
>  explain select * from t2 left join
>  (t3 left join (t4 join t6 on t6.a=t4.b) on t4.a=t3.b 
>  join t5 on t5.a=t3.b) on t3.a=t2.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	X	
> -1	SIMPLE	t3	ref	a	a	5	test.t2.b	X	Using where; Using join buffer
> -1	SIMPLE	t4	ref	a	a	5	test.t3.b	X	Using where; Using join buffer
> -1	SIMPLE	t6	ref	a	a	5	test.t4.b	X	Using join buffer
> -1	SIMPLE	t5	ref	a	a	5	test.t3.b	X	Using join buffer
> +1	SIMPLE	t3	ref	a	a	5	test.t2.b	X	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	t4	ref	a	a	5	test.t3.b	X	Using where; Using join buffer (incremental, BKA join)
> +1	SIMPLE	t6	ref	a	a	5	test.t4.b	X	Using join buffer (incremental, BKA join)
> +1	SIMPLE	t5	ref	a	a	5	test.t3.b	X	Using join buffer (incremental, BKA join)
>  drop table t0, t1, t2, t3, t4, t5, t6, t7;
>  create table t1 (a int);
>  insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
> @@ -1485,8 +1485,8 @@
>  on (t1.a = t2.a);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	10	
> -1	SIMPLE	t2	ref	a	a	5	test.t1.a	1	Using where; Using join buffer
> -1	SIMPLE	t3	ref	a	a	5	test.t2.a	1	Using where; Using join buffer
> +1	SIMPLE	t2	ref	a	a	5	test.t1.a	1	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	t3	ref	a	a	5	test.t2.a	1	Using where; Using join buffer (incremental, BKA join)
>  drop table t1, t2, t3;
>  CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, type varchar(10));
>  CREATE TABLE t2 (pid int NOT NULL PRIMARY KEY, type varchar(10));
> @@ -1737,7 +1737,7 @@
>  ON t4.carrier = t1.carrier;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	package_id	package_id	5	NULL	45	Using where; Using index
> -1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.package_id	1	Using join buffer
> +1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.package_id	1	Using join buffer (flat, BKA join)
>  1	SIMPLE	t4	eq_ref	PRIMARY,id	PRIMARY	2	test.t1.carrier	1	Using where
>  1	SIMPLE	t5	ref	carrier_id	carrier_id	5	test.t4.id	22	Using index
>  1	SIMPLE	t3	ref	package_id	package_id	5	test.t1.id	1	Using where; Using index
> @@ -1773,9 +1773,9 @@
>  (t8.a > 0 OR t8.c IS NULL);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t7	ref	b_i	b_i	5	test.t5.b	2	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	b_i	NULL	NULL	NULL	3	Using where; Using join buffer
> -1	SIMPLE	t8	ref	b_i	b_i	5	test.t7.b	2	Using where; Using join buffer
> +1	SIMPLE	t7	ref	b_i	b_i	5	test.t5.b	2	Using where; Using join buffer (flat, BKA join)
> +1	SIMPLE	t6	ALL	b_i	NULL	NULL	NULL	3	Using where; Using join buffer (incremental, BNL join)
> +1	SIMPLE	t8	ref	b_i	b_i	5	test.t7.b	2	Using where; Using join buffer (incremental, BKA join)
>  SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
>  FROM t5 
>  LEFT JOIN 
> @@ -1808,9 +1808,9 @@
>  ON (t5.b=t8.b);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	1	Using join buffer
> -1	SIMPLE	t7	const	PRIMARY	PRIMARY	4	const	1	Using join buffer
> -1	SIMPLE	t8	ALL	b_i	NULL	NULL	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	1	Using join buffer (flat, BNL join)
> +1	SIMPLE	t7	const	PRIMARY	PRIMARY	4	const	1	Using join buffer (incremental, BKA join)
> +1	SIMPLE	t8	ALL	b_i	NULL	NULL	NULL	1	Using where; Using join buffer (incremental, BNL join)
>  SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
>  FROM t5 LEFT JOIN                
>  (t6 LEFT JOIN t7 ON t7.a=1, t8)
> @@ -1825,9 +1825,9 @@
>  ON (t5.b=t8.b);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	1	Using join buffer
> -1	SIMPLE	t7	ref	b_i	b_i	5	const	0	Using join buffer
> -1	SIMPLE	t8	ALL	b_i	NULL	NULL	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	1	Using join buffer (flat, BNL join)
> +1	SIMPLE	t7	ref	b_i	b_i	5	const	0	Using join buffer (incremental, BKA join)
> +1	SIMPLE	t8	ALL	b_i	NULL	NULL	NULL	1	Using where; Using join buffer (incremental, BNL join)
>  SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
>  FROM t5 LEFT JOIN                
>  (t6 LEFT JOIN t7 ON t7.b=2, t8)
> @@ -1842,9 +1842,9 @@
>  ON (t5.b=t8.b);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t8	ALL	b_i	NULL	NULL	NULL	1	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	1	Using join buffer
> -1	SIMPLE	t7	const	PRIMARY	PRIMARY	4	const	1	Using join buffer
> +1	SIMPLE	t8	ALL	b_i	NULL	NULL	NULL	1	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	1	Using join buffer (incremental, BNL join)
> +1	SIMPLE	t7	const	PRIMARY	PRIMARY	4	const	1	Using join buffer (incremental, BKA join)
>  SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
>  FROM t5 LEFT JOIN                
>  (t8, t6 LEFT JOIN t7 ON t7.a=1)
> 
> === modified file 'mysql-test/r/join_outer_jcl6.result'
> --- a/mysql-test/r/join_outer_jcl6.result	2010-10-06 20:27:12 +0000
> +++ b/mysql-test/r/join_outer_jcl6.result	2010-10-08 19:30:16 +0000
> @@ -102,7 +102,7 @@
>  explain select t1.*,t2.* from t1 left join t2 on t1.a=t2.a where isnull(t2.a)=1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	7	
> -1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	8	test.t1.a	1	Using where; Using join buffer
> +1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	8	test.t1.a	1	Using where; Using join buffer (flat, BKA join)
>  select t1.*,t2.*,t3.a from t1 left join t2 on (t1.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
>  grp	a	c	id	a	c	d	a
>  1	1	a	1	1	a	1	1
> @@ -319,11 +319,11 @@
>  explain select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.id is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Not exists; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Not exists; Using join buffer (flat, BNL join)
>  explain select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.name is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  select count(*) from t1 left join t2 on (t1.id = t2.owner);
>  count(*)
>  4
> @@ -339,11 +339,11 @@
>  explain select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.id is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Not exists; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Not exists; Using join buffer (flat, BNL join)
>  explain select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.name is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  select count(*) from t2 right join t1 on (t1.id = t2.owner);
>  count(*)
>  4
> @@ -695,8 +695,8 @@
>  explain select * from t1 left join t2  on  b1 = a1 left join t3  on  c1 = a1  and  b1 is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; Using join buffer
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where; Using join buffer (incremental, BNL join)
>  drop table t1, t2, t3;
>  create table t1 (
>  a int(11),
> @@ -745,13 +745,13 @@
>  order by m.match_id desc;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	s	ALL	NULL	NULL	NULL	NULL	10	Using temporary; Using filesort
> -1	SIMPLE	m	const	match_id,match_id_2	match_id	1	const	1	Using join buffer
> +1	SIMPLE	m	const	match_id,match_id_2	match_id	1	const	1	Using join buffer (flat, BKA join)
>  explain select s.*, '*', m.*, (s.match_1_h - m.home) UUX from 
>  (t2 s left join t1 m on m.match_id = 1) 
>  order by UUX desc;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	s	ALL	NULL	NULL	NULL	NULL	10	Using temporary; Using filesort
> -1	SIMPLE	m	const	match_id,match_id_2	match_id	1	const	1	Using join buffer
> +1	SIMPLE	m	const	match_id,match_id_2	match_id	1	const	1	Using join buffer (flat, BKA join)
>  select s.*, '*', m.*, (s.match_1_h - m.home) UUX from 
>  (t2 s left join t1 m on m.match_id = 1) 
>  order by UUX desc;
> @@ -771,7 +771,7 @@
>  order by UUX desc;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	s	ALL	NULL	NULL	NULL	NULL	10	Using temporary; Using filesort
> -1	SIMPLE	m	const	match_id,match_id_2	match_id	1	const	1	Using join buffer
> +1	SIMPLE	m	const	match_id,match_id_2	match_id	1	const	1	Using join buffer (flat, BKA join)
>  select s.*, '*', m.*, (s.match_1_h - m.home) UUX from 
>  t2 s straight_join t1 m where m.match_id = 1 
>  order by UUX desc;
> @@ -1134,15 +1134,15 @@
>  EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a = t2.a OR t1.a = t2.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	PRIMARY	NULL	NULL	NULL	4	Using where
> -1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	Using join buffer
> +1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	Using join buffer (flat, BKA join)
>  EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a IN(t2.a, t2.b);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	PRIMARY	NULL	NULL	NULL	4	Using where
> -1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	Using join buffer
> +1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	Using join buffer (flat, BKA join)
>  EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a > IF(t1.a = t2.b-2, t2.b, t2.b-1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	PRIMARY	NULL	NULL	NULL	4	Using where
> -1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	Using join buffer
> +1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.a	1	Using join buffer (flat, BKA join)
>  DROP TABLE t1,t2;
>  DROP VIEW IF EXISTS v1,v2;
>  DROP TABLE IF EXISTS t1,t2;
> @@ -1231,7 +1231,7 @@
>  SELECT t1.id, a FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
> -1	SIMPLE	t2	ref	idx	idx	4	test.t1.id	2	Using where; Not exists; Using join buffer
> +1	SIMPLE	t2	ref	idx	idx	4	test.t1.id	2	Using where; Not exists; Using join buffer (flat, BKA join)
>  flush status;
>  SELECT t1.id, a FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.b IS NULL;
>  id	a
> 
> === modified file 'mysql-test/r/key_diff.result'
> --- a/mysql-test/r/key_diff.result	2007-05-29 12:58:18 +0000
> +++ b/mysql-test/r/key_diff.result	2010-10-08 19:30:16 +0000
> @@ -36,7 +36,7 @@
>  explain select t1.*,t2.* from t1,t1 as t2 where t1.A=t2.B;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	
> -1	SIMPLE	t2	ALL	b	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	b	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  select t1.*,t2.* from t1,t1 as t2 where t1.A=t2.B order by binary t1.a,t2.a;
>  a	b	a	b
>  A	B	a	a
> 
> === modified file 'mysql-test/r/myisam.result'
> --- a/mysql-test/r/myisam.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/myisam.result	2010-10-08 19:30:16 +0000
> @@ -346,11 +346,11 @@
>  explain select * from t1,t2 where t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  explain select * from t1,t2 force index(a) where t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  explain select * from t1 force index(a),t2 force index(a) where t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	2	
> @@ -362,7 +362,7 @@
>  explain select * from t1,t2 force index(c) where t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  explain select * from t1 where a=0 or a=2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	5	Using where
> 
> === modified file 'mysql-test/r/order_by.result'
> --- a/mysql-test/r/order_by.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/order_by.result	2010-10-08 19:30:16 +0000
> @@ -1608,18 +1608,18 @@
>  SELECT * FROM t1 FORCE INDEX FOR ORDER BY (a), t2 WHERE t1.a < 2 ORDER BY t1.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	a	a	5	NULL	2	Using index condition; Using MRR; Using temporary; Using filesort
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  # should have "using filesort"
>  EXPLAIN 
>  SELECT * FROM t1 USE INDEX FOR ORDER BY (a), t2 WHERE t1.a < 2 ORDER BY t1.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	a	a	5	NULL	2	Using index condition; Using MRR; Using temporary; Using filesort
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  # should have "using filesort"
>  EXPLAIN 
>  SELECT * FROM t1 FORCE INDEX FOR JOIN (a), t2 WHERE t1.a < 2 ORDER BY t1.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	a	a	5	NULL	2	Using index condition; Using MRR; Using temporary; Using filesort
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  DROP TABLE t1, t2;
>  End of 5.1 tests
> 
> === modified file 'mysql-test/r/pool_of_threads.result'
> --- a/mysql-test/r/pool_of_threads.result	2009-12-15 07:16:46 +0000
> +++ b/mysql-test/r/pool_of_threads.result	2010-10-08 19:30:16 +0000
> @@ -1429,7 +1429,7 @@
>  explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	index	NULL	PRIMARY	1	NULL	12	Using index; Using temporary
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
>  fld1	companynr	fld3	period
>  038008	37	reporters	1008
> 
> === modified file 'mysql-test/r/range.result'
> --- a/mysql-test/r/range.result	2010-03-20 12:01:47 +0000
> +++ b/mysql-test/r/range.result	2010-10-08 19:30:16 +0000
> @@ -221,27 +221,27 @@
>  explain select * from t1, t1 t2 where t1.y = 8 and t2.x between 7 and t1.y+0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	2	Using index condition; Using MRR; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	2	Using index condition; Using MRR; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 8 and t2.x >= 7 and t2.x <= t1.y+0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	2	Using index condition; Using MRR; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	2	Using index condition; Using MRR; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 2 and t2.x between t1.y-1 and t1.y+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	3	Using index condition; Using MRR; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	3	Using index condition; Using MRR; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 2 and t2.x >= t1.y-1 and t2.x <= t1.y+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	3	Using index condition; Using MRR; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	3	Using index condition; Using MRR; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 2 and t2.x between 0 and t1.y;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	2	Using index condition; Using MRR; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	2	Using index condition; Using MRR; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 2 and t2.x >= 0 and t2.x <= t1.y;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	2	Using index condition; Using MRR; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	2	Using index condition; Using MRR; Using join buffer (flat, BNL join)
>  explain select count(*) from t1 where x in (1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	x	x	5	const	1	Using index
> @@ -256,12 +256,12 @@
>  explain select * from t1, t2 where (t1.key1 <t2.keya + 1) and t2.keya=3;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ref	j1	j1	4	const	1	Using index
> -1	SIMPLE	t1	index	i1	i1	4	NULL	7	Using where; Using index; Using join buffer
> +1	SIMPLE	t1	index	i1	i1	4	NULL	7	Using where; Using index; Using join buffer (flat, BNL join)
>  explain select * from t1 force index(i1), t2 force index(j1) where 
>  (t1.key1 <t2.keya + 1) and t2.keya=3;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ref	j1	j1	4	const	1	Using index
> -1	SIMPLE	t1	index	i1	i1	4	NULL	7	Using where; Using index; Using join buffer
> +1	SIMPLE	t1	index	i1	i1	4	NULL	7	Using where; Using index; Using join buffer (flat, BNL join)
>  DROP TABLE t1,t2;
>  CREATE TABLE t1 (
>  a int(11) default NULL,
> 
> === modified file 'mysql-test/r/row.result'
> --- a/mysql-test/r/row.result	2010-04-16 11:42:34 +0000
> +++ b/mysql-test/r/row.result	2010-10-08 19:30:16 +0000
> @@ -377,7 +377,7 @@
>  EXPLAIN EXTENDED SELECT * FROM t1,t2 WHERE (t1.a-1,t1.b)=(t2.a-1,t2.b+1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t1	index	NULL	PRIMARY	8	NULL	6	100.00	Using index
> -1	SIMPLE	t2	index	NULL	PRIMARY	12	NULL	7	100.00	Using where; Using index; Using join buffer
> +1	SIMPLE	t2	index	NULL	PRIMARY	12	NULL	7	100.00	Using where; Using index; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t1` join `test`.`t2` where (((`test`.`t1`.`a` - 1) = (`test`.`t2`.`a` - 1)) and (`test`.`t1`.`b` = (`test`.`t2`.`b` + 1)))
>  SELECT * FROM t1,t2 WHERE (t1.a-1,t1.b)=(t2.a-1,t2.b+1);
> 
> === modified file 'mysql-test/r/select.result'
> --- a/mysql-test/r/select.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/select.result	2010-10-08 19:30:16 +0000
> @@ -1431,7 +1431,7 @@
>  explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	index	NULL	PRIMARY	1	NULL	12	Using index; Using temporary
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
>  fld1	companynr	fld3	period
>  038008	37	reporters	1008
> @@ -2363,7 +2363,7 @@
>  explain select * from t1 left join t2 on a=c where d in (4);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ref	c,d	d	5	const	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on a=c where d in (4);
>  a	b	c	d
>  3	2	3	4
> @@ -2371,7 +2371,7 @@
>  explain select * from t1 left join t2 on a=c where d = 4;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ref	c,d	d	5	const	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on a=c where d = 4;
>  a	b	c	d
>  3	2	3	4
> @@ -2717,7 +2717,7 @@
>  t2.b like '%%' order by t2.b limit 0,1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	b,c	b	5	const	1	Using temporary; Using filesort
> -1	SIMPLE	t3	index	PRIMARY,a,b	PRIMARY	8	NULL	2	Using index; Using join buffer
> +1	SIMPLE	t3	index	PRIMARY,a,b	PRIMARY	8	NULL	2	Using index; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	PRIMARY	NULL	NULL	NULL	2	Range checked for each record (index map: 0x1)
>  DROP TABLE t1,t2,t3;
>  CREATE TABLE t1 (a int, INDEX idx(a));
> @@ -2738,7 +2738,7 @@
>  EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	b	b	5	NULL	2	Using index
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  a	b	a	b
>  1	NULL	1	1
> @@ -2748,7 +2748,7 @@
>  EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	b	b	5	NULL	2	Using index
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  a	b	a	b
>  1	NULL	1	1
> @@ -2910,11 +2910,11 @@
>  EXPLAIN SELECT t1.a FROM t1 STRAIGHT_JOIN t2 ON t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  DROP TABLE t1,t2;
>  select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
>  x'10' + 0	X'10' + 0	b'10' + 0	B'10' + 0
> 
> === modified file 'mysql-test/r/select_jcl6.result'
> --- a/mysql-test/r/select_jcl6.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/select_jcl6.result	2010-10-08 19:30:16 +0000
> @@ -611,15 +611,15 @@
>  explain select * from t3 as t1,t3 where t1.period=t3.period order by t3.period;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	period	NULL	NULL	NULL	41810	Using temporary; Using filesort
> -1	SIMPLE	t3	ref	period	period	4	test.t1.period	4181	Using join buffer
> +1	SIMPLE	t3	ref	period	period	4	test.t1.period	4181	Using join buffer (flat, BKA join)
>  explain select * from t3 as t1,t3 where t1.period=t3.period order by t3.period limit 10;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t3	ALL	period	NULL	NULL	NULL	41810	Using temporary; Using filesort
> -1	SIMPLE	t1	ref	period	period	4	test.t3.period	4181	Using join buffer
> +1	SIMPLE	t1	ref	period	period	4	test.t3.period	4181	Using join buffer (flat, BKA join)
>  explain select * from t3 as t1,t3 where t1.period=t3.period order by t1.period limit 10;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	period	NULL	NULL	NULL	41810	Using temporary; Using filesort
> -1	SIMPLE	t3	ref	period	period	4	test.t1.period	4181	Using join buffer
> +1	SIMPLE	t3	ref	period	period	4	test.t1.period	4181	Using join buffer (flat, BKA join)
>  select period from t1;
>  period
>  9410
> @@ -1366,11 +1366,11 @@
>  explain select t2.companynr,companyname from t2 left join t4 using (companynr) where t4.companynr is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1200	
> -1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	Using where; Not exists; Using join buffer
> +1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	Using where; Not exists; Using join buffer (flat, BKA join)
>  explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1200	Using where; Not exists; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1200	Using where; Not exists; Using join buffer (flat, BNL join)
>  select companynr,companyname from t2 left join t4 using (companynr) where companynr is null;
>  companynr	companyname
>  select count(*) from t2 left join t4 using (companynr) where companynr is not null;
> @@ -1386,51 +1386,51 @@
>  explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
> -1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	Using join buffer
> +1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	Using join buffer (flat, BKA join)
>  explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr < 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
> -1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	Using join buffer
> +1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	Using join buffer (flat, BKA join)
>  explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 and t4.companynr > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where
> -1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	Using join buffer
> +1	SIMPLE	t4	eq_ref	PRIMARY	PRIMARY	1	test.t2.companynr	1	Using join buffer (flat, BKA join)
>  explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr < 0 or t4.companynr > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  explain select t2.companynr,companyname from t4 left join t2 using (companynr) where ifnull(t2.companynr,1)>0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	PRIMARY	NULL	NULL	NULL	12	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  explain select companynr,companyname from t4 left join t2 using (companynr) where ifnull(companynr,1)>0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  companynr	companynr
>  37	36
> @@ -1438,7 +1438,7 @@
>  explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	index	NULL	PRIMARY	1	NULL	12	Using index; Using temporary
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
>  fld1	companynr	fld3	period
>  038008	37	reporters	1008
> @@ -2337,7 +2337,7 @@
>  1	SIMPLE	t3	system	NULL	NULL	NULL	NULL	0	const row not found
>  1	SIMPLE	t4	const	id4	NULL	NULL	NULL	1	
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on id1 = id2 left join t3 on id1 = id3
>  left join t4 on id3 = id4 where id2 = 1 or id4 = 1;
>  id1	id2	id3	id4	id44
> @@ -2370,7 +2370,7 @@
>  explain select * from t1 left join t2 on a=c where d in (4);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ref	c,d	d	5	const	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on a=c where d in (4);
>  a	b	c	d
>  3	2	3	4
> @@ -2378,7 +2378,7 @@
>  explain select * from t1 left join t2 on a=c where d = 4;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ref	c,d	d	5	const	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on a=c where d = 4;
>  a	b	c	d
>  3	2	3	4
> @@ -2724,7 +2724,7 @@
>  t2.b like '%%' order by t2.b limit 0,1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	b,c	b	5	const	1	Using temporary; Using filesort
> -1	SIMPLE	t3	index	PRIMARY,a,b	PRIMARY	8	NULL	2	Using index; Using join buffer
> +1	SIMPLE	t3	index	PRIMARY,a,b	PRIMARY	8	NULL	2	Using index; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	PRIMARY	NULL	NULL	NULL	2	Range checked for each record (index map: 0x1)
>  DROP TABLE t1,t2,t3;
>  CREATE TABLE t1 (a int, INDEX idx(a));
> @@ -2745,7 +2745,7 @@
>  EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	b	b	5	NULL	2	Using index
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  a	b	a	b
>  1	NULL	1	1
> @@ -2755,7 +2755,7 @@
>  EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	b	b	5	NULL	2	Using index
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  a	b	a	b
>  1	NULL	1	1
> @@ -2917,11 +2917,11 @@
>  EXPLAIN SELECT t1.a FROM t1 STRAIGHT_JOIN t2 ON t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  DROP TABLE t1,t2;
>  select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
>  x'10' + 0	X'10' + 0	b'10' + 0	B'10' + 0
> @@ -3461,7 +3461,7 @@
>  and B.a=5 and B.b=A.e and (B.b =1 or B.b = 3 or B.b=5);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	A	range	PRIMARY	PRIMARY	12	NULL	4	Using index condition; Using where; Using MRR
> -1	SIMPLE	B	ref	PRIMARY	PRIMARY	8	const,test.A.e	10	Using join buffer
> +1	SIMPLE	B	ref	PRIMARY	PRIMARY	8	const,test.A.e	10	Using join buffer (flat, BKA join)
>  drop table t1, t2;
>  CREATE TABLE t1 (a int PRIMARY KEY, b int, INDEX(b));
>  INSERT INTO t1 VALUES (1, 3), (9,4), (7,5), (4,5), (6,2),
> @@ -3475,12 +3475,12 @@
>  SELECT a, c, d, f FROM t1,t2 WHERE a=c AND b BETWEEN 4 AND 6;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	PRIMARY,b	b	5	NULL	3	Using index condition; Using MRR
> -1	SIMPLE	t2	ref	c	c	5	test.t1.a	2	Using join buffer
> +1	SIMPLE	t2	ref	c	c	5	test.t1.a	2	Using join buffer (flat, BKA join)
>  EXPLAIN
>  SELECT a, c, d, f FROM t1,t2 WHERE a=c AND b BETWEEN 4 AND 6 AND a > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	PRIMARY,b	b	5	NULL	3	Using index condition; Using where; Using MRR
> -1	SIMPLE	t2	ref	c	c	5	test.t1.a	2	Using join buffer
> +1	SIMPLE	t2	ref	c	c	5	test.t1.a	2	Using join buffer (flat, BKA join)
>  DROP TABLE t1, t2;
>  create table t1 (
>  a int unsigned    not null auto_increment primary key,
> @@ -3570,19 +3570,19 @@
>  WHERE t2.fk < 'c' AND t2.pk=t1.fk;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	PRIMARY	PRIMARY	12	NULL	3	Using index condition; Using where; Using MRR
> -1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	18	test.t1.fk	1	Using where; Using join buffer
> +1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	18	test.t1.fk	1	Using where; Using join buffer (flat, BKA join)
>  EXPLAIN SELECT t2.* 
>  FROM t1 JOIN t2 ON t2.fk=t1.pk 
>  WHERE t2.fk BETWEEN 'a' AND 'b' AND t2.pk=t1.fk;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	PRIMARY	PRIMARY	12	NULL	2	Using index condition; Using where; Using MRR
> -1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	18	test.t1.fk	1	Using where; Using join buffer
> +1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	18	test.t1.fk	1	Using where; Using join buffer (flat, BKA join)
>  EXPLAIN SELECT t2.* 
>  FROM t1 JOIN t2 ON t2.fk=t1.pk 
>  WHERE t2.fk IN ('a','b') AND t2.pk=t1.fk;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	PRIMARY	PRIMARY	12	NULL	2	Using index condition; Using where; Using MRR
> -1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	18	test.t1.fk	1	Using where; Using join buffer
> +1	SIMPLE	t2	eq_ref	PRIMARY	PRIMARY	18	test.t1.fk	1	Using where; Using join buffer (flat, BKA join)
>  DROP TABLE t1,t2;
>  CREATE TABLE t1 (a int, b varchar(20) NOT NULL, PRIMARY KEY(a));
>  CREATE TABLE t2 (a int, b varchar(20) NOT NULL,
> @@ -3616,7 +3616,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	const	PRIMARY	PRIMARY	4	const	1	
>  1	SIMPLE	t2	range	si	si	5	NULL	4	Using index condition; Using where; Using MRR
> -1	SIMPLE	t3	eq_ref	PRIMARY,ci	PRIMARY	4	test.t2.a	1	Using where; Using join buffer
> +1	SIMPLE	t3	eq_ref	PRIMARY,ci	PRIMARY	4	test.t2.a	1	Using where; Using join buffer (flat, BKA join)
>  EXPLAIN
>  SELECT t3.a FROM t1,t2,t3
>  WHERE t1.id = 8 AND t2.i BETWEEN t1.b AND t1.e AND
> @@ -3624,7 +3624,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	const	PRIMARY	PRIMARY	4	const	1	
>  1	SIMPLE	t2	range	si,ai	si	5	NULL	4	Using index condition; Using where; Using MRR
> -1	SIMPLE	t3	eq_ref	PRIMARY,ci	PRIMARY	4	test.t2.a	1	Using where; Using join buffer
> +1	SIMPLE	t3	eq_ref	PRIMARY,ci	PRIMARY	4	test.t2.a	1	Using where; Using join buffer (flat, BKA join)
>  EXPLAIN 
>  SELECT t3.a FROM t1,t2 FORCE INDEX (si),t3
>  WHERE t1.id = 8 AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
> @@ -3632,7 +3632,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	const	PRIMARY	PRIMARY	4	const	1	
>  1	SIMPLE	t2	range	si	si	5	NULL	2	Using index condition; Using where; Using MRR
> -1	SIMPLE	t3	eq_ref	PRIMARY,ci	PRIMARY	4	test.t2.a	1	Using where; Using join buffer
> +1	SIMPLE	t3	eq_ref	PRIMARY,ci	PRIMARY	4	test.t2.a	1	Using where; Using join buffer (flat, BKA join)
>  EXPLAIN 
>  SELECT t3.a FROM t1,t2,t3
>  WHERE t1.id = 8 AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
> @@ -3640,7 +3640,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	const	PRIMARY	PRIMARY	4	const	1	
>  1	SIMPLE	t2	range	si,ai	si	5	NULL	2	Using index condition; Using where; Using MRR
> -1	SIMPLE	t3	eq_ref	PRIMARY,ci	PRIMARY	4	test.t2.a	1	Using where; Using join buffer
> +1	SIMPLE	t3	eq_ref	PRIMARY,ci	PRIMARY	4	test.t2.a	1	Using where; Using join buffer (flat, BKA join)
>  DROP TABLE t1,t2,t3;
>  CREATE TABLE t1 ( f1 int primary key, f2 int, f3 int, f4 int, f5 int, f6 int, checked_out int);
>  CREATE TABLE t2 ( f11 int PRIMARY KEY );
> @@ -4403,7 +4403,7 @@
>  EXPLAIN SELECT 1 FROM t1 NATURAL LEFT JOIN t1 AS t2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	2	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	2	Using where; Using join buffer (flat, BNL join)
>  SELECT 1 FROM t1 NATURAL LEFT JOIN t1 AS t2;
>  1
>  1
> @@ -4413,7 +4413,7 @@
>  EXPLAIN SELECT 1 FROM t1 NATURAL LEFT JOIN t1 AS t2 FORCE INDEX(a);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	2	
> -1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	2	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	2	Using where; Using join buffer (flat, BNL join)
>  SELECT 1 FROM t1 NATURAL LEFT JOIN t1 AS t2 FORCE INDEX(a);
>  1
>  1
> 
> === modified file 'mysql-test/r/select_pkeycache.result'
> --- a/mysql-test/r/select_pkeycache.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/select_pkeycache.result	2010-10-08 19:30:16 +0000
> @@ -1431,7 +1431,7 @@
>  explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	index	NULL	PRIMARY	1	NULL	12	Using index; Using temporary
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
>  fld1	companynr	fld3	period
>  038008	37	reporters	1008
> @@ -2363,7 +2363,7 @@
>  explain select * from t1 left join t2 on a=c where d in (4);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ref	c,d	d	5	const	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on a=c where d in (4);
>  a	b	c	d
>  3	2	3	4
> @@ -2371,7 +2371,7 @@
>  explain select * from t1 left join t2 on a=c where d = 4;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ref	c,d	d	5	const	2	
> -1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  select * from t1 left join t2 on a=c where d = 4;
>  a	b	c	d
>  3	2	3	4
> @@ -2717,7 +2717,7 @@
>  t2.b like '%%' order by t2.b limit 0,1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	b,c	b	5	const	1	Using temporary; Using filesort
> -1	SIMPLE	t3	index	PRIMARY,a,b	PRIMARY	8	NULL	2	Using index; Using join buffer
> +1	SIMPLE	t3	index	PRIMARY,a,b	PRIMARY	8	NULL	2	Using index; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	PRIMARY	NULL	NULL	NULL	2	Range checked for each record (index map: 0x1)
>  DROP TABLE t1,t2,t3;
>  CREATE TABLE t1 (a int, INDEX idx(a));
> @@ -2738,7 +2738,7 @@
>  EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	b	b	5	NULL	2	Using index
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  a	b	a	b
>  1	NULL	1	1
> @@ -2748,7 +2748,7 @@
>  EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	b	b	5	NULL	2	Using index
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  a	b	a	b
>  1	NULL	1	1
> @@ -2910,11 +2910,11 @@
>  EXPLAIN SELECT t1.a FROM t1 STRAIGHT_JOIN t2 ON t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  DROP TABLE t1,t2;
>  select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
>  x'10' + 0	X'10' + 0	b'10' + 0	B'10' + 0
> 
> === modified file 'mysql-test/r/ssl.result'
> --- a/mysql-test/r/ssl.result	2009-12-15 07:16:46 +0000
> +++ b/mysql-test/r/ssl.result	2010-10-08 19:30:16 +0000
> @@ -1432,7 +1432,7 @@
>  explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	index	NULL	PRIMARY	1	NULL	12	Using index; Using temporary
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
>  fld1	companynr	fld3	period
>  038008	37	reporters	1008
> 
> === modified file 'mysql-test/r/ssl_compress.result'
> --- a/mysql-test/r/ssl_compress.result	2009-12-15 07:16:46 +0000
> +++ b/mysql-test/r/ssl_compress.result	2010-10-08 19:30:16 +0000
> @@ -1435,7 +1435,7 @@
>  explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	index	NULL	PRIMARY	1	NULL	12	Using index; Using temporary
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1199	Using where; Using join buffer (flat, BNL join)
>  select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
>  fld1	companynr	fld3	period
>  038008	37	reporters	1008
> 
> === modified file 'mysql-test/r/subselect.result'
> --- a/mysql-test/r/subselect.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect.result	2010-10-08 19:30:16 +0000
> @@ -906,7 +906,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	100.00	Using index
>  2	DEPENDENT SUBQUERY	t2	ref_or_null	a	a	5	func	2	100.00	Using index
> -2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,<in_optimizer>(`test`.`t1`.`a`,<exists>(select 1 from `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t2`.`a`) and ((<cache>(`test`.`t1`.`a`) = `test`.`t2`.`a`) or isnull(`test`.`t2`.`a`))) having <is_not_null_test>(`test`.`t2`.`a`))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from `test`.`t1`
>  drop table t1,t2,t3;
> @@ -1296,7 +1296,7 @@
>  explain extended select * from t2 where t2.a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	index	PRIMARY	PRIMARY	4	NULL	4	75.00	Using where; Using index; Using join buffer
> +1	PRIMARY	t1	index	PRIMARY	PRIMARY	4	NULL	4	75.00	Using where; Using index; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where (`test`.`t1`.`a` = `test`.`t2`.`a`)
>  select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
> @@ -1306,7 +1306,7 @@
>  explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t1`.`b` <> 30))
>  select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
> @@ -1316,7 +1316,7 @@
>  explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer (flat, BNL join)
>  1	PRIMARY	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.b	1	100.00	Using index
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t3` join `test`.`t2` where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t3`.`a` = `test`.`t1`.`b`))
> 
> === modified file 'mysql-test/r/subselect3.result'
> --- a/mysql-test/r/subselect3.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect3.result	2010-10-08 19:30:16 +0000
> @@ -261,7 +261,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	
>  2	DEPENDENT SUBQUERY	t1	ref_or_null	a	a	5	func	2	100.00	Using where; Full scan on NULL key
> -2	DEPENDENT SUBQUERY	t4	ALL	NULL	NULL	NULL	NULL	100	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t4	ALL	NULL	NULL	NULL	NULL	100	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1276	Field or reference 'test.t2.oref' of SELECT #2 was resolved in SELECT #1
>  Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`oref` AS `oref`,<in_optimizer>((`test`.`t2`.`a`,`test`.`t2`.`b`),<exists>(select `test`.`t1`.`a`,`test`.`t1`.`b` from `test`.`t1` join `test`.`t4` where ((`test`.`t1`.`c` = `test`.`t2`.`oref`) and trigcond(((<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a`) or isnull(`test`.`t1`.`a`))) and trigcond(((<cache>(`test`.`t2`.`b`) = `test`.`t1`.`b`) or isnull(`test`.`t1`.`b`)))) having (trigcond(<is_not_null_test>(`test`.`t1`.`a`)) and trigcond(<is_not_null_test>(`test`.`t1`.`b`))))) AS `Z` from `test`.`t2`
> @@ -1024,10 +1024,10 @@
>  t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	8	Using temporary; Using filesort
> -1	PRIMARY	t21	ALL	NULL	NULL	NULL	NULL	26	Using where; Using join buffer
> -1	PRIMARY	t22	ALL	NULL	NULL	NULL	NULL	26	Using where; Using join buffer
> +1	PRIMARY	t21	ALL	NULL	NULL	NULL	NULL	26	Using where; Using join buffer (flat, BNL join)
> +1	PRIMARY	t22	ALL	NULL	NULL	NULL	NULL	26	Using where; Using join buffer (flat, BNL join)
>  2	SUBQUERY	t11	ALL	NULL	NULL	NULL	NULL	8	Using where
> -2	SUBQUERY	t12	ALL	NULL	NULL	NULL	NULL	8	Using where; Using join buffer
> +2	SUBQUERY	t12	ALL	NULL	NULL	NULL	NULL	8	Using where; Using join buffer (flat, BNL join)
>  select t21.* from t21,t22 where t21.a = t22.a and 
>  t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
>  a	b	c
> @@ -1058,7 +1058,7 @@
>  explain select * from t1 where 2 in (select a from t0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	11	Using where; Start temporary; End temporary
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer (flat, BNL join)
>  select * from t1 where 2 in (select a from t0);
>  a
>  0
> @@ -1085,7 +1085,7 @@
>  explain select * from t1 where 2 in (select a from t0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	11	Using where; FirstMatch
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer (flat, BNL join)
>  select * from t1 where 2 in (select a from t0);
>  a
>  0
> @@ -1125,7 +1125,7 @@
>  explain select * from t3 where a in (select kp1 from t1 where kp1<20);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	kp1	kp1	5	NULL	48	Using where; Using index; LooseScan
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer (flat, BNL join)
>  create table t4 (pk int primary key);
>  insert into t4 select a from t3;
>  explain select * from t3 where a in (select t1.kp1 from t1,t4 where kp1<20
> @@ -1133,7 +1133,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	kp1	kp1	5	NULL	48	Using index condition; Using where; Using MRR; LooseScan
>  1	PRIMARY	t4	eq_ref	PRIMARY	PRIMARY	4	test.t1.c	1	Using index; FirstMatch(t1)
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer (flat, BNL join)
>  drop table t1, t3, t4;
>  create table t1 (a int) as select * from t0 where a < 5;
>  set @save_max_heap_table_size=@@max_heap_table_size;
> @@ -1142,10 +1142,10 @@
>  explain select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	E	ALL	NULL	NULL	NULL	NULL	5	Start temporary
> -1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> -1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> -1	PRIMARY	C	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> -1	PRIMARY	D	ALL	NULL	NULL	NULL	NULL	10	Using where; End temporary; Using join buffer
> +1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
> +1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
> +1	PRIMARY	C	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
> +1	PRIMARY	D	ALL	NULL	NULL	NULL	NULL	10	Using where; End temporary; Using join buffer (flat, BNL join)
>  flush status;
>  select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E);
>  count(*)
> @@ -1183,26 +1183,26 @@
>  explain select * from t2 where a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Start temporary
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; End temporary; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; End temporary; Using join buffer (flat, BNL join)
>  explain select * from t2 where a in (select a from t2);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Start temporary
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary; Using join buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary; Using join buffer (flat, BNL join)
>  explain select * from t2 where a in (select a from t3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Start temporary
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; End temporary; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; End temporary; Using join buffer (flat, BNL join)
>  explain select * from t1 where a in (select a from t3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Start temporary
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; End temporary; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; End temporary; Using join buffer (flat, BNL join)
>  drop table t1, t2, t3;
>  create table t1 (a decimal);
>  insert into t1 values (1),(2);
>  explain select * from t1 where a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	Start temporary
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary; Using join buffer (flat, BNL join)
>  drop table t1;
>  set @@optimizer_switch=@save_optimizer_switch;
>  create table t1 (a int);
> @@ -1219,25 +1219,25 @@
>  explain select straight_join * from t1 A, t1 B where A.a in (select a from t2);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	10	Using where
> -1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	10	
>  explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	10	Using where
>  2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	
> -2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	10	Using where
>  2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	
> -2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  explain select straight_join * from t2 X, t2 Y 
>  where X.a in (select straight_join A.a from t1 A, t1 B);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	X	ALL	NULL	NULL	NULL	NULL	10	Using where
> -1	PRIMARY	Y	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +1	PRIMARY	Y	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	
> -2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  create table t0 (a int, b int);
>  insert into t0 values(1,1);
>  explain select * from t0, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30);
> @@ -1262,11 +1262,11 @@
>  explain select * from t2 where a in (select b from t1 where a=3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	a	a	5	NULL	8	Using where; Using index; LooseScan
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer (flat, BNL join)
>  explain select * from t2 where (b,a) in (select a,b from t1 where a=3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	a	a	5	NULL	8	Using where; Using index; LooseScan
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer (flat, BNL join)
>  drop table t1,t2;
>  create table t1 (a int, b int);
>  insert into t1 select a,a from t0;
> @@ -1324,8 +1324,8 @@
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	
>  1	PRIMARY	subselect2	eq_ref	unique_key	unique_key	15	func	1	
>  2	SUBQUERY	X	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	Y	ALL	NULL	NULL	NULL	NULL	6	Using join buffer
> -2	SUBQUERY	Z	ALL	NULL	NULL	NULL	NULL	6	Using join buffer
> +2	SUBQUERY	Y	ALL	NULL	NULL	NULL	NULL	6	Using join buffer (flat, BNL join)
> +2	SUBQUERY	Z	ALL	NULL	NULL	NULL	NULL	6	Using join buffer (flat, BNL join)
>  drop table t0,t1,t2;
>  
>  BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307
> @@ -1396,7 +1396,7 @@
>  	);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	2	1.00	
> -1	PRIMARY	a	index	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where; Using index; Using join buffer
> +1	PRIMARY	a	index	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where; Using index; Using join buffer (flat, BNL join)
>  2	SUBQUERY	cona	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  2	SUBQUERY	c	eq_ref	PRIMARY	PRIMARY	4	test.cona.idContact	1	100.00	
>  Warnings:
> 
> === modified file 'mysql-test/r/subselect3_jcl6.result'
> --- a/mysql-test/r/subselect3_jcl6.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect3_jcl6.result	2010-10-08 19:30:16 +0000
> @@ -167,7 +167,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	
>  2	DEPENDENT SUBQUERY	t1	ref_or_null	a	a	5	func	4	100.00	Using where; Full scan on NULL key
> -2	DEPENDENT SUBQUERY	t2	ref	a	a	5	test.t1.b	1	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t2	ref	a	a	5	test.t1.b	1	100.00	Using where; Using join buffer (flat, BKA join)
>  Warnings:
>  Note	1276	Field or reference 'test.t3.oref' of SELECT #2 was resolved in SELECT #1
>  Note	1003	select `test`.`t3`.`a` AS `a`,`test`.`t3`.`oref` AS `oref`,<in_optimizer>(`test`.`t3`.`a`,<exists>(select 1 from `test`.`t1` join `test`.`t2` where ((`test`.`t2`.`a` = `test`.`t1`.`b`) and (`test`.`t2`.`b` = `test`.`t3`.`oref`) and trigcond(((<cache>(`test`.`t3`.`a`) = `test`.`t1`.`a`) or isnull(`test`.`t1`.`a`)))) having trigcond(<is_not_null_test>(`test`.`t1`.`a`)))) AS `Z` from `test`.`t3`
> @@ -195,7 +195,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	
>  2	DEPENDENT SUBQUERY	t1	ref	a	a	4	func	2	100.00	Using where; Full scan on NULL key
> -2	DEPENDENT SUBQUERY	t2	ref	a	a	4	test.t1.b	1	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t2	ref	a	a	4	test.t1.b	1	100.00	Using where; Using join buffer (flat, BKA join)
>  Warnings:
>  Note	1276	Field or reference 'test.t3.oref' of SELECT #2 was resolved in SELECT #1
>  Note	1003	select `test`.`t3`.`a` AS `a`,`test`.`t3`.`oref` AS `oref`,<in_optimizer>(`test`.`t3`.`a`,<exists>(select 1 from `test`.`t1` join `test`.`t2` where ((`test`.`t2`.`a` = `test`.`t1`.`b`) and (`test`.`t2`.`b` = `test`.`t3`.`oref`) and trigcond((<cache>(`test`.`t3`.`a`) = `test`.`t1`.`a`))))) AS `Z` from `test`.`t3`
> @@ -268,7 +268,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	100.00	
>  2	DEPENDENT SUBQUERY	t1	ref_or_null	a	a	5	func	2	100.00	Using where; Full scan on NULL key
> -2	DEPENDENT SUBQUERY	t4	ALL	NULL	NULL	NULL	NULL	100	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t4	ALL	NULL	NULL	NULL	NULL	100	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1276	Field or reference 'test.t2.oref' of SELECT #2 was resolved in SELECT #1
>  Note	1003	select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`oref` AS `oref`,<in_optimizer>((`test`.`t2`.`a`,`test`.`t2`.`b`),<exists>(select `test`.`t1`.`a`,`test`.`t1`.`b` from `test`.`t1` join `test`.`t4` where ((`test`.`t1`.`c` = `test`.`t2`.`oref`) and trigcond(((<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a`) or isnull(`test`.`t1`.`a`))) and trigcond(((<cache>(`test`.`t2`.`b`) = `test`.`t1`.`b`) or isnull(`test`.`t1`.`b`)))) having (trigcond(<is_not_null_test>(`test`.`t1`.`a`)) and trigcond(<is_not_null_test>(`test`.`t1`.`b`))))) AS `Z` from `test`.`t2`
> @@ -739,7 +739,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where
>  2	DEPENDENT SUBQUERY	t2	eq_ref	PRIMARY	PRIMARY	4	func	1	Using where; Using index; Full scan on NULL key
> -2	DEPENDENT SUBQUERY	t3	eq_ref	PRIMARY	PRIMARY	4	func	1	Using index condition(BKA); Using where; Full scan on NULL key; Using join buffer
> +2	DEPENDENT SUBQUERY	t3	eq_ref	PRIMARY	PRIMARY	4	func	1	Using index condition(BKA); Using where; Full scan on NULL key; Using join buffer (flat, BKA join)
>  SELECT * FROM t1
>  WHERE t1.id NOT IN (SELECT t2.id FROM t2,t3 
>  WHERE t3.name='xxx' AND t2.id=t3.id);
> @@ -1031,10 +1031,10 @@
>  t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	8	Using temporary; Using filesort
> -1	PRIMARY	t21	ALL	NULL	NULL	NULL	NULL	26	Using where; Using join buffer
> -1	PRIMARY	t22	ALL	NULL	NULL	NULL	NULL	26	Using where; Using join buffer
> +1	PRIMARY	t21	ALL	NULL	NULL	NULL	NULL	26	Using where; Using join buffer (incremental, BNL join)
> +1	PRIMARY	t22	ALL	NULL	NULL	NULL	NULL	26	Using where; Using join buffer (incremental, BNL join)
>  2	SUBQUERY	t11	ALL	NULL	NULL	NULL	NULL	8	Using where
> -2	SUBQUERY	t12	ALL	NULL	NULL	NULL	NULL	8	Using where; Using join buffer
> +2	SUBQUERY	t12	ALL	NULL	NULL	NULL	NULL	8	Using where; Using join buffer (flat, BNL join)
>  select t21.* from t21,t22 where t21.a = t22.a and 
>  t22.a in (select t12.a from t11, t12 where t11.a in(255,256) and t11.a = t12.a and t11.c is null) and t22.c is null order by t21.a;
>  a	b	c
> @@ -1066,7 +1066,7 @@
>  explain select * from t1 where 2 in (select a from t0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	11	Using where; Start temporary; End temporary
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer (flat, BNL join)
>  select * from t1 where 2 in (select a from t0);
>  a
>  0
> @@ -1093,7 +1093,7 @@
>  explain select * from t1 where 2 in (select a from t0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	11	Using where; FirstMatch
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer (flat, BNL join)
>  select * from t1 where 2 in (select a from t0);
>  a
>  0
> @@ -1120,7 +1120,7 @@
>  explain select * from (select a from t0) X where a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	11	
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using where; FirstMatch(<derived2>); Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	20	Using where; FirstMatch(<derived2>); Using join buffer (flat, BNL join)
>  2	DERIVED	t0	ALL	NULL	NULL	NULL	NULL	11	
>  drop table t0, t1;
>  create table t0 (a int);
> @@ -1133,7 +1133,7 @@
>  explain select * from t3 where a in (select kp1 from t1 where kp1<20);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	kp1	kp1	5	NULL	48	Using where; Using index; LooseScan
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer (flat, BNL join)
>  create table t4 (pk int primary key);
>  insert into t4 select a from t3;
>  explain select * from t3 where a in (select t1.kp1 from t1,t4 where kp1<20
> @@ -1141,7 +1141,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	kp1	kp1	5	NULL	48	Using index condition; Using where; Using MRR; LooseScan
>  1	PRIMARY	t4	eq_ref	PRIMARY	PRIMARY	4	test.t1.c	1	Using index; FirstMatch(t1)
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer (flat, BNL join)
>  drop table t1, t3, t4;
>  create table t1 (a int) as select * from t0 where a < 5;
>  set @save_max_heap_table_size=@@max_heap_table_size;
> @@ -1150,10 +1150,10 @@
>  explain select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	E	ALL	NULL	NULL	NULL	NULL	5	Start temporary
> -1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> -1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> -1	PRIMARY	C	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> -1	PRIMARY	D	ALL	NULL	NULL	NULL	NULL	10	Using where; End temporary; Using join buffer
> +1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
> +1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (incremental, BNL join)
> +1	PRIMARY	C	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (incremental, BNL join)
> +1	PRIMARY	D	ALL	NULL	NULL	NULL	NULL	10	Using where; End temporary; Using join buffer (incremental, BNL join)
>  flush status;
>  select count(*) from t0 A, t0 B, t0 C, t0 D where D.a in (select a from t1 E);
>  count(*)
> @@ -1173,7 +1173,7 @@
>  explain select * from t3 where a in (select a from t2) and (a > 5 or a < 10);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	2	
> -1	PRIMARY	t3	ref	a	a	5	test.t2.a	1	Using join buffer
> +1	PRIMARY	t3	ref	a	a	5	test.t2.a	1	Using join buffer (flat, BKA join)
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	2	Using where
>  select * from t3 where a in (select a from t2);
>  a	filler
> @@ -1191,26 +1191,26 @@
>  explain select * from t2 where a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Start temporary
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; End temporary; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; End temporary; Using join buffer (flat, BNL join)
>  explain select * from t2 where a in (select a from t2);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Start temporary
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary; Using join buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary; Using join buffer (flat, BNL join)
>  explain select * from t2 where a in (select a from t3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	2	Start temporary
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; End temporary; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; End temporary; Using join buffer (flat, BNL join)
>  explain select * from t1 where a in (select a from t3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Start temporary
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; End temporary; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	6	Using where; End temporary; Using join buffer (flat, BNL join)
>  drop table t1, t2, t3;
>  create table t1 (a decimal);
>  insert into t1 values (1),(2);
>  explain select * from t1 where a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	Start temporary
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	Using where; End temporary; Using join buffer (flat, BNL join)
>  drop table t1;
>  set @@optimizer_switch=@save_optimizer_switch;
>  create table t1 (a int);
> @@ -1222,44 +1222,44 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	10	Using where
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	10	
> -1	PRIMARY	t3	ref	a	a	5	test.t2.a	10	Using join buffer
> +1	PRIMARY	t3	ref	a	a	5	test.t2.a	10	Using join buffer (flat, BKA join)
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	10	Using where
>  explain select straight_join * from t1 A, t1 B where A.a in (select a from t2);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	10	Using where
> -1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	10	
>  explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	10	Using where
>  2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	
> -2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  explain select * from t2 where a in (select straight_join A.a from t1 A, t1 B);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	10	Using where
>  2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	
> -2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  explain select straight_join * from t2 X, t2 Y 
>  where X.a in (select straight_join A.a from t1 A, t1 B);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	X	ALL	NULL	NULL	NULL	NULL	10	Using where
> -1	PRIMARY	Y	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +1	PRIMARY	Y	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  2	SUBQUERY	A	ALL	NULL	NULL	NULL	NULL	10	
> -2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer
> +2	SUBQUERY	B	ALL	NULL	NULL	NULL	NULL	10	Using join buffer (flat, BNL join)
>  create table t0 (a int, b int);
>  insert into t0 values(1,1);
>  explain select * from t0, t3 where t3.a in (select a from t2) and (t3.a < 10 or t3.a >30);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	system	NULL	NULL	NULL	NULL	1	
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	10	
> -1	PRIMARY	t3	ref	a	a	5	test.t2.a	10	Using join buffer
> +1	PRIMARY	t3	ref	a	a	5	test.t2.a	10	Using join buffer (flat, BKA join)
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	10	Using where
>  create table t4 as select a as x, a as y from t1;
>  explain select * from t0, t3 where (t3.a, t3.b) in (select x,y from t4) and (t3.a < 10 or t3.a >30);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	system	NULL	NULL	NULL	NULL	1	
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	10	
> -1	PRIMARY	t3	ref	a	a	5	test.t4.x	10	Using where; Using join buffer
> +1	PRIMARY	t3	ref	a	a	5	test.t4.x	10	Using where; Using join buffer (flat, BKA join)
>  2	SUBQUERY	t4	ALL	NULL	NULL	NULL	NULL	10	Using where
>  drop table t0,t1,t2,t3,t4;
>  create table t0 (a int);
> @@ -1270,11 +1270,11 @@
>  explain select * from t2 where a in (select b from t1 where a=3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	a	a	5	NULL	8	Using where; Using index; LooseScan
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer (flat, BNL join)
>  explain select * from t2 where (b,a) in (select a,b from t1 where a=3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	a	a	5	NULL	8	Using where; Using index; LooseScan
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	100	Using where; Using join buffer (flat, BNL join)
>  drop table t1,t2;
>  create table t1 (a int, b int);
>  insert into t1 select a,a from t0;
> @@ -1303,7 +1303,7 @@
>  explain select * from t0 where a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	2	
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; FirstMatch(t0); Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; FirstMatch(t0); Using join buffer (flat, BNL join)
>  select * from t0 where a in (select a from t1);
>  a
>  10.24
> @@ -1316,7 +1316,7 @@
>  explain select * from t0 where a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	2	
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; FirstMatch(t0); Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; FirstMatch(t0); Using join buffer (flat, BNL join)
>  select * from t0 where a in (select a from t1);
>  a
>  2008-01-01
> @@ -1332,8 +1332,8 @@
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	
>  1	PRIMARY	subselect2	eq_ref	unique_key	unique_key	15	func	1	
>  2	SUBQUERY	X	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	Y	ALL	NULL	NULL	NULL	NULL	6	Using join buffer
> -2	SUBQUERY	Z	ALL	NULL	NULL	NULL	NULL	6	Using join buffer
> +2	SUBQUERY	Y	ALL	NULL	NULL	NULL	NULL	6	Using join buffer (flat, BNL join)
> +2	SUBQUERY	Z	ALL	NULL	NULL	NULL	NULL	6	Using join buffer (incremental, BNL join)
>  drop table t0,t1,t2;
>  
>  BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307
> @@ -1404,9 +1404,9 @@
>  	);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	2	1.00	
> -1	PRIMARY	a	index	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where; Using index; Using join buffer
> +1	PRIMARY	a	index	PRIMARY	PRIMARY	4	NULL	2	100.00	Using where; Using index; Using join buffer (incremental, BNL join)
>  2	SUBQUERY	cona	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> -2	SUBQUERY	c	eq_ref	PRIMARY	PRIMARY	4	test.cona.idContact	1	100.00	Using join buffer
> +2	SUBQUERY	c	eq_ref	PRIMARY	PRIMARY	4	test.cona.idContact	1	100.00	Using join buffer (flat, BKA join)
>  Warnings:
>  Note	1003	select `test`.`a`.`idIndividual` AS `idIndividual` from `test`.`t1` `a` semi join (`test`.`t3` `cona` join `test`.`t2` `c`) where ((`test`.`c`.`idContact` = `test`.`cona`.`idContact`) and (`test`.`a`.`idIndividual` = `test`.`c`.`idObj`) and (`test`.`cona`.`postalStripped` = 'T2H3B2'))
>  drop table t1,t2,t3;
> 
> === modified file 'mysql-test/r/subselect4.result'
> --- a/mysql-test/r/subselect4.result	2010-06-26 10:05:41 +0000
> +++ b/mysql-test/r/subselect4.result	2010-10-08 19:30:16 +0000
> @@ -51,7 +51,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
>  2	DEPENDENT SUBQUERY	t1	index	NULL	PRIMARY	4	NULL	2	Using index
> -2	DEPENDENT SUBQUERY	t2	index	b	b	5	NULL	2	Using where; Using index; Using join buffer
> +2	DEPENDENT SUBQUERY	t2	index	b	b	5	NULL	2	Using where; Using index; Using join buffer (flat, BNL join)
>  # should return 0 rows
>  SELECT
>  (SELECT 1 FROM t1,t2 WHERE t2.b > t3.b)
> @@ -218,7 +218,7 @@
>  1	PRIMARY	t1	ALL	t1_IDX	NULL	NULL	NULL	5	
>  1	PRIMARY	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
>  FROM t1
>  WHERE EMPNUM IN
> @@ -233,13 +233,13 @@
>  1	PRIMARY	t1	ALL	t1_IDX	NULL	NULL	NULL	5	
>  1	PRIMARY	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  EXECUTE stmt;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	t1_IDX	NULL	NULL	NULL	5	
>  1	SIMPLE	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  DEALLOCATE PREPARE stmt;
>  DROP INDEX t1_IDX ON t1;
>  CREATE INDEX t1_IDX ON t1(EMPNUM);
> @@ -256,7 +256,7 @@
>  1	PRIMARY	t1	ALL	t1_IDX	NULL	NULL	NULL	5	
>  1	PRIMARY	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
>  FROM t1
>  WHERE EMPNUM IN
> @@ -271,13 +271,13 @@
>  1	PRIMARY	t1	ALL	t1_IDX	NULL	NULL	NULL	5	
>  1	PRIMARY	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  EXECUTE stmt;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	t1_IDX	NULL	NULL	NULL	5	
>  1	SIMPLE	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  DEALLOCATE PREPARE stmt;
>  DROP INDEX t1_IDX ON t1;
>  EXPLAIN SELECT EMPNAME
> @@ -293,7 +293,7 @@
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	
>  1	PRIMARY	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  PREPARE stmt FROM "EXPLAIN SELECT EMPNAME
>  FROM t1
>  WHERE EMPNUM IN
> @@ -308,13 +308,13 @@
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	
>  1	PRIMARY	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  EXECUTE stmt;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
>  1	SIMPLE	subselect2	eq_ref	unique_key	unique_key	3	func	1	
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +2	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  DEALLOCATE PREPARE stmt;
>  SET SESSION optimizer_switch = @old_optimizer_switch;
>  SET SESSION join_cache_level = @old_join_cache_level;
> 
> === modified file 'mysql-test/r/subselect_mat.result'
> --- a/mysql-test/r/subselect_mat.result	2010-07-16 11:02:15 +0000
> +++ b/mysql-test/r/subselect_mat.result	2010-10-08 19:30:16 +0000
> @@ -423,7 +423,7 @@
>  a1 = c1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where; Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where; Using join buffer (flat, BNL join)
>  4	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where
>  5	SUBQUERY	t2i	index	it2i2	it2i3	18	NULL	5	100.00	Using where; Using index
>  2	DEPENDENT SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> @@ -659,7 +659,7 @@
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  2	DEPENDENT SUBQUERY	t1_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  3	DEPENDENT SUBQUERY	t2_16	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -3	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	5	100.00	Using where; Using join buffer
> +3	DEPENDENT SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	5	100.00	Using where; Using join buffer (flat, BNL join)
>  4	SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where
>  Warnings:
>  Note	1003	select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` where <in_optimizer>(concat(`test`.`t1`.`a1`,'x'),<exists>(select 1 from `test`.`t1_16` where (<in_optimizer>((`test`.`t1_16`.`a1`,`test`.`t1_16`.`a2`),<exists>(select `test`.`t2_16`.`b1`,`test`.`t2_16`.`b2` from `test`.`t2_16` join `test`.`t2` where ((`test`.`t2`.`b2` = substr(`test`.`t2_16`.`b2`,1,6)) and <in_optimizer>(`test`.`t2`.`b1`,`test`.`t2`.`b1` in ( <materialize> (select `test`.`t3`.`c1` from `test`.`t3` where (`test`.`t3`.`c2` > '0') ), <primary_index_lookup>(`test`.`t2`.`b1` in <temporary table> on distinct_key where ((`test`.`t2`.`b1` = `materialized subselect`.`c1`))))) and (<cache>(`test`.`t1_16`.`a1`) = `test`.`t2_16`.`b1`) and (<cache>(`test`.`t1_16`.`a2`) = `test`.`t2_16`.`b2`)))) and (<cache>(concat(`test`.`t1`.`a1`,'x')) = left(`test`.`t1_16`.`a1`,8)))))
> @@ -1191,7 +1191,7 @@
>  EXPLAIN SELECT COUNT(*) FROM t1 WHERE (f1,f2) IN (SELECT f1,f2 FROM t2);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	2	
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  2	SUBQUERY	t2	ALL	NULL	NULL	NULL	NULL	2	
>  SELECT COUNT(*) FROM t1 WHERE (f1,f2) IN (SELECT f1,f2 FROM t2);
>  COUNT(*)
> 
> === modified file 'mysql-test/r/subselect_no_mat.result'
> --- a/mysql-test/r/subselect_no_mat.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect_no_mat.result	2010-10-08 19:30:16 +0000
> @@ -910,7 +910,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	100.00	Using index
>  2	DEPENDENT SUBQUERY	t2	ref_or_null	a	a	5	func	2	100.00	Using index
> -2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,<in_optimizer>(`test`.`t1`.`a`,<exists>(select 1 from `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t2`.`a`) and ((<cache>(`test`.`t1`.`a`) = `test`.`t2`.`a`) or isnull(`test`.`t2`.`a`))) having <is_not_null_test>(`test`.`t2`.`a`))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from `test`.`t1`
>  drop table t1,t2,t3;
> @@ -1300,7 +1300,7 @@
>  explain extended select * from t2 where t2.a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	index	PRIMARY	PRIMARY	4	NULL	4	75.00	Using where; Using index; Using join buffer
> +1	PRIMARY	t1	index	PRIMARY	PRIMARY	4	NULL	4	75.00	Using where; Using index; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where (`test`.`t1`.`a` = `test`.`t2`.`a`)
>  select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
> @@ -1310,7 +1310,7 @@
>  explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t1`.`b` <> 30))
>  select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
> @@ -1320,7 +1320,7 @@
>  explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer (flat, BNL join)
>  1	PRIMARY	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.b	1	100.00	Using index
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t3` join `test`.`t2` where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t3`.`a` = `test`.`t1`.`b`))
> 
> === modified file 'mysql-test/r/subselect_no_opts.result'
> --- a/mysql-test/r/subselect_no_opts.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect_no_opts.result	2010-10-08 19:30:16 +0000
> @@ -907,7 +907,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	100.00	Using index
>  2	DEPENDENT SUBQUERY	t2	ref_or_null	a	a	5	func	2	100.00	Using index
> -2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,<in_optimizer>(`test`.`t1`.`a`,<exists>(select 1 from `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t2`.`a`) and ((<cache>(`test`.`t1`.`a`) = `test`.`t2`.`a`) or isnull(`test`.`t2`.`a`))) having <is_not_null_test>(`test`.`t2`.`a`))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from `test`.`t1`
>  drop table t1,t2,t3;
> @@ -1361,7 +1361,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	NULL	a	5	NULL	4	100.00	Using where; Using index
>  2	DEPENDENT SUBQUERY	t1	ref	a	a	5	func	1001	100.00	Using index
> -2	DEPENDENT SUBQUERY	t3	index	a	a	5	NULL	3	100.00	Using where; Using index; Using join buffer
> +2	DEPENDENT SUBQUERY	t3	index	a	a	5	NULL	3	100.00	Using where; Using index; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,<exists>(select 1 from `test`.`t1` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t1`.`b`) and (<cache>(`test`.`t2`.`a`) = `test`.`t1`.`a`))))
>  insert into t1 values (3,31);
> 
> === modified file 'mysql-test/r/subselect_no_semijoin.result'
> --- a/mysql-test/r/subselect_no_semijoin.result	2010-07-16 08:58:24 +0000
> +++ b/mysql-test/r/subselect_no_semijoin.result	2010-10-08 19:30:16 +0000
> @@ -907,7 +907,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	100.00	Using index
>  2	DEPENDENT SUBQUERY	t2	ref_or_null	a	a	5	func	2	100.00	Using index
> -2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,<in_optimizer>(`test`.`t1`.`a`,<exists>(select 1 from `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t2`.`a`) and ((<cache>(`test`.`t1`.`a`) = `test`.`t2`.`a`) or isnull(`test`.`t2`.`a`))) having <is_not_null_test>(`test`.`t2`.`a`))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from `test`.`t1`
>  drop table t1,t2,t3;
> @@ -1318,7 +1318,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	NULL	PRIMARY	4	NULL	4	100.00	Using where; Using index
>  2	SUBQUERY	t3	index	PRIMARY	PRIMARY	4	NULL	3	100.00	Using index
> -2	SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where; Using join buffer
> +2	SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,`test`.`t2`.`a` in ( <materialize> (select `test`.`t1`.`a` from `test`.`t1` join `test`.`t3` where (`test`.`t1`.`b` = `test`.`t3`.`a`) ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where ((`test`.`t2`.`a` = `materialized subselect`.`a`)))))
>  drop table t1, t2, t3;
> @@ -1361,7 +1361,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	NULL	a	5	NULL	4	100.00	Using where; Using index
>  2	SUBQUERY	t3	index	a	a	5	NULL	3	100.00	Using index
> -2	SUBQUERY	t1	index	NULL	a	10	NULL	10004	100.00	Using where; Using index; Using join buffer
> +2	SUBQUERY	t1	index	NULL	a	10	NULL	10004	100.00	Using where; Using index; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t2` where <in_optimizer>(`test`.`t2`.`a`,`test`.`t2`.`a` in ( <materialize> (select `test`.`t1`.`a` from `test`.`t1` join `test`.`t3` where (`test`.`t1`.`b` = `test`.`t3`.`a`) ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where ((`test`.`t2`.`a` = `materialized subselect`.`a`)))))
>  insert into t1 values (3,31);
> 
> === modified file 'mysql-test/r/subselect_sj.result'
> --- a/mysql-test/r/subselect_sj.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect_sj.result	2010-10-08 19:30:16 +0000
> @@ -101,75 +101,75 @@
>  );
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	s00	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	PRIMARY	s01	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s02	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s03	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s04	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s05	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s06	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s07	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s08	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s09	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s10	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s11	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s12	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s13	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s14	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s15	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s16	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s17	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s18	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s19	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s20	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s21	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s22	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s23	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s24	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s25	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s26	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s27	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s28	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s29	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s30	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s31	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s32	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s33	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s34	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s35	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s36	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s37	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s38	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s39	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s40	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s41	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s42	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s43	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s44	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s45	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s46	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s47	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s48	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s49	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> +1	PRIMARY	s01	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s02	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s03	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s04	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s05	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s06	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s07	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s08	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s09	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s10	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s11	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s12	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s13	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s14	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s15	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s16	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s17	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s18	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s19	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s20	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s21	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s22	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s23	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s24	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s25	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s26	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s27	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s28	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s29	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s30	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s31	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s32	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s33	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s34	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s35	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s36	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s37	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s38	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s39	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s40	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s41	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s42	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s43	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s44	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s45	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s46	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s47	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s48	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s49	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
>  2	DEPENDENT SUBQUERY	m00	ALL	NULL	NULL	NULL	NULL	3	Using where
> -2	DEPENDENT SUBQUERY	m01	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m02	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m03	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m04	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m05	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m06	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m07	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m08	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m09	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m10	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m11	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m12	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m13	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m14	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m15	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m16	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m17	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m18	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m19	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	m01	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m02	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m03	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m04	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m05	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m06	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m07	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m08	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m09	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m10	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m11	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m12	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m13	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m14	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m15	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m16	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m17	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m18	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m19	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  select * from
>  t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)) 
>  where t1.a < 5;
> @@ -195,7 +195,7 @@
>  explain extended select * from t1 where a in (select pk from t10 where pk<3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t10	range	PRIMARY	PRIMARY	4	NULL	4	100.00	Using where; Using index
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	103	100.00	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	103	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t10` join `test`.`t1` where ((`test`.`t1`.`a` = `test`.`t10`.`pk`) and (`test`.`t10`.`pk` < 3))
>  drop table t0, t1, t2;
> @@ -738,7 +738,7 @@
>  FROM it1 LEFT JOIN it2 ON it2.datetime_key);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	it1	index	NULL	int_key	4	NULL	2	Using index; Start temporary
> -1	PRIMARY	ot1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer
> +1	PRIMARY	ot1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer (flat, BNL join)
>  1	PRIMARY	it2	ALL	NULL	NULL	NULL	NULL	20	Using where; End temporary
>  DROP TABLE ot1, it1, it2;
>  # End of BUG#38075
> @@ -770,7 +770,7 @@
>  where a in (select c from t2 where d >= some(select e from t3 where b=e));
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	6	100.00	Start temporary
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	7	100.00	Using where; End temporary; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	7	100.00	Using where; End temporary; Using join buffer (flat, BNL join)
>  3	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where
>  Warnings:
>  Note	1276	Field or reference 'test.t1.b' of SELECT #3 was resolved in SELECT #1
> 
> === modified file 'mysql-test/r/subselect_sj2.result'
> --- a/mysql-test/r/subselect_sj2.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect_sj2.result	2010-10-08 19:30:16 +0000
> @@ -130,7 +130,7 @@
>  from t1 ot where a in (select a from t2 it);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	22	
> -1	PRIMARY	ot	ALL	NULL	NULL	NULL	NULL	32	Using where; Using join buffer
> +1	PRIMARY	ot	ALL	NULL	NULL	NULL	NULL	32	Using where; Using join buffer (flat, BNL join)
>  2	SUBQUERY	it	ALL	NULL	NULL	NULL	NULL	22	
>  select 
>  a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
> @@ -198,7 +198,7 @@
>  from t1 ot where a in (select a from t2 it);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	22	
> -1	PRIMARY	ot	ALL	NULL	NULL	NULL	NULL	52	Using where; Using join buffer
> +1	PRIMARY	ot	ALL	NULL	NULL	NULL	NULL	52	Using where; Using join buffer (flat, BNL join)
>  2	SUBQUERY	it	ALL	NULL	NULL	NULL	NULL	22	
>  select 
>  a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
> @@ -272,7 +272,7 @@
>  (select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	10	Start temporary
> -1	PRIMARY	t1	index	NULL	a	5	NULL	10	Using index; Using join buffer
> +1	PRIMARY	t1	index	NULL	a	5	NULL	10	Using index; Using join buffer (flat, BNL join)
>  1	PRIMARY	t2	ref	a	a	5	test.t1.a	1	Using where; Using index
>  1	PRIMARY	t3	ref	a	a	5	test.t1.a	1	Using where; Using index; End temporary
>  drop table t0, t1,t2,t3;
> 
> === modified file 'mysql-test/r/subselect_sj2_jcl6.result'
> --- a/mysql-test/r/subselect_sj2_jcl6.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect_sj2_jcl6.result	2010-10-08 19:30:16 +0000
> @@ -40,7 +40,7 @@
>  explain select * from t2 where b in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	3	
> -1	PRIMARY	t2	ref	b	b	5	test.t1.a	2	Using join buffer
> +1	PRIMARY	t2	ref	b	b	5	test.t1.a	2	Using join buffer (flat, BKA join)
>  2	SUBQUERY	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
>  select * from t2 where b in (select a from t1);
>  a	b
> @@ -59,7 +59,7 @@
>  explain select * from t3 where b in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t3	ALL	b	NULL	NULL	NULL	10	
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; FirstMatch(t3); Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; FirstMatch(t3); Using join buffer (flat, BNL join)
>  select * from t3 where b in (select a from t1);
>  a	b	pk1	pk2	pk3
>  1	1	1	1	1
> @@ -82,7 +82,7 @@
>  explain select * from t3 where b in (select a from t0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	10	
> -1	PRIMARY	t3	ref	b	b	5	test.t0.a	1	Using join buffer
> +1	PRIMARY	t3	ref	b	b	5	test.t0.a	1	Using join buffer (flat, BKA join)
>  2	SUBQUERY	t0	ALL	NULL	NULL	NULL	NULL	10	Using where
>  set @save_ecp= @@engine_condition_pushdown;
>  set engine_condition_pushdown=0;
> @@ -137,7 +137,7 @@
>  from t1 ot where a in (select a from t2 it);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	22	
> -1	PRIMARY	ot	ALL	NULL	NULL	NULL	NULL	32	Using where; Using join buffer
> +1	PRIMARY	ot	ALL	NULL	NULL	NULL	NULL	32	Using where; Using join buffer (flat, BNL join)
>  2	SUBQUERY	it	ALL	NULL	NULL	NULL	NULL	22	
>  select 
>  a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
> @@ -205,7 +205,7 @@
>  from t1 ot where a in (select a from t2 it);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	subselect2	ALL	unique_key	NULL	NULL	NULL	22	
> -1	PRIMARY	ot	ALL	NULL	NULL	NULL	NULL	52	Using where; Using join buffer
> +1	PRIMARY	ot	ALL	NULL	NULL	NULL	NULL	52	Using where; Using join buffer (flat, BNL join)
>  2	SUBQUERY	it	ALL	NULL	NULL	NULL	NULL	22	
>  select 
>  a, mid(filler1, 1,10), length(filler1)=length(filler2) as Z 
> @@ -279,7 +279,7 @@
>  (select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	10	Start temporary
> -1	PRIMARY	t1	index	NULL	a	5	NULL	10	Using index; Using join buffer
> +1	PRIMARY	t1	index	NULL	a	5	NULL	10	Using index; Using join buffer (flat, BNL join)
>  1	PRIMARY	t2	ref	a	a	5	test.t1.a	1	Using where; Using index
>  1	PRIMARY	t3	ref	a	a	5	test.t1.a	1	Using where; Using index; End temporary
>  drop table t0, t1,t2,t3;
> @@ -318,8 +318,8 @@
>  t2.Population > 100000);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	range	Population,Country	Population	4	NULL	1	Using index condition; Using MRR
> -1	PRIMARY	t3	eq_ref	PRIMARY,Percentage	PRIMARY	33	test.t1.Country,const	1	Using index condition; Using where; Using join buffer
> -1	PRIMARY	t2	eq_ref	PRIMARY,Population	PRIMARY	3	test.t3.Country	1	Using index condition(BKA); Using where; Using join buffer
> +1	PRIMARY	t3	eq_ref	PRIMARY,Percentage	PRIMARY	33	test.t1.Country,const	1	Using index condition; Using where; Using join buffer (flat, BKA join)
> +1	PRIMARY	t2	eq_ref	PRIMARY,Population	PRIMARY	3	test.t3.Country	1	Using index condition(BKA); Using where; Using join buffer (incremental, BKA join)
>  DROP TABLE t1,t2,t3;
>  CREATE TABLE t1 (
>  Code char(3) NOT NULL DEFAULT '',
> @@ -433,8 +433,8 @@
>  t1.b=t2.b);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	5	100.00	Using where; Start temporary
> -1	PRIMARY	t1	ref	a	a	5	test.t0.a	1	100.00	Using join buffer
> -1	PRIMARY	t2	eq_ref	PRIMARY	PRIMARY	4	test.t0.a	1	100.00	Using where; End temporary; Using join buffer
> +1	PRIMARY	t1	ref	a	a	5	test.t0.a	1	100.00	Using join buffer (flat, BKA join)
> +1	PRIMARY	t2	eq_ref	PRIMARY	PRIMARY	4	test.t0.a	1	100.00	Using where; End temporary; Using join buffer (incremental, BKA join)
>  Warnings:
>  Note	1276	Field or reference 'test.t0.a' of SELECT #2 was resolved in SELECT #1
>  Note	1003	select `test`.`t0`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) join `test`.`t0` where ((`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t1`.`a` = `test`.`t0`.`a`) and (`test`.`t2`.`a` = `test`.`t0`.`a`))
> @@ -587,7 +587,7 @@
>  select * from t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t3));
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  2	DEPENDENT SUBQUERY	t3	unique_subquery	PRIMARY	PRIMARY	4	func	1	Using index
>  drop table t0, t1, t2, t3;
>  create table t1 (a int);
> @@ -728,9 +728,9 @@
>  c1 in (select convert(c6,char(1)) from t2);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	1	Using where
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	1	Using join buffer
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Using join buffer
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	2	FirstMatch(t2); Using join buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	1	Using join buffer (flat, BNL join)
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	1	Using where; Using join buffer (incremental, BNL join)
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	2	FirstMatch(t2); Using join buffer (incremental, BNL join)
>  drop table t2, t3;
>  set join_cache_level=default;
>  show variables like 'join_cache_level';
> 
> === modified file 'mysql-test/r/subselect_sj_jcl6.result'
> --- a/mysql-test/r/subselect_sj_jcl6.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/subselect_sj_jcl6.result	2010-10-08 19:30:16 +0000
> @@ -59,7 +59,7 @@
>  explain select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	PRIMARY	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where; Using join buffer
> +1	PRIMARY	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	Using where; Using join buffer (flat, BKA join)
>  1	PRIMARY	t12	eq_ref	PRIMARY	PRIMARY	4	test.t10.a	1	Using index
>  select * from t1 where a in (select pk from t10 where t10.a in (select pk from t12));
>  a	b
> @@ -70,7 +70,7 @@
>  explain extended select * from t1 where a in (select t10.pk from t10, t12 where t12.pk=t10.a);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	PRIMARY	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	100.00	Using where; Using join buffer
> +1	PRIMARY	t10	eq_ref	PRIMARY	PRIMARY	4	test.t1.a	1	100.00	Using where; Using join buffer (flat, BKA join)
>  1	PRIMARY	t12	eq_ref	PRIMARY	PRIMARY	4	test.t10.a	1	100.00	Using index
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t10` join `test`.`t12` join `test`.`t1` where ((`test`.`t10`.`pk` = `test`.`t1`.`a`) and (`test`.`t12`.`pk` = `test`.`t10`.`a`))
> @@ -79,8 +79,8 @@
>  select * from t1 left join (t2 A, t2 B) on ( A.A= t1.A And B.A in (select pk from t10));
>  id	select_type	tABle	type	possiBle_keys	key	key_len	ref	rows	filtered	ExtrA
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	
> -1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join Buffer
> -1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join Buffer
> +1	PRIMARY	A	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join Buffer (flAt, BNL join)
> +1	PRIMARY	B	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join Buffer (incrementAl, BNL join)
>  2	DEPENDENT SUBQUERY	t10	unique_suBquery	PRIMARY	PRIMARY	4	func	1	100.00	Using index
>  Warnings:
>  Note	1003	select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`A`.`A` AS `A`,`test`.`A`.`B` AS `B`,`test`.`B`.`A` AS `A`,`test`.`B`.`B` AS `B` from `test`.`t1` left join (`test`.`t2` `A` join `test`.`t2` `B`) on(((`test`.`A`.`A` = `test`.`t1`.`A`) And <in_optimizer>(`test`.`B`.`A`,<exists>(<primAry_index_lookup>(<cAche>(`test`.`B`.`A`) in t10 on PRIMARY))))) where 1
> @@ -89,7 +89,7 @@
>  select * from t1 left join t2 on (t2.A= t1.A And t2.A in (select pk from t10));
>  id	select_type	tABle	type	possiBle_keys	key	key_len	ref	rows	filtered	ExtrA
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join Buffer
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join Buffer (flAt, BNL join)
>  2	DEPENDENT SUBQUERY	t10	unique_suBquery	PRIMARY	PRIMARY	4	func	1	100.00	Using index
>  Warnings:
>  Note	1003	select `test`.`t1`.`A` AS `A`,`test`.`t1`.`B` AS `B`,`test`.`t2`.`A` AS `A`,`test`.`t2`.`B` AS `B` from `test`.`t1` left join `test`.`t2` on(((`test`.`t2`.`A` = `test`.`t1`.`A`) And <in_optimizer>(`test`.`t2`.`A`,<exists>(<primAry_index_lookup>(<cAche>(`test`.`t2`.`A`) in t10 on PRIMARY))))) where 1
> @@ -108,75 +108,75 @@
>  );
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	s00	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	PRIMARY	s01	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s02	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s03	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s04	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s05	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s06	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s07	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s08	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s09	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s10	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s11	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s12	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s13	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s14	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s15	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s16	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s17	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s18	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s19	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s20	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s21	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s22	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s23	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s24	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s25	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s26	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s27	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s28	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s29	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s30	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s31	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s32	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s33	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s34	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s35	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s36	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s37	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s38	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s39	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s40	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s41	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s42	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s43	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s44	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s45	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s46	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s47	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s48	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -1	PRIMARY	s49	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> +1	PRIMARY	s01	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +1	PRIMARY	s02	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s03	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s04	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s05	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s06	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s07	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s08	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s09	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s10	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s11	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s12	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s13	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s14	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s15	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s16	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s17	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s18	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s19	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s20	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s21	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s22	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s23	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s24	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s25	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s26	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s27	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s28	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s29	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s30	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s31	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s32	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s33	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s34	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s35	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s36	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s37	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s38	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s39	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s40	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s41	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s42	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s43	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s44	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s45	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s46	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s47	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s48	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +1	PRIMARY	s49	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
>  2	DEPENDENT SUBQUERY	m00	ALL	NULL	NULL	NULL	NULL	3	Using where
> -2	DEPENDENT SUBQUERY	m01	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m02	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m03	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m04	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m05	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m06	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m07	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m08	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m09	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m10	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m11	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m12	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m13	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m14	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m15	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m16	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m17	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m18	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> -2	DEPENDENT SUBQUERY	m19	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	m01	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
> +2	DEPENDENT SUBQUERY	m02	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m03	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m04	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m05	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m06	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m07	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m08	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m09	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m10	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m11	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m12	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m13	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m14	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m15	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m16	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m17	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m18	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (incremental, BNL join)
> +2	DEPENDENT SUBQUERY	m19	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (incremental, BNL join)
>  select * from
>  t1 left join t2 on (t2.a= t1.a and t2.a in (select pk from t10)) 
>  where t1.a < 5;
> @@ -202,7 +202,7 @@
>  explain extended select * from t1 where a in (select pk from t10 where pk<3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t10	range	PRIMARY	PRIMARY	4	NULL	4	100.00	Using where; Using index
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	103	100.00	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	103	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t10` join `test`.`t1` where ((`test`.`t1`.`a` = `test`.`t10`.`pk`) and (`test`.`t10`.`pk` < 3))
>  drop table t0, t1, t2;
> @@ -340,8 +340,8 @@
>  (SELECT PNUM  FROM PROJ));
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	STAFF	ALL	NULL	NULL	NULL	NULL	5	
> -1	PRIMARY	PROJ	ALL	NULL	NULL	NULL	NULL	6	Using join buffer
> -1	PRIMARY	WORKS	ALL	NULL	NULL	NULL	NULL	12	Using where; FirstMatch(STAFF); Using join buffer
> +1	PRIMARY	PROJ	ALL	NULL	NULL	NULL	NULL	6	Using join buffer (flat, BNL join)
> +1	PRIMARY	WORKS	ALL	NULL	NULL	NULL	NULL	12	Using where; FirstMatch(STAFF); Using join buffer (incremental, BNL join)
>  SELECT EMPNUM, EMPNAME
>  FROM STAFF
>  WHERE EMPNUM IN
> @@ -515,7 +515,7 @@
>  (SELECT t1.pk FROM t0 t1 JOIN t0 t2 ON t2.vkey = t1.vnokey);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t0	ALL	PRIMARY	NULL	NULL	NULL	5	100.00	
> -1	PRIMARY	t1	eq_ref	PRIMARY	PRIMARY	4	test.t0.pk	1	100.00	Using where; Using join buffer
> +1	PRIMARY	t1	eq_ref	PRIMARY	PRIMARY	4	test.t0.pk	1	100.00	Using where; Using join buffer (flat, BKA join)
>  1	PRIMARY	t2	ref	vkey	vkey	4	test.t1.vnokey	2	100.00	Using index; FirstMatch(t1)
>  Warnings:
>  Note	1003	select `test`.`t0`.`vkey` AS `vkey` from `test`.`t0` `t1` semi join (`test`.`t0` `t2`) join `test`.`t0` where ((`test`.`t2`.`vkey` = `test`.`t1`.`vnokey`) and (`test`.`t1`.`pk` = `test`.`t0`.`pk`))
> @@ -745,8 +745,8 @@
>  FROM it1 LEFT JOIN it2 ON it2.datetime_key);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	it1	index	NULL	int_key	4	NULL	2	Using index; Start temporary
> -1	PRIMARY	ot1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer
> -1	PRIMARY	it2	ALL	NULL	NULL	NULL	NULL	20	Using where; End temporary; Using join buffer
> +1	PRIMARY	ot1	ALL	NULL	NULL	NULL	NULL	20	Using join buffer (flat, BNL join)
> +1	PRIMARY	it2	ALL	NULL	NULL	NULL	NULL	20	Using where; End temporary; Using join buffer (incremental, BNL join)
>  DROP TABLE ot1, it1, it2;
>  # End of BUG#38075
>  #
> @@ -777,7 +777,7 @@
>  where a in (select c from t2 where d >= some(select e from t3 where b=e));
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	6	100.00	Start temporary
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	7	100.00	Using where; End temporary; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	7	100.00	Using where; End temporary; Using join buffer (flat, BNL join)
>  3	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	4	100.00	Using where
>  Warnings:
>  Note	1276	Field or reference 'test.t1.b' of SELECT #3 was resolved in SELECT #1
> @@ -828,7 +828,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, c) IN (SELECT b, c FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`c` = `test`.`t1`.`c`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, c) IN (SELECT b, c FROM t2 WHERE pk > 0);
> @@ -838,7 +838,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, d) IN (SELECT b, d FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`d` = `test`.`t1`.`d`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, d) IN (SELECT b, d FROM t2 WHERE pk > 0);
> @@ -847,7 +847,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, e) IN (SELECT b, e FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`e` = `test`.`t1`.`e`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, e) IN (SELECT b, e FROM t2 WHERE pk > 0);
> @@ -857,7 +857,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, f) IN (SELECT b, f FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`f` = `test`.`t1`.`f`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, f) IN (SELECT b, f FROM t2 WHERE pk > 0);
> @@ -867,7 +867,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, g) IN (SELECT b, g FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`g` = `test`.`t1`.`g`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, g) IN (SELECT b, g FROM t2 WHERE pk > 0);
> @@ -877,7 +877,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, h) IN (SELECT b, h FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`h` = `test`.`t1`.`h`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, h) IN (SELECT b, h FROM t2 WHERE pk > 0);
> @@ -887,7 +887,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, i) IN (SELECT b, i FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`i` = `test`.`t1`.`i`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, i) IN (SELECT b, i FROM t2 WHERE pk > 0);
> @@ -897,7 +897,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, j) IN (SELECT b, j FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`j` = `test`.`t1`.`j`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, j) IN (SELECT b, j FROM t2 WHERE pk > 0);
> @@ -907,7 +907,7 @@
>  EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (b, k) IN (SELECT b, k FROM t2 WHERE pk > 0);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer
> +1	PRIMARY	t2	range	PRIMARY	PRIMARY	4	NULL	2	100.00	Using index condition; Using where; Using MRR; FirstMatch(t1); Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`k` = `test`.`t1`.`k`) and (`test`.`t2`.`b` = `test`.`t1`.`b`) and (`test`.`t2`.`pk` > 0))
>  SELECT pk FROM t1 WHERE (b, k) IN (SELECT b, k FROM t2 WHERE pk > 0);
> @@ -1069,8 +1069,8 @@
>  WHERE  t3.val LIKE 'a%' OR t3.val LIKE 'e%');
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	
> -1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	5	Using where; FirstMatch(t1); Using join buffer
> -1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; FirstMatch(t3); Using join buffer
> +1	PRIMARY	t3	ALL	NULL	NULL	NULL	NULL	5	Using where; FirstMatch(t1); Using join buffer (flat, BNL join)
> +1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; FirstMatch(t3); Using join buffer (incremental, BNL join)
>  SELECT *
>  FROM t1
>  WHERE t1.val IN (SELECT t2.val FROM t2
> @@ -1104,8 +1104,8 @@
>  (SELECT t1.a FROM t1, t2 WHERE t2.a=t0.a AND t1.b=t2.b);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t0	ALL	NULL	NULL	NULL	NULL	5	Using where; Start temporary
> -1	PRIMARY	t1	ref	a	a	5	test.t0.a	1	Using join buffer
> -1	PRIMARY	t2	eq_ref	PRIMARY	PRIMARY	4	test.t0.a	1	Using where; End temporary; Using join buffer
> +1	PRIMARY	t1	ref	a	a	5	test.t0.a	1	Using join buffer (flat, BKA join)
> +1	PRIMARY	t2	eq_ref	PRIMARY	PRIMARY	4	test.t0.a	1	Using where; End temporary; Using join buffer (incremental, BKA join)
>  SELECT * FROM t0 WHERE t0.a IN 
>  (SELECT t1.a FROM t1, t2 WHERE t2.a=t0.a AND t1.b=t2.b);
>  a
> 
> === modified file 'mysql-test/r/union.result'
> --- a/mysql-test/r/union.result	2010-06-26 10:05:41 +0000
> +++ b/mysql-test/r/union.result	2010-10-08 19:30:16 +0000
> @@ -542,7 +542,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
>  2	UNION	t1	index	PRIMARY	PRIMARY	4	NULL	4	Using index
> -2	UNION	t2	index	PRIMARY	PRIMARY	4	NULL	4	Using where; Using index; Using join buffer
> +2	UNION	t2	index	PRIMARY	PRIMARY	4	NULL	4	Using where; Using index; Using join buffer (flat, BNL join)
>  NULL	UNION RESULT	<union1,2>	ALL	NULL	NULL	NULL	NULL	NULL	
>  explain (select * from t1 where a=1) union (select * from t1 where b=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> 
> === modified file 'mysql-test/r/view.result'
> --- a/mysql-test/r/view.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/r/view.result	2010-10-08 19:30:16 +0000
> @@ -2350,7 +2350,7 @@
>  EXPLAIN SELECT * FROM v2 WHERE a=1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	a	a	5	const	1	Using index
> -1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  DROP VIEW v1,v2;
>  DROP TABLE t1,t2,t3;
>  create table t1 (f1 int);
> 
> === modified file 'mysql-test/suite/pbxt/r/derived.result'
> --- a/mysql-test/suite/pbxt/r/derived.result	2009-04-02 10:03:14 +0000
> +++ b/mysql-test/suite/pbxt/r/derived.result	2010-10-08 19:30:16 +0000
> @@ -58,7 +58,7 @@
>  explain select * from t1 as x1, (select * from t1) as x2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	x1	ALL	NULL	NULL	NULL	NULL	4	
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	4	Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	4	Using join buffer (flat, BNL join)
>  2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	4	
>  drop table if exists  t2,t3;
>  select * from (select 1) as a;
> @@ -115,7 +115,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	<derived2>	system	NULL	NULL	NULL	NULL	1	
>  2	DERIVED	t2	ALL	NULL	NULL	NULL	NULL	1	
> -2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; Using join buffer
> +2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  drop table t1, t2;
>  create table t1(a int not null, t char(8), index(a));
>  SELECT * FROM (SELECT * FROM t1) as b ORDER BY a  ASC LIMIT 0,20;
> @@ -143,7 +143,7 @@
>  explain select count(*) from t1 as tt1, (select * from t1) as tt2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	tt1	index	NULL	a	4	NULL	10000	Using index
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	10000	Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	10000	Using join buffer (flat, BNL join)
>  2	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	10000	
>  drop table t1;
>  SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a) as a )) as b;
> @@ -190,13 +190,13 @@
>  explain SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	m2	ALL	NULL	NULL	NULL	NULL	9	
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  2	DERIVED	mp	ALL	NULL	NULL	NULL	NULL	9	Using temporary; Using filesort
>  2	DERIVED	m1	eq_ref	PRIMARY	PRIMARY	3	test.mp.mat_id	1	
>  explain SELECT STRAIGHT_JOIN d.pla_id, m2.test FROM t1 m2  INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	m2	ALL	NULL	NULL	NULL	NULL	9	
> -1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  2	DERIVED	mp	ALL	NULL	NULL	NULL	NULL	9	Using temporary; Using filesort
>  2	DERIVED	m1	eq_ref	PRIMARY	PRIMARY	3	test.mp.mat_id	1	
>  drop table t1,t2;
> @@ -250,7 +250,7 @@
>  explain select * from ( select * from t1 union select * from t1) a,(select * from t1 union select * from t1) b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2	
> -1	PRIMARY	<derived4>	ALL	NULL	NULL	NULL	NULL	2	Using join buffer
> +1	PRIMARY	<derived4>	ALL	NULL	NULL	NULL	NULL	2	Using join buffer (flat, BNL join)
>  4	DERIVED	t1	ALL	NULL	NULL	NULL	NULL	2	
>  5	UNION	t1	ALL	NULL	NULL	NULL	NULL	2	
>  NULL	UNION RESULT	<union4,5>	ALL	NULL	NULL	NULL	NULL	NULL	
> @@ -317,7 +317,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	3	Using temporary; Using filesort
>  2	DERIVED	x	ALL	NULL	NULL	NULL	NULL	17	Using temporary; Using filesort
> -2	DERIVED	y	ALL	NULL	NULL	NULL	NULL	17	Using where; Using join buffer
> +2	DERIVED	y	ALL	NULL	NULL	NULL	NULL	17	Using where; Using join buffer (flat, BNL join)
>  drop table t1;
>  create table t2 (a int, b int, primary key (a));
>  insert into t2 values (1,7),(2,7);
> 
> === modified file 'mysql-test/suite/pbxt/r/distinct.result'
> --- a/mysql-test/suite/pbxt/r/distinct.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/suite/pbxt/r/distinct.result	2010-10-08 19:30:16 +0000
> @@ -300,11 +300,11 @@
>  AND ((t1.id=j_lj_t3.id AND t3_lj.id IS NULL) OR (t1.id=t3.id AND t3.idx=2));
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	index	id	id	4	NULL	2	Using index; Using temporary
> -1	SIMPLE	t2	index	id	id	8	NULL	1	Using index; Distinct; Using join buffer
> -1	SIMPLE	t3	index	id	id	8	NULL	1	Using index; Distinct; Using join buffer
> -1	SIMPLE	j_lj_t2	index	id	id	4	NULL	2	Using where; Using index; Distinct; Using join buffer
> +1	SIMPLE	t2	index	id	id	8	NULL	1	Using index; Distinct; Using join buffer (flat, BNL join)
> +1	SIMPLE	t3	index	id	id	8	NULL	1	Using index; Distinct; Using join buffer (flat, BNL join)
> +1	SIMPLE	j_lj_t2	index	id	id	4	NULL	2	Using where; Using index; Distinct; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2_lj	ref	id	id	4	test.j_lj_t2.id	1	Using where; Using index; Distinct
> -1	SIMPLE	j_lj_t3	index	id	id	4	NULL	2	Using where; Using index; Distinct; Using join buffer
> +1	SIMPLE	j_lj_t3	index	id	id	4	NULL	2	Using where; Using index; Distinct; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3_lj	ref	id	id	4	test.j_lj_t3.id	1	Using where; Using index; Distinct
>  SELECT DISTINCT
>  t1.id
> @@ -515,7 +515,7 @@
>  EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1_1	ALL	NULL	NULL	NULL	NULL	3	Using temporary
> -1	SIMPLE	t1_2	index	NULL	PRIMARY	4	NULL	3	Using index; Distinct; Using join buffer
> +1	SIMPLE	t1_2	index	NULL	PRIMARY	4	NULL	3	Using index; Distinct; Using join buffer (flat, BNL join)
>  EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2
>  WHERE t1_1.a = t1_2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> 
> === modified file 'mysql-test/suite/pbxt/r/func_group.result'
> --- a/mysql-test/suite/pbxt/r/func_group.result	2010-01-16 05:12:57 +0000
> +++ b/mysql-test/suite/pbxt/r/func_group.result	2010-10-08 19:30:16 +0000
> @@ -614,7 +614,7 @@
>  select max(t1.a3), min(t2.a2) from t1, t2 where t1.a2 = 2 and t1.a3 < 'MIN' and t2.a3 > 'CA';
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	range	k1	k1	7	NULL	1	Using where; Using index
> -1	SIMPLE	t2	range	k1	k1	3	NULL	1	Using where; Using index; Using join buffer
> +1	SIMPLE	t2	range	k1	k1	3	NULL	1	Using where; Using index; Using join buffer (flat, BNL join)
>  explain
>  select min(a4 - 0.01) from t1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> @@ -651,7 +651,7 @@
>  select concat(min(t1.a1),min(t2.a4)) from t1, t2 where t2.a4 <> 'AME';
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	k2	k2	4	NULL	7	Using where; Using index
> -1	SIMPLE	t1	index	NULL	PRIMARY	3	NULL	15	Using index; Using join buffer
> +1	SIMPLE	t1	index	NULL	PRIMARY	3	NULL	15	Using index; Using join buffer (flat, BNL join)
>  drop table t1, t2;
>  create table t1 (a char(10));
>  insert into t1 values ('a'),('b'),('c');
> 
> === modified file 'mysql-test/suite/pbxt/r/greedy_optimizer.result'
> --- a/mysql-test/suite/pbxt/r/greedy_optimizer.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/suite/pbxt/r/greedy_optimizer.result	2010-10-08 19:30:16 +0000
> @@ -121,11 +121,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -133,11 +133,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -145,11 +145,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -157,11 +157,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -169,11 +169,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -181,11 +181,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -201,11 +201,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -213,11 +213,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -225,11 +225,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -237,11 +237,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -249,11 +249,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -261,11 +261,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -277,11 +277,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -289,11 +289,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -304,9 +304,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	795.625316
> @@ -316,9 +316,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	795.625316
> @@ -328,9 +328,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	795.625316
> @@ -340,9 +340,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	795.625316
> @@ -353,11 +353,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -365,11 +365,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -377,11 +377,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -389,11 +389,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -401,11 +401,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -413,11 +413,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t1	eq_ref	PRIMARY	PRIMARY	4	test.t2.c21	1	Using where
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -433,11 +433,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -445,11 +445,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -457,11 +457,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -469,11 +469,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -481,11 +481,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -493,11 +493,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -509,11 +509,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -521,11 +521,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -536,9 +536,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	795.625316
> @@ -548,9 +548,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	795.625316
> @@ -560,9 +560,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	795.625316
> @@ -572,9 +572,9 @@
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  show status like 'Last_query_cost';
>  Variable_name	Value
>  Last_query_cost	795.625316
> @@ -585,11 +585,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -597,11 +597,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c12 = t2.c21 and t2.c22 = t3.c31 and t3.c32 = t4.c41 and t4.c42 = t5.c51 and t5.c52 = t6.c61 and t6.c62 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t2.c22	1	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t4.c42	1	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t6.c62	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -609,11 +609,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -621,11 +621,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using index
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using index
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using index
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -633,11 +633,11 @@
>  explain select t1.c11 from t1, t2, t3, t4, t5, t6, t7 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> @@ -645,11 +645,11 @@
>  explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	PRIMARY	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	6	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.c12	1	Using where
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	12	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t5	eq_ref	PRIMARY	PRIMARY	4	test.t1.c14	1	Using where
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	18	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t7	eq_ref	PRIMARY	PRIMARY	4	test.t1.c16	1	Using where
>  show status like 'Last_query_cost';
>  Variable_name	Value
> 
> === modified file 'mysql-test/suite/pbxt/r/group_by.result'
> --- a/mysql-test/suite/pbxt/r/group_by.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/suite/pbxt/r/group_by.result	2010-10-08 19:30:16 +0000
> @@ -537,11 +537,11 @@
>  explain select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	6	Using temporary; Using filesort
> -1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  explain select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b ORDER BY NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	6	Using temporary
> -1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	a	NULL	NULL	NULL	4	Using where; Using join buffer (flat, BNL join)
>  drop table t1,t2;
>  create table t1 (a int, b int);
>  insert into t1 values (1, 4),(10, 40),(1, 4),(10, 43),(1, 4),(10, 41),(1, 4),(10, 43),(1, 4);
> 
> === modified file 'mysql-test/suite/pbxt/r/group_min_max.result'
> --- a/mysql-test/suite/pbxt/r/group_min_max.result	2010-06-26 10:05:41 +0000
> +++ b/mysql-test/suite/pbxt/r/group_min_max.result	2010-10-08 19:30:16 +0000
> @@ -2268,7 +2268,7 @@
>  AND t1_outer1.b = t1_outer2.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t1_outer1	ref	a	a	5	const	1	Using where; Using index
> -1	PRIMARY	t1_outer2	index	NULL	a	10	NULL	15	Using where; Using index; Using join buffer
> +1	PRIMARY	t1_outer2	index	NULL	a	10	NULL	15	Using where; Using index; Using join buffer (flat, BNL join)
>  2	SUBQUERY	t1	index	NULL	a	10	NULL	15	Using index
>  EXPLAIN SELECT (SELECT (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2) x
>  FROM t1 AS t1_outer) x2 FROM t1 AS t1_outer2;
> 
> === modified file 'mysql-test/suite/pbxt/r/join_nested.result'
> --- a/mysql-test/suite/pbxt/r/join_nested.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/suite/pbxt/r/join_nested.result	2010-10-08 19:30:16 +0000
> @@ -229,7 +229,7 @@
>  ON t7.b=t8.b AND t6.b < 10;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> +1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (flat, BNL join)
>  1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  Warnings:
>  Note	1003	select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t7`.`b` = `test`.`t8`.`b`) and (`test`.`t6`.`b` < 10))) where 1
> @@ -544,7 +544,7 @@
>  (t2.a >= 4 OR t2.c IS NULL);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> @@ -639,7 +639,7 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> @@ -647,7 +647,7 @@
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  SELECT t9.a,t9.b
> @@ -836,7 +836,7 @@
>  WHERE t1.a <= 2;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using join buffer (flat, BNL join)
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  Warnings:
> @@ -850,7 +850,7 @@
>  ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	
> -1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer
> +1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ref	idx_b	idx_b	5	test.t3.b	1	100.00	Using where
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	
>  Warnings:
> @@ -906,7 +906,7 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> @@ -914,7 +914,7 @@
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  CREATE INDEX idx_b ON t4(b);
> @@ -956,7 +956,7 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	1	100.00	Using where
> @@ -964,7 +964,7 @@
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where
>  1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	100.00	Using where
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on((((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1)) and (`test`.`t2`.`b` is not null))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
>  CREATE INDEX idx_b ON t8(b);
> @@ -1005,7 +1005,7 @@
>  (t9.a=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
>  1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	
>  1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	1	
> @@ -1013,7 +1013,7 @@
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	
>  1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	1	
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
>  ATTENTION: the above EXPLAIN has several competing QEPs with identical
>  .          costs. To combat the plan change it uses --sorted_result and
>  .          and --replace tricks
> @@ -1064,7 +1064,7 @@
>  1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	
>  1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	
>  1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t5.b	1	
> -1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using join buffer
> +1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using join buffer (flat, BNL join)
>  ATTENTION: the above EXPLAIN has several competing QEPs with identical
>  .          costs. To combat the plan change it uses --sorted_result
>  .          and --replace tricks
> 
> === modified file 'mysql-test/suite/pbxt/r/range.result'
> --- a/mysql-test/suite/pbxt/r/range.result	2010-06-26 10:05:41 +0000
> +++ b/mysql-test/suite/pbxt/r/range.result	2010-10-08 19:30:16 +0000
> @@ -222,27 +222,27 @@
>  explain select * from t1, t1 t2 where t1.y = 8 and t2.x between 7 and t1.y+0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 8 and t2.x >= 7 and t2.x <= t1.y+0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 2 and t2.x between t1.y-1 and t1.y+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 2 and t2.x >= t1.y-1 and t2.x <= t1.y+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 2 and t2.x between 0 and t1.y;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer (flat, BNL join)
>  explain select * from t1, t1 t2 where t1.y = 2 and t2.x >= 0 and t2.x <= t1.y;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	y	y	5	const	1	
> -1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer
> +1	SIMPLE	t2	range	x	x	5	NULL	1	Using where; Using join buffer (flat, BNL join)
>  explain select count(*) from t1 where x in (1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	x	x	5	const	1	Using index
> @@ -422,20 +422,20 @@
>  test.t2	analyze	status	OK
>  explain select * from t1, t2  where t1.uid=t2.uid AND t1.uid > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> -1	SIMPLE	t1	range	uid_index	uid_index	4	NULL	1	Using where
> -1	SIMPLE	t2	ref	uid_index	uid_index	4	test.t1.uid	1	
> +1	SIMPLE	t2	range	uid_index	uid_index	4	NULL	1	Using where
> +1	SIMPLE	t1	ref	uid_index	uid_index	4	test.t2.uid	1	
>  explain select * from t1, t2  where t1.uid=t2.uid AND t2.uid > 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> -1	SIMPLE	t1	range	uid_index	uid_index	4	NULL	1	Using where
> -1	SIMPLE	t2	ref	uid_index	uid_index	4	test.t1.uid	1	
> +1	SIMPLE	t2	range	uid_index	uid_index	4	NULL	1	Using where
> +1	SIMPLE	t1	ref	uid_index	uid_index	4	test.t2.uid	1	
>  explain select * from t1, t2  where t1.uid=t2.uid AND t1.uid != 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> -1	SIMPLE	t1	range	uid_index	uid_index	4	NULL	2	Using where
> -1	SIMPLE	t2	ref	uid_index	uid_index	4	test.t1.uid	1	
> +1	SIMPLE	t2	range	uid_index	uid_index	4	NULL	2	Using where
> +1	SIMPLE	t1	ref	uid_index	uid_index	4	test.t2.uid	1	
>  explain select * from t1, t2  where t1.uid=t2.uid AND t2.uid != 0;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> -1	SIMPLE	t1	range	uid_index	uid_index	4	NULL	2	Using where
> -1	SIMPLE	t2	ref	uid_index	uid_index	4	test.t1.uid	1	
> +1	SIMPLE	t2	range	uid_index	uid_index	4	NULL	2	Using where
> +1	SIMPLE	t1	ref	uid_index	uid_index	4	test.t2.uid	1	
>  select * from t1, t2  where t1.uid=t2.uid AND t1.uid > 0;
>  id	name	uid	id	name	uid
>  1001	A	1	1001	A	1
> 
> === modified file 'mysql-test/suite/pbxt/r/select.result'
> --- a/mysql-test/suite/pbxt/r/select.result	2010-09-28 19:39:33 +0000
> +++ b/mysql-test/suite/pbxt/r/select.result	2010-10-08 19:30:16 +0000
> @@ -1437,7 +1437,7 @@
>  explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t4	index	NULL	PRIMARY	1	NULL	12	Using index; Using temporary
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1200	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	1200	Using where; Using join buffer (flat, BNL join)
>  select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
>  fld1	companynr	fld3	period
>  038008	37	reporters	1008
> @@ -2723,7 +2723,7 @@
>  t2.b like '%%' order by t2.b limit 0,1;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ref	b,c	b	5	const	1	Using temporary; Using filesort
> -1	SIMPLE	t3	index	PRIMARY,a,b	PRIMARY	8	NULL	2	Using index; Using join buffer
> +1	SIMPLE	t3	index	PRIMARY,a,b	PRIMARY	8	NULL	2	Using index; Using join buffer (flat, BNL join)
>  1	SIMPLE	t2	ALL	PRIMARY	NULL	NULL	NULL	2	Range checked for each record (index map: 0x1)
>  DROP TABLE t1,t2,t3;
>  CREATE TABLE t1 (a int, INDEX idx(a));
> @@ -2746,7 +2746,7 @@
>  EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	b	b	5	NULL	2	Using index
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  a	b	a	b
>  1	NULL	1	1
> @@ -2756,7 +2756,7 @@
>  EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	index	b	b	5	NULL	2	Using index
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
>  a	b	a	b
>  1	NULL	1	1
> @@ -2910,11 +2910,11 @@
>  EXPLAIN SELECT t1.a FROM t1 STRAIGHT_JOIN t2 ON t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
> -1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer
> +1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where; Using join buffer (flat, BNL join)
>  EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
> -1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  DROP TABLE t1,t2;
>  select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
>  x'10' + 0	X'10' + 0	b'10' + 0	B'10' + 0
> 
> === modified file 'mysql-test/suite/pbxt/r/subselect.result'
> --- a/mysql-test/suite/pbxt/r/subselect.result	2010-10-02 16:46:27 +0000
> +++ b/mysql-test/suite/pbxt/r/subselect.result	2010-10-08 19:30:16 +0000
> @@ -906,7 +906,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t1	index	NULL	PRIMARY	4	NULL	4	100.00	Using index
>  2	DEPENDENT SUBQUERY	t2	ref_or_null	a	a	5	func	2	100.00	Using index
> -2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer
> +2	DEPENDENT SUBQUERY	t3	ALL	NULL	NULL	NULL	NULL	3	100.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t1`.`a` AS `a`,<in_optimizer>(`test`.`t1`.`a`,<exists>(select 1 from `test`.`t2` join `test`.`t3` where ((`test`.`t3`.`a` = `test`.`t2`.`a`) and ((<cache>(`test`.`t1`.`a`) = `test`.`t2`.`a`) or isnull(`test`.`t2`.`a`))) having <is_not_null_test>(`test`.`t2`.`a`))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from `test`.`t1`
>  drop table t1,t2,t3;
> @@ -1296,7 +1296,7 @@
>  explain extended select * from t2 where t2.a in (select a from t1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	index	PRIMARY	PRIMARY	4	NULL	4	75.00	Using where; Using index; Using join buffer
> +1	PRIMARY	t1	index	PRIMARY	PRIMARY	4	NULL	4	75.00	Using where; Using index; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where (`test`.`t1`.`a` = `test`.`t2`.`a`)
>  select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
> @@ -1306,7 +1306,7 @@
>  explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer (flat, BNL join)
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t2` where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t1`.`b` <> 30))
>  select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
> @@ -1316,7 +1316,7 @@
>  explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
>  1	PRIMARY	t2	index	PRIMARY	PRIMARY	4	NULL	4	100.00	Using index
> -1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	PRIMARY	NULL	NULL	NULL	4	75.00	Using where; Using join buffer (flat, BNL join)
>  1	PRIMARY	t3	eq_ref	PRIMARY	PRIMARY	4	test.t1.b	1	100.00	Using index
>  Warnings:
>  Note	1003	select `test`.`t2`.`a` AS `a` from `test`.`t1` join `test`.`t3` join `test`.`t2` where ((`test`.`t1`.`a` = `test`.`t2`.`a`) and (`test`.`t3`.`a` = `test`.`t1`.`b`))
> @@ -3554,7 +3554,7 @@
>  ORDER BY t1.t DESC LIMIT 1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t2	ALL	NULL	NULL	NULL	NULL	1	
> -1	PRIMARY	t1	index	NULL	PRIMARY	16	NULL	11	Using where; Using index; Using join buffer
> +1	PRIMARY	t1	index	NULL	PRIMARY	16	NULL	11	Using where; Using index; Using join buffer (flat, BNL join)
>  2	DEPENDENT SUBQUERY	t1	ref	PRIMARY	PRIMARY	8	test.t2.i1,const	1	Using where; Using index; Using filesort
>  SELECT * FROM t1,t2
>  WHERE t1.t = (SELECT t1.t FROM t1 
> 
> === modified file 'mysql-test/suite/pbxt/r/union.result'
> --- a/mysql-test/suite/pbxt/r/union.result	2009-12-16 09:28:51 +0000
> +++ b/mysql-test/suite/pbxt/r/union.result	2010-10-08 19:30:16 +0000
> @@ -500,7 +500,7 @@
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE noticed after reading const tables
>  2	UNION	t1	index	PRIMARY	PRIMARY	4	NULL	4	Using index
> -2	UNION	t2	index	PRIMARY	PRIMARY	4	NULL	4	Using where; Using index; Using join buffer
> +2	UNION	t2	index	PRIMARY	PRIMARY	4	NULL	4	Using where; Using index; Using join buffer (flat, BNL join)
>  NULL	UNION RESULT	<union1,2>	ALL	NULL	NULL	NULL	NULL	NULL	
>  explain (select * from t1 where a=1) union (select * from t1 where b=1);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
> 
> === modified file 'mysql-test/suite/vcol/r/vcol_misc.result'
> --- a/mysql-test/suite/vcol/r/vcol_misc.result	2010-10-02 16:46:27 +0000
> +++ b/mysql-test/suite/vcol/r/vcol_misc.result	2010-10-08 19:30:16 +0000
> @@ -10,7 +10,7 @@
>  select * from t1,t2 where t1.b=t2.c and d <= 100;
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
> -1	SIMPLE	t2	ref	idx	idx	5	test.t1.b	2	Using where; Using join buffer
> +1	SIMPLE	t2	ref	idx	idx	5	test.t1.b	2	Using where; Using join buffer (flat, BKA join)
>  select * from t1,t2 where t1.b=t2.c and d <= 100;
>  a	b	c	d	v
>  4	20	20	100	101
> 
> === modified file 'mysql-test/suite/vcol/r/vcol_select_innodb.result'
> --- a/mysql-test/suite/vcol/r/vcol_select_innodb.result	2010-06-26 19:33:16 +0000
> +++ b/mysql-test/suite/vcol/r/vcol_select_innodb.result	2010-10-08 19:30:16 +0000
> @@ -64,7 +64,7 @@
>  explain select * from t1 where b in (select c from t3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t3	index	c	c	5	NULL	3	Using index
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  # select_type=PRIMARY, type=range,ref
>  select * from t1 where c in (select c from t3 where c between -2 and -1);
>  a	b	c
> 
> === modified file 'mysql-test/suite/vcol/r/vcol_select_myisam.result'
> --- a/mysql-test/suite/vcol/r/vcol_select_myisam.result	2010-06-26 19:33:16 +0000
> +++ b/mysql-test/suite/vcol/r/vcol_select_myisam.result	2010-10-08 19:30:16 +0000
> @@ -64,7 +64,7 @@
>  explain select * from t1 where b in (select c from t3);
>  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
>  1	PRIMARY	t3	index	c	c	5	NULL	3	Using index
> -1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer
> +1	PRIMARY	t1	ALL	NULL	NULL	NULL	NULL	5	Using where; Using join buffer (flat, BNL join)
>  # select_type=PRIMARY, type=range,ref
>  select * from t1 where c in (select c from t3 where c between -2 and -1);
>  a	b	c
> 
> === modified file 'sql/sql_join_cache.cc'
> --- a/sql/sql_join_cache.cc	2010-10-06 20:27:12 +0000
> +++ b/sql/sql_join_cache.cc	2010-10-08 19:30:16 +0000
> @@ -2372,6 +2372,54 @@
>    return rc;
>  }
>  
> +
> +/*
> +  Add a comment on the join algorithm employed by the join cache 
> +
> +  SYNOPSIS
> +    print_explain_comment()
> +      str  string to add the comment on the employed join algorithm to
> +
> +  DESCRIPTION
> +    This function adds info on the type of the used join buffer (flat or
> +    incremental) and on the type of the the employed join algorithm (BNL,
> +    BNLH, BKA or BKAH) to the the end of the sring str.
> +
> +  RETURN VALUE
> +    none
> +*/ 
> +
> +void JOIN_CACHE::print_explain_comment(String *str)
> +{
> +  str->append(STRING_WITH_LEN(" ("));
> +  const char *buffer_type= prev_cache ? "incremental" : "flat";
> +  str->append(buffer_type);
> +  str->append(STRING_WITH_LEN(", "));
> +  
> +  const char *join_alg;
> +  switch (get_join_alg()) {
> +  case BNL_JOIN_ALG:
> +    join_alg= "BNL";
> +    break;
> +  case BNLH_JOIN_ALG:
> +    join_alg= "BNLH";
> +    break;
> +  case BKA_JOIN_ALG:
> +    join_alg= "BKA";
> +    break;
> +  case BKAH_JOIN_ALG:
> +    join_alg= "BKAH";
> +    break;
> +  default:
> +    DBUG_ASSERT(0);
> +  }
> +
> +  str->append(join_alg);
> +  str->append(STRING_WITH_LEN(" join"));
> +  str->append(STRING_WITH_LEN(")"));
> + }
> +   
> +
>  /* 
>    Initialize a hashed join cache       
>  
> 
> === modified file 'sql/sql_select.cc'
> --- a/sql/sql_select.cc	2010-10-06 20:27:12 +0000
> +++ b/sql/sql_select.cc	2010-10-08 19:30:16 +0000
> @@ -7644,9 +7644,8 @@
>    case JT_ALL:
>      if (cache_level == 1)
>        prev_cache= 0;
> -    if ((options & SELECT_DESCRIBE) ||
> -        (((tab->cache= new JOIN_CACHE_BNL(join, tab, prev_cache))) &&
> -         !tab->cache->init()))
> +    if ((tab->cache= new JOIN_CACHE_BNL(join, tab, prev_cache)) &&
> +        ((options & SELECT_DESCRIBE) || !tab->cache->init()))
>      {
>        *icp_other_tables_ok= FALSE;
>        return (2-test(!prev_cache));
> @@ -7670,9 +7669,8 @@
>      {
>        if (cache_level == 3)
>          prev_cache= 0;
> -      if ((options & SELECT_DESCRIBE) ||
> -	  ((tab->cache= new JOIN_CACHE_BNLH(join, tab, prev_cache)) &&
> -           !tab->cache->init()))
> +      if ((tab->cache= new JOIN_CACHE_BNLH(join, tab, prev_cache)) &&
> +          ((options & SELECT_DESCRIBE) || !tab->cache->init()))
>        {
>          *icp_other_tables_ok= FALSE;        
>          return (4-test(!prev_cache));
> @@ -7692,9 +7690,8 @@
>        {
>          if (cache_level == 5)
>            prev_cache= 0;
> -        if ((options & SELECT_DESCRIBE) ||
> -            ((tab->cache= new JOIN_CACHE_BKA(join, tab, flags, prev_cache)) &&
> -            !tab->cache->init()))
> +        if ((tab->cache= new JOIN_CACHE_BKA(join, tab, flags, prev_cache)) &&
> +            ((options & SELECT_DESCRIBE) || !tab->cache->init()))
>            return (6-test(!prev_cache));
>          goto no_join_cache;
>        }
> @@ -7702,9 +7699,8 @@
>        {
>          if (cache_level == 7)
>            prev_cache= 0;
> -        if ((options & SELECT_DESCRIBE) ||
> -            ((tab->cache= new JOIN_CACHE_BKAH(join, tab, flags, prev_cache)) &&
> -            !tab->cache->init()))
> +        if ((tab->cache= new JOIN_CACHE_BKAH(join, tab, flags, prev_cache)) &&
> +            ((options & SELECT_DESCRIBE) || !tab->cache->init()))
>  	{
>            *idx_cond_fact_out= FALSE;
>            return (8-test(!prev_cache));
> @@ -18923,8 +18919,11 @@
>            }
>          }
>  
> -        if (i > 0 && tab[-1].next_select == sub_select_cache)
> +        if (tab->cache)
> +	{
>            extra.append(STRING_WITH_LEN("; Using join buffer"));
> +          tab->cache->print_explain_comment(&extra);
> +        }
>          
>          /* Skip initial "; "*/
>          const char *str= extra.ptr();
> 
> === modified file 'sql/sql_select.h'
> --- a/sql/sql_select.h	2010-10-06 20:27:12 +0000
> +++ b/sql/sql_select.h	2010-10-08 19:30:16 +0000
> @@ -885,7 +885,50 @@
>    /* Check matching to a partial join record from the join buffer */
>    bool check_match(uchar *rec_ptr);
>  
> +  /* 
> +    This constructor creates an unlinked join cache. The cache is to be
> +    used to join table 'tab' to the result of joining the previous tables 
> +    specified by the 'j' parameter.
> +  */   
> +  JOIN_CACHE(JOIN *j, JOIN_TAB *tab)
> +  {
> +    join= j;
> +    join_tab= tab;
> +    prev_cache= next_cache= 0;
> +    buff= 0;
> +  }
> +
> +  /* 
> +    This constructor creates a linked join cache. The cache is to be
> +    used to join table 'tab' to the result of joining the previous tables 
> +    specified by the 'j' parameter. The parameter 'prev' specifies the previous
> +    cache object to which this cache is linked.
> +  */   
> +  JOIN_CACHE(JOIN *j, JOIN_TAB *tab, JOIN_CACHE *prev)   
> +  {  
> +    join= j;
> +    join_tab= tab;
> +    next_cache= 0;
> +    prev_cache= prev;
> +    buff= 0;
> +    if (prev)
> +      prev->next_cache= this;
> +  }
> +
>  public:
> + 
> +  /*
> +    The enumeration type Join_algorithm includes a mnemonic constant for
> +    each join algorithm that employs join buffers
> +  */
> +
> +  enum Join_algorithm
> +  { 
> +    BNL_JOIN_ALG,     /* Block Nested Loop Join algorithm                  */
> +    BNLH_JOIN_ALG,    /* Block Nested Loop Hash Join algorithm             */
> +    BKA_JOIN_ALG,     /* Batched Key Access Join algorithm                 */
> +    BKAH_JOIN_ALG,    /* Batched Key Access with Hash Table Join Algorithm */
> +  };
>  
>    /* 
>      The enumeration type Match_flag describes possible states of the match flag
> @@ -926,6 +969,9 @@
>    /* Shrink the size if the cache join buffer in a given ratio */
>    bool shrink_join_buffer_in_ratio(ulonglong n, ulonglong d);
>  
> +  /*  Shall return the type of the employed join algorithm */
> +  virtual enum Join_algorithm get_join_alg()= 0;
> +
>    /* 
>      The function shall return TRUE only when there is a key access
>      to the join table
> @@ -971,6 +1017,9 @@
>    /* Join records from the join buffer with records from the next join table */ 
>    enum_nested_loop_state join_records(bool skip_last);
>  
> +  /* Add a comment on the join algorithm employed by the join cache */
> +  void print_explain_comment(String *str);
> +
>    virtual ~JOIN_CACHE() {}
>    void reset_join(JOIN *j) { join= j; }
>    void free()
> @@ -1241,6 +1290,22 @@
>    /* Reallocate the join buffer of a hashed join cache */
>    int realloc_buffer();
>  
> +  /* 
> +    This constructor creates an unlinked hashed join cache. The cache is to be
> +    used to join table 'tab' to the result of joining the previous tables 
> +    specified by the 'j' parameter.
> +  */   
> +  JOIN_CACHE_HASHED(JOIN *j, JOIN_TAB *tab) :JOIN_CACHE(j, tab) {}
> +
> +  /* 
> +    This constructor creates a linked hashed join cache. The cache is to be
> +    used to join table 'tab' to the result of joining the previous tables 
> +    specified by the 'j' parameter. The parameter 'prev' specifies the previous
> +    cache object to which this cache is linked.
> +  */   
> +  JOIN_CACHE_HASHED(JOIN *j, JOIN_TAB *tab, JOIN_CACHE *prev) 
> +		    :JOIN_CACHE(j, tab, prev) {}
> +
>  public:
>  
>    /* Initialize a hashed join cache */       
> @@ -1368,12 +1433,7 @@
>      used to join table 'tab' to the result of joining the previous tables 
>      specified by the 'j' parameter.
>    */   
> -  JOIN_CACHE_BNL(JOIN *j, JOIN_TAB *tab)
> -  { 
> -    join= j;
> -    join_tab= tab;
> -    prev_cache= next_cache= 0;
> -  }
> +  JOIN_CACHE_BNL(JOIN *j, JOIN_TAB *tab) :JOIN_CACHE(j, tab) {}
>  
>    /* 
>      This constructor creates a linked BNL join cache. The cache is to be 
> @@ -1381,19 +1441,14 @@
>      specified by the 'j' parameter. The parameter 'prev' specifies the previous
>      cache object to which this cache is linked.
>    */   
> -  JOIN_CACHE_BNL(JOIN *j, JOIN_TAB *tab, JOIN_CACHE *prev)
> -  { 
> -    join= j;
> -    join_tab= tab;
> -    prev_cache= prev;
> -    next_cache= 0;
> -    if (prev)
> -      prev->next_cache= this;
> -  }
> +  JOIN_CACHE_BNL(JOIN *j, JOIN_TAB *tab, JOIN_CACHE *prev) 
> +    :JOIN_CACHE(j, tab, prev) {}
>  
>    /* Initialize the BNL cache */       
>    int init();
>  
> +  enum Join_algorithm get_join_alg() { return BNL_JOIN_ALG; }
> +
>    bool is_key_access() { return FALSE; }
>  
>  };
> @@ -1445,12 +1500,7 @@
>      used to join table 'tab' to the result of joining the previous tables 
>      specified by the 'j' parameter.
>    */   
> -  JOIN_CACHE_BNLH(JOIN *j, JOIN_TAB *tab)
> -  { 
> -    join= j;
> -    join_tab= tab;
> -    prev_cache= next_cache= 0;
> -  }
> +  JOIN_CACHE_BNLH(JOIN *j, JOIN_TAB *tab) : JOIN_CACHE_HASHED(j, tab) {}
>  
>    /* 
>      This constructor creates a linked BNLH join cache. The cache is to be 
> @@ -1458,19 +1508,14 @@
>      specified by the 'j' parameter. The parameter 'prev' specifies the previous
>      cache object to which this cache is linked.
>    */   
> -  JOIN_CACHE_BNLH(JOIN *j, JOIN_TAB *tab, JOIN_CACHE *prev)
> -  { 
> -    join= j;
> -    join_tab= tab;
> -    prev_cache= prev;
> -    next_cache= 0;
> -    if (prev)
> -      prev->next_cache= this;
> -  }
> +  JOIN_CACHE_BNLH(JOIN *j, JOIN_TAB *tab, JOIN_CACHE *prev) 
> +    : JOIN_CACHE_HASHED(j, tab, prev) {}
>  
>    /* Initialize the BNLH cache */       
>    int init();
>  
> +  enum Join_algorithm get_join_alg() { return BNLH_JOIN_ALG; }
> +
>    bool is_key_access() { return TRUE; }
>  
>  };
> @@ -1583,13 +1628,7 @@
>      The MRR mode initially is set to 'flags'.
>    */   
>    JOIN_CACHE_BKA(JOIN *j, JOIN_TAB *tab, uint flags)
> -  { 
> -    join= j;
> -    join_tab= tab;
> -    prev_cache= next_cache= 0;
> -    mrr_mode= flags;
> -  }
> -
> +    :JOIN_CACHE(j, tab), mrr_mode(flags) {}
>    /* 
>      This constructor creates a linked BKA join cache. The cache is to be 
>      used to join table 'tab' to the result of joining the previous tables 
> @@ -1598,21 +1637,15 @@
>      The MRR mode initially is set to 'flags'.
>    */   
>    JOIN_CACHE_BKA(JOIN *j, JOIN_TAB *tab, uint flags, JOIN_CACHE *prev)
> -  { 
> -    join= j;
> -    join_tab= tab;
> -    prev_cache= prev;
> -    next_cache= 0;
> -    if (prev)
> -      prev->next_cache= this;
> -    mrr_mode= flags;
> -  }
> +    :JOIN_CACHE(j, tab, prev), mrr_mode(flags) {}
>    
>    uchar **get_curr_association_ptr() { return &curr_association; }
>  
>    /* Initialize the BKA cache */       
>    int init();
>  
> +  enum Join_algorithm get_join_alg() { return BKA_JOIN_ALG; }
> +
>    bool is_key_access() { return TRUE; }
>  
>    /* Get the key built over the next record from the join buffer */
> @@ -1688,10 +1721,8 @@
>      specified by the 'j' parameter.
>      The MRR mode initially is set to 'flags'.
>    */   
> -  JOIN_CACHE_BKAH(JOIN *j, JOIN_TAB *tab, uint flags) :JOIN_CACHE_BNLH(j, tab)
> -  { 
> -    mrr_mode= flags;
> -  }
> +  JOIN_CACHE_BKAH(JOIN *j, JOIN_TAB *tab, uint flags) 
> +    :JOIN_CACHE_BNLH(j, tab), mrr_mode(flags) {}
>  
>    /* 
>      This constructor creates a linked BKAH join cache. The cache is to be 
> @@ -1701,16 +1732,15 @@
>      The MRR mode initially is set to 'flags'.
>    */   
>    JOIN_CACHE_BKAH(JOIN *j, JOIN_TAB *tab, uint flags, JOIN_CACHE *prev)
> -    :JOIN_CACHE_BNLH(j, tab, prev)
> -  { 
> -    mrr_mode= flags;
> -  }
> +    :JOIN_CACHE_BNLH(j, tab, prev), mrr_mode(flags)  {}
>  
>    uchar **get_curr_association_ptr() { return &curr_matching_chain; }
>  
>    /* Initialize the BKAH cache */       
>    int init();
>  
> +  enum Join_algorithm get_join_alg() { return BKAH_JOIN_ALG; }
> +
>    /* Check index condition of the joined table for a record from BKAH cache */
>    bool skip_index_tuple(char *range_info);
>  };
> 

> _______________________________________________
> commits mailing list
> commits@xxxxxxxxxxx
> https://lists.askmonty.org/cgi-bin/mailman/listinfo/commits

-- 
BR
 Sergey
-- 
Sergey Petrunia, Software Developer
Monty Program AB, http://askmonty.org
Blog: http://s.petrunia.net/blog