List:Commits« Previous MessageNext Message »
From:Amit Bhattacharya Date:October 18 2012 5:03am
Subject:bzr push into mysql-5.6 branch (amit.bhattacharya:4499 to 4500)
View as plain text  
 4500 Amit Bhattacharya	2012-10-18
      Removing the files to fix the issues

    removed:
      mysql-test/include/multi_table_del_sj.inc
      mysql-test/include/multi_table_upd_sj.inc
      mysql-test/r/multi_table_upd_del_sj.result
      mysql-test/t/multi_table_upd_del_sj.test
 4499 Christopher Powers	2012-10-17
      Bug#14728422 CRASH WHEN TRUNCATING PERFORMANCE_SCHEMA TABLES AND P_S IS DISABLED
      
      If the Performance Schema is not initialized, then disable SELECT, INSERT, UPDATE,
      DELETE and TRUNCATE for all Performance Schema tables.
      
      Return an error for INSERT. Otherwise, no error is returned because target row(s)
      will not be found.

    modified:
      mysql-test/suite/perfschema/r/start_server_off.result
      mysql-test/suite/perfschema/t/start_server_off.test
      storage/perfschema/ha_perfschema.cc
=== removed file 'mysql-test/include/multi_table_del_sj.inc'
--- a/mysql-test/include/multi_table_del_sj.inc	2012-10-17 05:15:51 +0000
+++ b/mysql-test/include/multi_table_del_sj.inc	1970-01-01 00:00:00 +0000
@@ -1,114 +0,0 @@
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_1;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_2;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_3;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_4;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_6;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_7;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_8;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_9;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_10;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_11;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_12;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_13;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_14;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5c;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5d;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5e;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5f;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5g;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query6b;
-
-eval $queryd_1;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_2;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_3;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_4;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_5;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_6;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_7;
-eval $query_s2;
-ROLLBACK;
-eval $queryd_8;
-eval $query_s2;
-ROLLBACK;
-eval $queryd_9;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_10;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_11;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_12;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_13;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_14;
-eval $query_s5;
-ROLLBACK;
-
-eval $queryd_5a;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5b;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5c;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5d;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5e;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5f;
-eval $query5_s2;
-ROLLBACK;
-eval $queryd_5g;
-eval $query5_s2;
-ROLLBACK;
-
-eval $query6b;
-SELECT * FROM tb1;
-ROLLBACK;
-

=== removed file 'mysql-test/include/multi_table_upd_sj.inc'
--- a/mysql-test/include/multi_table_upd_sj.inc	2012-10-17 05:15:51 +0000
+++ b/mysql-test/include/multi_table_upd_sj.inc	1970-01-01 00:00:00 +0000
@@ -1,239 +0,0 @@
-# Adding the replace_column since the key length varies depending on the optimizer choice
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query1;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query4;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query6;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query7;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query8;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query9;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query10;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query11;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query12;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query13;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query14;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query15;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query16;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query17;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query18;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2c;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2d;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2e;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2f;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2g;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3c;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3d;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3e;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query4a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query4b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5c;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5d;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5e;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5f;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5g;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5h;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5i;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5j;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5k;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5l;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query6a;
-
-eval $query1;
-eval $query_s1;
-ROLLBACK;
-eval $query2;
-eval $query_s1;
-ROLLBACK;
-eval $query3;
-eval $query_s2;
-ROLLBACK;
-eval $query4;
-eval $query_s2;
-ROLLBACK;
-eval $query5;
-eval $query_s1;
-ROLLBACK;
-eval $query6;
-eval $query_s1;
-ROLLBACK;
-eval $query7;
-eval $query_s1;
-ROLLBACK;
-eval $query8;
-eval $query_s2;
-ROLLBACK;
-eval $query9;
-eval $query_s1;
-ROLLBACK;
-eval $query10;
-eval $query_s3;
-eval $query_s4;
-ROLLBACK;
-eval $query11;
-eval $query_s3;
-ROLLBACK;
-eval $query12;
-eval $query_s3;
-eval $query_s4;
-ROLLBACK;
-eval $query13;
-eval $query_s3;
-eval $query_s4;
-ROLLBACK;
-eval $query14;
-eval $query_s3;
-eval $query_s4;
-ROLLBACK;
-eval $query15;
-eval $query_s3;
-ROLLBACK;
-eval $query16;
-eval $query_s1;
-ROLLBACK;
-eval $query17;
-eval $query_s1;
-ROLLBACK;
-eval $query18;
-eval $query_s1;
-ROLLBACK;
-
-eval $query2a;
-eval $query2_s;
-ROLLBACK;
-eval $query2b;
-eval $query2_s;
-ROLLBACK;
-eval $query2c;
-eval $query2_s;
-ROLLBACK;
-eval $query2d;
-eval $query2_s;
-ROLLBACK;
-eval $query2e;
-eval $query2_s;
-ROLLBACK;
-eval $query2f;
-eval $query2_s;
-ROLLBACK;
-eval $query2g;
-eval $query2_s;
-ROLLBACK;
-
-eval $query3a;
-eval $query2_s;
-ROLLBACK;
-eval $query3b;
-eval $query2_s;
-ROLLBACK;
-eval $query3c;
-eval $query2_s;
-ROLLBACK;
-eval $query3d;
-eval $query2_s;
-ROLLBACK;
-eval $query3e;
-eval $query2_s;
-ROLLBACK;
-
-eval $query4a;
-eval $query4_s1;
-eval $query4_s2;
-ROLLBACK;
-eval $query4b;
-eval $query4_s1;
-eval $query4_s2;
-ROLLBACK;
-
-eval $query5a;
-eval $query5_s1;
-ROLLBACK;
-eval $query5b;
-eval $query5_s1;
-ROLLBACK;
-eval $query5c;
-eval $query5_s1;
-ROLLBACK;
-eval $query5d;
-eval $query5_s1;
-ROLLBACK;
-eval $query5e;
-eval $query5_s1;
-ROLLBACK;
-eval $query5f;
-eval $query5_s2;
-ROLLBACK;
-eval $query5g;
-eval $query5_s2;
-ROLLBACK;
-eval $query5h;
-eval $query5_s1;
-ROLLBACK;
-eval $query5i;
-eval $query5_s1;
-ROLLBACK;
-eval $query5j;
-eval $query5_s1;
-ROLLBACK;
-eval $query5k;
-eval $query5_s1;
-ROLLBACK;
-eval $query5l;
-eval $query5_s1;
-ROLLBACK;
-
-eval $query6a;
-SELECT * FROM tb1;
-ROLLBACK;
-

=== removed file 'mysql-test/r/multi_table_upd_del_sj.result'
--- a/mysql-test/r/multi_table_upd_del_sj.result	2012-10-17 05:15:51 +0000
+++ b/mysql-test/r/multi_table_upd_del_sj.result	1970-01-01 00:00:00 +0000
@@ -1,7075 +0,0 @@
-# Create the various tables required for testing this feature
-CREATE TABLE class(class_num INT NOT NULL PRIMARY KEY, class_name VARCHAR(20)) ENGINE=INNODB;
-CREATE TABLE student(stu_name VARCHAR(20) NOT NULL PRIMARY KEY, stu_city VARCHAR(20), stu_id INT) ENGINE=INNODB;
-CREATE TABLE roster(ros_num INT NOT NULL PRIMARY KEY, class_num INT, stu_name VARCHAR(20), FOREIGN KEY fk1(class_num) REFERENCES class(class_num), FOREIGN KEY fk2(stu_name) REFERENCES student(stu_name)) ENGINE=INNODB;
-INSERT INTO class VALUES(1,'math'),(2,'science'),(3,'history'),(4,'geog');
-INSERT INTO student VALUES('amit','bangalore',1),('ashu','hyderabad',2),('sumit','kota',2),('rajdeep','bbsr',4);
-INSERT INTO roster VALUES(1,3,'amit'),(2,4,'amit'),(3, 1, 'ashu'),(4,3,'ashu'),(5,1,'sumit'),(6,4,'sumit');
-CREATE TABLE ot1(a INT) ENGINE=INNODB;
-CREATE TABLE ot2(a INT) ENGINE=INNODB;
-CREATE TABLE ot3(a INT) ENGINE=INNODB;
-CREATE TABLE it1(a INT) ENGINE=INNODB;
-CREATE TABLE it2(a INT) ENGINE=INNODB;
-CREATE TABLE it3(a INT) ENGINE=INNODB;
-INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
-INSERT INTO ot2 VALUES(0),(2),(4),(6);
-INSERT INTO ot3 VALUES(0),(3),(6);
-INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
-INSERT INTO it2 VALUES(0),(2),(4),(6);
-INSERT INTO it3 VALUES(0),(3),(6);
-CREATE TABLE tx(c1 INT NOT NULL PRIMARY KEY, c2 INT) ENGINE=INNODB;
-CREATE TABLE ty(c1 INT, c2 INT, c3 VARCHAR(20) NOT NULL PRIMARY KEY, FOREIGN KEY fk1(c1) REFERENCES tx(c1)) ENGINE=INNODB;
-CREATE TABLE tz(c1 INT, c2 INT, c3 VARCHAR(20), FOREIGN KEY fk2(c3) REFERENCES ty(c3)) ENGINE=INNODB;
-INSERT INTO tx VALUES(1,1),(2,2),(3,3),(4,4),(5,5);
-INSERT INTO ty VALUES(1,1,'1 match tx'),(2,2,'2 match tx'),(4,4,'4 match tx');
-INSERT INTO tz VALUES(2,2,'2 match tx'),(4,4,'4 match tx');
-INSERT INTO tz VALUES(20,20,'2 match tx'),(40,40,'4 match tx');
-INSERT INTO tz VALUES(200,200,'2 match tx'),(400,400,'4 match tx');
-CREATE TABLE emp  (
-id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-fname VARCHAR(25) NOT NULL,
-lname VARCHAR(25) NOT NULL,
-store_id INT NOT NULL,
-dept_id INT NOT NULL,
-KEY(dept_id)
-) ENGINE=INNODB   
-PARTITION BY RANGE(id)  (
-PARTITION p0 VALUES LESS THAN (5),
-PARTITION p1 VALUES LESS THAN (10),
-PARTITION p2 VALUES LESS THAN (15),
-PARTITION p3 VALUES LESS THAN MAXVALUE
-);
-CREATE TABLE dept (
-dept_id INT NOT NULL,
-dept_name varchar(25) NOT NULL,
-KEY(dept_id)
-) ENGINE=INNODB
-PARTITION BY RANGE(dept_id) (
-PARTITION p0 VALUES LESS THAN (3),
-PARTITION p1 VALUES LESS THAN (6),
-PARTITION p3 VALUES LESS THAN MAXVALUE
-);
-INSERT INTO emp(fname, lname, store_id, dept_id) VALUES
-('Bob', 'Taylor', 3, 2), ('Frank', 'Williams', 1, 2), 
-('Ellen', 'Johnson', 3, 4), ('Jim', 'Smith', 2, 4),  
-('Mary', 'Jones', 1, 1), ('Linda', 'Black', 2, 3),
-('Ed', 'Jones', 2, 1), ('June', 'Wilson', 3, 1), 
-('Andy', 'Smith', 1, 3), ('Lou', 'Waters', 2, 4),  
-('Jill', 'Stone', 1, 4), ('Roger', 'White', 3, 2),
-('Howard', 'Andrews', 1, 2), ('Fred', 'Goldberg', 3, 3), 
-('Barbara', 'Brown', 2, 3), ('Alice', 'Rogers', 2, 2),  
-('Mark', 'Morgan', 3, 3), ('Karen', 'Cole', 3, 2);
-INSERT INTO dept VALUES
-(1,'admin'),(2, 'finance'),
-(3,'IT'),(4, 'security'),
-(5,'ref'),(6,'services');
-CREATE TABLE tb1(c1 TEXT(16), c2 TEXT(16)) ENGINE=INNODB;
-CREATE TABLE tb2(c1 TEXT(16)) ENGINE=INNODB;
-INSERT INTO tb1 VALUES(repeat('a',1000),repeat('b',1000));
-Warnings:
-Warning	1265	Data truncated for column 'c1' at row 1
-Warning	1265	Data truncated for column 'c2' at row 1
-INSERT INTO tb2 VALUES(repeat('a',1000));
-Warnings:
-Warning	1265	Data truncated for column 'c1' at row 1
-COMMIT;
-# The multi table UPDATE tests starts here
-# The optimizer_switch is set to default. We are verifying the various supported JOIN types for SEMI-JOIN
-SET optimizer_switch=default;
-SET GLOBAL innodb_stats_persistent=on;
-COMMIT;
-SET autocommit=off;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using index; LooseScan
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk2	fk2	23	NULL	#	#	Using index; LooseScan
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk2	fk2	23	test.roster.stu_name	#	#	Using index
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk2	fk2	23	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	fk2	fk2	23	test.roster.stu_name	#	#	Using index
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using index; LooseScan
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk2	fk2	23	NULL	#	#	Using index; LooseScan
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk2	fk2	23	test.roster.stu_name	#	#	Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using index; LooseScan
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery3>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	<subquery3>.a	#	#	NULL
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-3	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery3>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	<subquery3>.a	#	#	NULL
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-3	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery3>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(ot1)
-1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-3	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using index; LooseScan
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	PRIMARY,fk1	fk1	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(tx); Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-2	MATERIALIZED	ty	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; FirstMatch(dept)
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; FirstMatch(dept)
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.emp.dept_id	#	#	NULL
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using where
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.emp.dept_id	#	#	NULL
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(tb2); Using join buffer (Block Nested Loop)
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	Junk
-4	Junk
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	not SET	not SET	500	2
-3	not SET	not SET	500	4
-4	not SET	not SET	500	4
-5	not SET	not SET	500	1
-6	not SET	not SET	500	3
-7	not SET	not SET	500	1
-8	not SET	not SET	500	1
-9	not SET	not SET	500	3
-10	not SET	not SET	500	4
-11	not SET	not SET	500	4
-12	not SET	not SET	500	2
-13	not SET	not SET	500	2
-14	not SET	not SET	500	3
-15	not SET	not SET	500	3
-16	not SET	not SET	500	2
-17	not SET	not SET	500	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	geography
-ROLLBACK;
-# The following queries would select Firstmatch based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='semijoin=on,firstmatch=on,materialization=off,loosescan=off,index_condition_pushdown=off,mrr=off';
-COMMIT;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index; FirstMatch(roster)
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; FirstMatch(student)
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(it3)
-1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	PRIMARY,fk1	fk1	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(tx); Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(dept)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; End temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(dept)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; FirstMatch(dept)
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; FirstMatch(dept)
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(emp)
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using where; End temporary
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(emp)
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(tb2); Using join buffer (Block Nested Loop)
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	Junk
-4	Junk
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	not SET	not SET	500	2
-3	not SET	not SET	500	4
-4	not SET	not SET	500	4
-5	not SET	not SET	500	1
-6	not SET	not SET	500	3
-7	not SET	not SET	500	1
-8	not SET	not SET	500	1
-9	not SET	not SET	500	3
-10	not SET	not SET	500	4
-11	not SET	not SET	500	4
-12	not SET	not SET	500	2
-13	not SET	not SET	500	2
-14	not SET	not SET	500	3
-15	not SET	not SET	500	3
-16	not SET	not SET	500	2
-17	not SET	not SET	500	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	geography
-ROLLBACK;
-# The following queries would select Materialize based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='semijoin=on,loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,materialization=on';
-COMMIT;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.class.class_num	#	#	NULL
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.class.class_num	#	#	NULL
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	23	test.student.stu_name	#	#	NULL
-2	MATERIALIZED	roster	index	fk2	fk2	23	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	23	test.student.stu_name	#	#	NULL
-2	MATERIALIZED	roster	index	fk2	fk2	23	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.class.class_num	#	#	NULL
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.class.class_num	#	#	NULL
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.roster.class_num	#	#	NULL
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	23	test.student.stu_name	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-2	MATERIALIZED	roster	index	fk2	fk2	23	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.class.class_num	#	#	NULL
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery3>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	<subquery3>.a	#	#	NULL
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-3	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery3>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	<subquery3>.a	#	#	NULL
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-3	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	it3	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.class.class_num	#	#	NULL
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.class.class_num	#	#	NULL
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.class.class_num	#	#	NULL
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	roster	index	fk1	fk1	5	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	PRIMARY,fk1	fk1	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	<subquery2>.c2	#	#	Using index
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-2	MATERIALIZED	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-2	MATERIALIZED	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	<subquery3>	eq_ref	<auto_key>	<auto_key>	5	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-3	MATERIALIZED	tz	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	<subquery2>.c2	#	#	NULL
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-2	MATERIALIZED	ty	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.emp.dept_id	#	#	NULL
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; End temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.emp.dept_id	#	#	NULL
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	Using index
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	Using index
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.emp.dept_id	#	#	NULL
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	Using index
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	Using where
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	<subquery2>.dept_id	#	#	Using index
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	4	test.emp.dept_id	#	#	NULL
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	dept	index	dept_id	dept_id	4	NULL	#	#	Using index
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	tb2	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	Junk
-4	Junk
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	not SET	not SET	500	2
-3	not SET	not SET	500	4
-4	not SET	not SET	500	4
-5	not SET	not SET	500	1
-6	not SET	not SET	500	3
-7	not SET	not SET	500	1
-8	not SET	not SET	500	1
-9	not SET	not SET	500	3
-10	not SET	not SET	500	4
-11	not SET	not SET	500	4
-12	not SET	not SET	500	2
-13	not SET	not SET	500	2
-14	not SET	not SET	500	3
-15	not SET	not SET	500	3
-16	not SET	not SET	500	2
-17	not SET	not SET	500	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	geography
-ROLLBACK;
-# The following queries would select Loosescan strategy based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='loosescan=on,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using index; LooseScan
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk2	fk2	23	NULL	#	#	Using index; LooseScan
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk2	fk2	23	test.roster.stu_name	#	#	Using index
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk2	fk2	23	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	fk2	fk2	23	test.roster.stu_name	#	#	Using index
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using index; LooseScan
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk2	fk2	23	NULL	#	#	Using index; LooseScan
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk2	fk2	23	test.roster.stu_name	#	#	Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using index; LooseScan
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using index; LooseScan
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	PRIMARY,fk1	fk1	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using where
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	Junk
-4	Junk
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	not SET	not SET	500	2
-3	not SET	not SET	500	4
-4	not SET	not SET	500	4
-5	not SET	not SET	500	1
-6	not SET	not SET	500	3
-7	not SET	not SET	500	1
-8	not SET	not SET	500	1
-9	not SET	not SET	500	3
-10	not SET	not SET	500	4
-11	not SET	not SET	500	4
-12	not SET	not SET	500	2
-13	not SET	not SET	500	2
-14	not SET	not SET	500	3
-15	not SET	not SET	500	3
-16	not SET	not SET	500	2
-17	not SET	not SET	500	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	geography
-ROLLBACK;
-# The following queries would select Duplicate Weedout strategy based on the optimizer switch settings
-SET optimizer_switch='loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index; End temporary
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk2	fk2	23	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	roster	ref	fk2	fk2	23	test.roster.stu_name	#	#	Using index; End temporary
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index; End temporary
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	roster	ref	fk1	fk1	5	test.roster.class_num	#	#	Using index; End temporary
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; Start temporary
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; End temporary
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	it3	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ot1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	it1	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot3	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	ot2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	PRIMARY	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk1	fk1	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	PRIMARY,fk1	fk1	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index; End temporary
-1	SIMPLE	tz	index	NULL	fk2	23	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	PRIMARY	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	NULL
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	End temporary
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; End temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using where; End temporary
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	dept	index	NULL	dept_id	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-SET student.stu_city='kolkata' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	kolkata	1
-ashu	kolkata	2
-rajdeep	bbsr	4
-sumit	kolkata	2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-SET class.class_name='geography' 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111 
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-SET ot1.a = 111, ot2.a = 222 
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-SET ot1.a = 111, ot2.a = 222 
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-SET ot1.a = 111 
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num	class_name
-1	geography
-2	science
-3	geography
-4	geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100 
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1	c2
-1	1
-2	100
-3	3
-4	100
-5	5
-ROLLBACK;
-UPDATE tx,ty,tz 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-SET tx.c2=100,tz.c2=101 
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1	c2
-1	100
-2	100
-3	3
-4	100
-5	5
-SELECT * FROM tz;
-c1	c2	c3
-2	101	2 match tx
-4	101	4 match tx
-20	101	2 match tx
-40	101	4 match tx
-200	101	2 match tx
-400	101	4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-SET dept.dept_name = 'Junk' 
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id	dept_name
-1	Junk
-2	Junk
-3	Junk
-4	Junk
-5	ref
-6	services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	not SET	not SET	500	2
-3	not SET	not SET	500	4
-4	not SET	not SET	500	4
-5	not SET	not SET	500	1
-6	not SET	not SET	500	3
-7	not SET	not SET	500	1
-8	not SET	not SET	500	1
-9	not SET	not SET	500	3
-10	not SET	not SET	500	4
-11	not SET	not SET	500	4
-12	not SET	not SET	500	2
-13	not SET	not SET	500	2
-14	not SET	not SET	500	3
-15	not SET	not SET	500	3
-16	not SET	not SET	500	2
-17	not SET	not SET	500	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	not SET	not SET	500	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	not SET	not SET	500	2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-SET emp.store_id = 500 
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	500	2
-2	Frank	Williams	500	2
-3	Ellen	Johnson	500	4
-4	Jim	Smith	500	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	500	4
-11	Jill	Stone	500	4
-12	Roger	White	500	2
-13	Howard	Andrews	500	2
-14	Fred	Goldberg	500	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-5	Mary	Jones	500	1
-6	Linda	Black	500	3
-7	Ed	Jones	500	1
-8	June	Wilson	500	1
-9	Andy	Smith	500	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	500	3
-16	Alice	Rogers	500	2
-17	Mark	Morgan	500	3
-18	Karen	Cole	500	2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-SET tb1.c2='geography' 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	geography
-ROLLBACK;
-ALTER TABLE roster DROP FOREIGN KEY roster_ibfk_1;
-ALTER TABLE roster DROP FOREIGN KEY roster_ibfk_2;
-ALTER TABLE roster DROP PRIMARY KEY;
-ALTER TABLE class DROP PRIMARY KEY;
-ALTER TABLE student DROP PRIMARY KEY;
-ALTER TABLE roster ADD KEY(class_num);
-ANALYZE TABLE roster,class,student,emp,dept;
-Table	Op	Msg_type	Msg_text
-test.roster	analyze	status	OK
-test.class	analyze	status	OK
-test.student	analyze	status	OK
-test.emp	analyze	status	OK
-test.dept	analyze	status	OK
-# The multi table DELETE tests starts here
-# The optimizer_switch is set to default. We are verifying the various supported JOIN types for SEMI-JOIN 
-SET optimizer_switch=default;
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	class_num	class_num	5	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	class_num	class_num	5	test.roster.class_num	#	#	Using index
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; FirstMatch(student)
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	fk2,class_num	fk2	23	test.student.stu_name	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; FirstMatch(roster)
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	NULL
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	NULL
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	NULL
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	PRIMARY,fk1	fk1	5	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index; End temporary
-1	SIMPLE	tz	ref	fk2	fk2	23	test.ty.c3	#	#	NULL
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Start temporary
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	ref	fk1	fk1	5	test.tx.c2	#	#	Using index
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.tx.c2	#	#	Using index; End temporary
-1	SIMPLE	tx	index	NULL	PRIMARY	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(tb2); Using join buffer (Block Nested Loop)
-DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-rajdeep	bbsr	4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	bangalore	1
-ashu	hyderabad	2
-rajdeep	bbsr	4
-sumit	kota	2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-ROLLBACK;
-# The following queries would select Firstmatch based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET GLOBAL innodb_stats_persistent=on;
-SET optimizer_switch='semijoin=on,firstmatch=on,materialization=off,loosescan=off,index_condition_pushdown=off,mrr=off';
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	class_num	class_num	5	NULL	#	#	Using where; Using index
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	class_num	class_num	5	test.roster.class_num	#	#	Using index; FirstMatch(class)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; FirstMatch(class)
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; FirstMatch(student)
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk2,class_num	fk2	23	test.student.stu_name	#	#	Using where
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where; FirstMatch(tx)
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where; FirstMatch(tx)
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index; FirstMatch(tx)
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index; FirstMatch(tx)
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	ty	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(tx); Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	index	NULL	PRIMARY	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(emp)
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; FirstMatch(tb2); Using join buffer (Block Nested Loop)
-DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-rajdeep	bbsr	4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	bangalore	1
-ashu	hyderabad	2
-rajdeep	bbsr	4
-sumit	kota	2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-ROLLBACK;
-# The following queries would select Materialize based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='semijoin=on,loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,materialization=on';
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	class_num	class_num	5	NULL	#	#	Using where; Using index
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.roster.class_num	#	#	NULL
-2	MATERIALIZED	roster	index	class_num	class_num	5	NULL	#	#	Using index
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; Start temporary
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk2,class_num	fk2	23	test.student.stu_name	#	#	Using where
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ty.c1	#	#	NULL
-2	MATERIALIZED	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where
-2	MATERIALIZED	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ty.c1	#	#	NULL
-2	MATERIALIZED	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where
-2	MATERIALIZED	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ty.c1	#	#	NULL
-2	MATERIALIZED	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where
-2	MATERIALIZED	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	<subquery2>	eq_ref	<auto_key>	<auto_key>	5	test.ty.c1	#	#	NULL
-2	MATERIALIZED	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where
-2	MATERIALIZED	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ty	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	index	NULL	PRIMARY	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	<subquery2>	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-2	MATERIALIZED	tb2	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-rajdeep	bbsr	4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	bangalore	1
-ashu	hyderabad	2
-rajdeep	bbsr	4
-sumit	kota	2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-ROLLBACK;
-# The following queries would select Loosescan strategy based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='loosescan=on,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	class_num	class_num	5	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	roster	ref	class_num	class_num	5	test.roster.class_num	#	#	Using index
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; Start temporary
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk2,class_num	fk2	23	test.student.stu_name	#	#	Using where
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ty	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	index	NULL	PRIMARY	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using where; Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; LooseScan
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-rajdeep	bbsr	4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	bangalore	1
-ashu	hyderabad	2
-rajdeep	bbsr	4
-sumit	kota	2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-ROLLBACK;
-# The following queries would select Duplicate Weedout strategy based on the optimizer switch settings
-SET optimizer_switch='loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	roster	index	class_num	class_num	5	NULL	#	#	Using where; Using index; Start temporary
-1	SIMPLE	roster	ref	class_num	class_num	5	test.roster.class_num	#	#	Using index; End temporary
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	class_num	class_num	5	test.class.class_num	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	roster	index	NULL	class_num	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; Start temporary
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	student	ALL	NULL	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	class	ALL	NULL	NULL	NULL	NULL	#	#	Using join buffer (Block Nested Loop)
-1	SIMPLE	roster	ref	fk2,class_num	fk2	23	test.student.stu_name	#	#	Using where
-1	SIMPLE	roster	ref	fk2	fk2	23	test.student.stu_name	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	Using where
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using where; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	fk2	NULL	NULL	NULL	#	#	Using where; Start temporary
-1	SIMPLE	ty	eq_ref	PRIMARY,fk1	PRIMARY	22	test.tz.c3	#	#	NULL
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	ty	ALL	fk1	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ty	index	NULL	fk1	5	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	ty	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c2	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tz	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	ty	index	fk1	fk1	5	NULL	#	#	Using where; Using index; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	eq_ref	PRIMARY	PRIMARY	4	test.ty.c1	#	#	Using index
-1	SIMPLE	tx	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-1	SIMPLE	tx	index	NULL	PRIMARY	4	NULL	#	#	Using index; Using join buffer (Block Nested Loop)
-Warnings:
-Note	1276	Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	Using where
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	emp	ALL	dept_id	NULL	NULL	NULL	#	#	NULL
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index; Start temporary; End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.emp.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	dept	index	dept_id	dept_id	4	NULL	#	#	Using index; Start temporary
-1	SIMPLE	emp	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	End temporary
-1	SIMPLE	dept	ref	dept_id	dept_id	4	test.dept.dept_id	#	#	Using index
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra
-1	SIMPLE	tb1	ALL	NULL	NULL	NULL	NULL	#	#	Start temporary
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; Using join buffer (Block Nested Loop)
-1	SIMPLE	tb2	ALL	NULL	NULL	NULL	NULL	#	#	Using where; End temporary; Using join buffer (Block Nested Loop)
-DELETE class FROM class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-ON class.class_num=roster.class_num 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE class FROM class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE FROM class USING class, roster 
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num	class_name
-2	science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster 
-ON student.stu_name=roster.stu_name 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-rajdeep	bbsr	4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class 
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name	stu_city	stu_id
-amit	bangalore	1
-ashu	hyderabad	2
-rajdeep	bbsr	4
-sumit	kota	2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty 
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-2	2	2 match tx
-20	20	2 match tx
-200	200	2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty 
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz 
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1	c2	c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-15	Barbara	Brown	2	3
-16	Alice	Rogers	2	2
-17	Mark	Morgan	3	3
-18	Karen	Cole	3	2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-1	Bob	Taylor	3	2
-2	Frank	Williams	1	2
-3	Ellen	Johnson	3	4
-4	Jim	Smith	2	4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-5	Mary	Jones	1	1
-6	Linda	Black	2	3
-7	Ed	Jones	2	1
-8	June	Wilson	3	1
-9	Andy	Smith	1	3
-10	Lou	Waters	2	4
-11	Jill	Stone	1	4
-12	Roger	White	3	2
-13	Howard	Andrews	1	2
-14	Fred	Goldberg	3	3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id	fname	lname	store_id	dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-ON emp.dept_id = dept.dept_id 
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id	dept_name
-1	admin
-2	finance
-3	IT
-4	security
-5	ref
-6	services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2 
-ON tb1.c1=tb2.c1 
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1	c2
-ROLLBACK;
-# Drop the tables that were created
-DROP TABLE tz;
-DROP TABLE ty;
-DROP TABLE tx;
-DROP TABLE ot1;
-DROP TABLE ot2;
-DROP TABLE ot3;
-DROP TABLE it1;
-DROP TABLE it2;
-DROP TABLE it3;
-DROP TABLE roster;
-DROP TABLE student;
-DROP TABLE class;
-DROP TABLE tb1;
-DROP TABLE tb2;
-DROP TABLE emp;
-DROP TABLE dept;
-SET optimizer_switch=default;
-COMMIT;

=== removed file 'mysql-test/t/multi_table_upd_del_sj.test'
--- a/mysql-test/t/multi_table_upd_del_sj.test	2012-10-17 05:15:51 +0000
+++ b/mysql-test/t/multi_table_upd_del_sj.test	1970-01-01 00:00:00 +0000
@@ -1,505 +0,0 @@
-##### This test is intended to verify that the optimizer chooses one of the #####
-##### semijoin strategies while executing a multi table UPDATE or DELETE    #####
-##### statement. The test cases added below verifies that the optimizer uses#####
-##### semi-join strategy for certain statements which have supported JOIN   #####
-##### syntax.								    #####
-##### Test case name : multi_table_upd_del_sj.test			    #####
-
---source include/not_valgrind.inc
---source include/not_embedded.inc
---source include/have_semijoin.inc
---source include/have_materialization.inc
---source include/have_firstmatch.inc
---source include/have_loosescan.inc
---source include/have_index_condition_pushdown.inc
---source include/have_mrr.inc
-
---echo # Create the various tables required for testing this feature
-CREATE TABLE class(class_num INT NOT NULL PRIMARY KEY, class_name VARCHAR(20)) ENGINE=INNODB;
-CREATE TABLE student(stu_name VARCHAR(20) NOT NULL PRIMARY KEY, stu_city VARCHAR(20), stu_id INT) ENGINE=INNODB;
-CREATE TABLE roster(ros_num INT NOT NULL PRIMARY KEY, class_num INT, stu_name VARCHAR(20), FOREIGN KEY fk1(class_num) REFERENCES class(class_num), FOREIGN KEY fk2(stu_name) REFERENCES student(stu_name)) ENGINE=INNODB;
-INSERT INTO class VALUES(1,'math'),(2,'science'),(3,'history'),(4,'geog');
-INSERT INTO student VALUES('amit','bangalore',1),('ashu','hyderabad',2),('sumit','kota',2),('rajdeep','bbsr',4);
-INSERT INTO roster VALUES(1,3,'amit'),(2,4,'amit'),(3, 1, 'ashu'),(4,3,'ashu'),(5,1,'sumit'),(6,4,'sumit');
-
-CREATE TABLE ot1(a INT) ENGINE=INNODB;
-CREATE TABLE ot2(a INT) ENGINE=INNODB;
-CREATE TABLE ot3(a INT) ENGINE=INNODB;
-CREATE TABLE it1(a INT) ENGINE=INNODB;
-CREATE TABLE it2(a INT) ENGINE=INNODB;
-CREATE TABLE it3(a INT) ENGINE=INNODB;
-
-INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
-INSERT INTO ot2 VALUES(0),(2),(4),(6);
-INSERT INTO ot3 VALUES(0),(3),(6);
-INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
-INSERT INTO it2 VALUES(0),(2),(4),(6);
-INSERT INTO it3 VALUES(0),(3),(6);
-
-CREATE TABLE tx(c1 INT NOT NULL PRIMARY KEY, c2 INT) ENGINE=INNODB;
-CREATE TABLE ty(c1 INT, c2 INT, c3 VARCHAR(20) NOT NULL PRIMARY KEY, FOREIGN KEY fk1(c1) REFERENCES tx(c1)) ENGINE=INNODB;
-CREATE TABLE tz(c1 INT, c2 INT, c3 VARCHAR(20), FOREIGN KEY fk2(c3) REFERENCES ty(c3)) ENGINE=INNODB;
-
-INSERT INTO tx VALUES(1,1),(2,2),(3,3),(4,4),(5,5);
-INSERT INTO ty VALUES(1,1,'1 match tx'),(2,2,'2 match tx'),(4,4,'4 match tx');
-INSERT INTO tz VALUES(2,2,'2 match tx'),(4,4,'4 match tx'); 
-INSERT INTO tz VALUES(20,20,'2 match tx'),(40,40,'4 match tx');
-INSERT INTO tz VALUES(200,200,'2 match tx'),(400,400,'4 match tx');
-
-CREATE TABLE emp  (
-    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-    fname VARCHAR(25) NOT NULL,
-    lname VARCHAR(25) NOT NULL,
-    store_id INT NOT NULL,
-    dept_id INT NOT NULL,
-    KEY(dept_id)
-) ENGINE=INNODB   
-    PARTITION BY RANGE(id)  (
-        PARTITION p0 VALUES LESS THAN (5),
-        PARTITION p1 VALUES LESS THAN (10),
-        PARTITION p2 VALUES LESS THAN (15),
-        PARTITION p3 VALUES LESS THAN MAXVALUE
-);
-
-CREATE TABLE dept (
-    dept_id INT NOT NULL,
-    dept_name varchar(25) NOT NULL,
-    KEY(dept_id)
-) ENGINE=INNODB
-    PARTITION BY RANGE(dept_id) (
-        PARTITION p0 VALUES LESS THAN (3),
-        PARTITION p1 VALUES LESS THAN (6),
-        PARTITION p3 VALUES LESS THAN MAXVALUE
-);
-
-INSERT INTO emp(fname, lname, store_id, dept_id) VALUES
-    ('Bob', 'Taylor', 3, 2), ('Frank', 'Williams', 1, 2), 
-    ('Ellen', 'Johnson', 3, 4), ('Jim', 'Smith', 2, 4),  
-    ('Mary', 'Jones', 1, 1), ('Linda', 'Black', 2, 3),
-    ('Ed', 'Jones', 2, 1), ('June', 'Wilson', 3, 1), 
-    ('Andy', 'Smith', 1, 3), ('Lou', 'Waters', 2, 4),  
-    ('Jill', 'Stone', 1, 4), ('Roger', 'White', 3, 2),
-    ('Howard', 'Andrews', 1, 2), ('Fred', 'Goldberg', 3, 3), 
-    ('Barbara', 'Brown', 2, 3), ('Alice', 'Rogers', 2, 2),  
-    ('Mark', 'Morgan', 3, 3), ('Karen', 'Cole', 3, 2);
-
-INSERT INTO dept VALUES
-    (1,'admin'),(2, 'finance'),
-    (3,'IT'),(4, 'security'),
-    (5,'ref'),(6,'services');
-
-CREATE TABLE tb1(c1 TEXT(16), c2 TEXT(16)) ENGINE=INNODB;
-CREATE TABLE tb2(c1 TEXT(16)) ENGINE=INNODB;
-
-INSERT INTO tb1 VALUES(repeat('a',1000),repeat('b',1000));
-INSERT INTO tb2 VALUES(repeat('a',1000));
-
-COMMIT;
-
-let $query1 = UPDATE class JOIN roster ON class.class_num=roster.class_num
-	      SET class.class_name='geography'
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $query2 = UPDATE class JOIN roster ON class.class_num=roster.class_num 
-	      SET class.class_name='geography' 
-              WHERE roster.class_num IN (SELECT class_num FROM roster);
-
-let $query3 = UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-	      SET student.stu_city='kolkata' 
-	      WHERE student.stu_name IN (SELECT stu_name FROM roster);
-
-let $query4 = UPDATE student JOIN roster ON student.stu_name=roster.stu_name 
-	      SET student.stu_city='kolkata' 
-	      WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-
-let $query5 = UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num 
-	      SET class.class_name='geography' 
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $query6 = UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num 
-	      SET class.class_name='geography' 
-	      WHERE roster.class_num IN (SELECT class_num FROM roster);
-
-let $query7 = UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num 
-	      SET class.class_name='geography' 
-	      WHERE roster.class_num IN (SELECT class_num FROM roster);
-
-let $query8 = UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name 
-	      SET student.stu_city='kolkata' 
-	      WHERE student.stu_name IN (SELECT stu_name FROM roster);
-
-let $query9 = UPDATE class INNER JOIN roster ON class.class_num=roster.class_num 
-	      SET class.class_name='geography' 
-	      WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $query10 = UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-	       SET ot1.a = 111, ot2.a = 222 
-	       WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-
-let $query11 = UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-	       SET ot1.a = 111 
-	       WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-
-let $query12 = UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a 
-	       SET ot1.a = 111, ot2.a = 222 
-	       WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-
-let $query13 = UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3) 
-	       SET ot1.a = 111, ot2.a = 222 
-	       WHERE ot1.a IN (SELECT a FROM it3);
-
-let $query14 = UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3) 
-	       SET ot1.a = 111, ot2.a = 222 
-	       WHERE ot1.a IN (SELECT a FROM it3);
-
-let $query15 = UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a) 
-	       SET ot1.a = 111 
-	       WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-
-let $query16 = UPDATE class, roster
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-
-let $query17 = UPDATE class INNER JOIN roster ON class.class_num = roster.class_num 
-	       AND class.class_name = 'history' OR class.class_name = 'math'
-	       SET class.class_name='geography'
-	       WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-
-let $query18 = UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num) 
-	       SET class.class_name='geography';
-
-# The following are multi-table DELETE queries
-
-let $queryd_1 = DELETE class FROM class RIGHT JOIN roster 
-	       ON class.class_num=roster.class_num 
-	       WHERE roster.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_2 = DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster 
-       	       ON class.class_num=roster.class_num 
-	       WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_3 = DELETE QUICK FROM class USING class LEFT JOIN roster 
-	       ON class.class_num=roster.class_num 
-	       WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_4 = DELETE IGNORE FROM class USING class RIGHT JOIN roster 
-	       ON class.class_num=roster.class_num 
-	       WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_5 = DELETE class FROM class, roster 
-	       WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_6 = DELETE FROM class USING class, roster 
-	       WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_7 = DELETE student FROM student LEFT JOIN roster 
-	       ON student.stu_name=roster.stu_name 
-	       WHERE student.stu_name IN (SELECT stu_name FROM roster);
-
-let $queryd_8 = DELETE student FROM student INNER JOIN roster INNER JOIN class 
-	       ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr' 
-	       WHERE student.stu_name IN (SELECT stu_name FROM roster);
-
-let $queryd_9 = DELETE tz FROM tz JOIN ty 
-		ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1 
-		WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-
-let $queryd_10 = DELETE FROM tz USING tz JOIN ty 
-		 ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-		 WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-
-let $queryd_11 = DELETE FROM tz USING tz JOIN ty 
-		 ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-		 WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-
-let $queryd_12 = DELETE FROM tz USING tz INNER JOIN ty 
-		 ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1 
-		 WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-
-let $queryd_13 = DELETE tz FROM tx,ty,tz 
-		 WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-
-let $queryd_14 = DELETE tz FROM tx,ty,tz 
-		 WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-
-# The following are a few SELECT queries
-
-let $query_s1 = SELECT * FROM class;
-
-let $query_s2 = SELECT * FROM student;
-
-let $query_s3 = SELECT * FROM ot1;
-
-let $query_s4 = SELECT * FROM ot2;
-
-let $query_s5 = SELECT * FROM tz;
-
-# Verifying various variations of the JOIN syntax using 3 tables
-
-let $query2a = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-
-let $query2b = UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-
-let $query2c = UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-
-let $query2d = UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-
-let $query2e = UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-
-let $query2f = UPDATE tx,ty,tz 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-
-let $query2g = UPDATE tx,ty,tz 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-
-let $query2_s = SELECT * FROM tx;
-
-# The following queries have JOIN syntax within the IN sub-query
-
-let $query3a = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-
-let $query3b = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-
-let $query3c = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-
-let $query3d = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-
-let $query3e = UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100 
-	       WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-
-# Updating  columns from more than 1 table 
-
-let $query4a = UPDATE tx,ty,tz 
-	       SET tx.c2=100,tz.c2=101 
-	       WHERE tx.c1 IN(SELECT c2 from ty);
-
-let $query4b = UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3 
-	       SET tx.c2=100,tz.c2=101 
-	       WHERE tx.c1 IN(SELECT c2 from ty);
-
-let $query4_s1 = SELECT * FROM tx;
-
-let $query4_s2 = SELECT * FROM tz;
-
-# Verfying with partitioned tables 
-
-let $query5a = UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id 
-	       SET emp.store_id = 500 
-	       WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5b = UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-	       SET emp.store_id = 500 
-	       WHERE dept.dept_id IN (SELECT dept_id from dept);
-
-let $query5c = UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id 
-	       SET emp.store_id = 500 
-	       WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5d = UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-	       SET emp.store_id = 500 
-	       WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5e = UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id 
-	       SET emp.store_id = 500 
-	       WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5f = UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id 
-	       SET dept.dept_name = 'Junk' 
-	       WHERE dept.dept_id IN (SELECT dept_id from emp);
-
-let $query5g = UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id 
-	       SET dept.dept_name = 'Junk' 
-	       WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-
-let $query5h = UPDATE emp PARTITION(p0,p2), dept 
-	       SET emp.store_id = 500 
-	       WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-
-let $query5i = UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id 
-	       SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-	       WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-
-let $query5j = UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole' 
-	       SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET' 
-	       WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-
-let $query5k = UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id 
-	       SET emp.store_id = 500 
-	       WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-
-let $query5l = UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept) 
-	       SET emp.store_id = 500;
-
-let $queryd_5a = DELETE emp FROM emp PARTITION(p1,p3) JOIN dept 
-		 ON emp.dept_id = dept.dept_id 
-		 WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5b = DELETE FROM emp USING emp PARTITION(p0) JOIN dept 
-		 ON emp.dept_id = dept.dept_id 
-		 WHERE dept.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5c = DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept 
-		 ON emp.dept_id = dept.dept_id 
-		 WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5d = DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept 
-		 ON emp.dept_id = dept.dept_id 
-		 WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5e = DELETE IGNORE emp FROM emp JOIN dept 
-		 ON emp.dept_id = dept.dept_id 
-		 WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5f = DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept 
-		 ON emp.dept_id = dept.dept_id 
-		 WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5g = DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept 
-		 ON emp.dept_id = dept.dept_id 
-		 WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5_s1 = SELECT * FROM emp;
-
-let $query5_s2 = SELECT * FROM dept;
-
-# A test to verify multi-table UPDATE with BLOB data type
-
-let $query6a = UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1 
-	       SET tb1.c2='geography' 
-	       WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-
-let $query6b = DELETE FROM tb1 USING tb1 JOIN tb2 
-	       ON tb1.c1=tb2.c1 
-      	       WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-
---echo # The multi table UPDATE tests starts here
---echo # The optimizer_switch is set to default. We are verifying the various supported JOIN types for SEMI-JOIN
-
-SET optimizer_switch=default;
-SET GLOBAL innodb_stats_persistent=on;
-COMMIT;
-SET autocommit=off;
-
---source include/multi_table_upd_sj.inc
-
---echo # The following queries would select Firstmatch based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='semijoin=on,firstmatch=on,materialization=off,loosescan=off,index_condition_pushdown=off,mrr=off';
-COMMIT;
-
---source include/multi_table_upd_sj.inc
-
---echo # The following queries would select Materialize based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='semijoin=on,loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,materialization=on';
-COMMIT;
-
---source include/multi_table_upd_sj.inc
-
---echo # The following queries would select Loosescan strategy based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='loosescan=on,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-
---source include/multi_table_upd_sj.inc
-
---echo # The following queries would select Duplicate Weedout strategy based on the optimizer switch settings
-
-SET optimizer_switch='loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-
---source include/multi_table_upd_sj.inc
-
-# Delete the foreign keys and constriants before using the DELETE commands
-
-ALTER TABLE roster DROP FOREIGN KEY roster_ibfk_1; 
-ALTER TABLE roster DROP FOREIGN KEY roster_ibfk_2;
-ALTER TABLE roster DROP PRIMARY KEY;
-ALTER TABLE class DROP PRIMARY KEY;
-ALTER TABLE student DROP PRIMARY KEY;
-ALTER TABLE roster ADD KEY(class_num);
-ANALYZE TABLE roster,class,student,emp,dept;
---echo # The multi table DELETE tests starts here
---echo # The optimizer_switch is set to default. We are verifying the various supported JOIN types for SEMI-JOIN 
-
-SET optimizer_switch=default;
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
---echo # The following queries would select Firstmatch based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET GLOBAL innodb_stats_persistent=on;
-SET optimizer_switch='semijoin=on,firstmatch=on,materialization=off,loosescan=off,index_condition_pushdown=off,mrr=off';
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
---echo # The following queries would select Materialize based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='semijoin=on,loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,materialization=on';
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
---echo # The following queries would select Loosescan strategy based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='loosescan=on,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
---echo # The following queries would select Duplicate Weedout strategy based on the optimizer switch settings
-
-SET optimizer_switch='loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
--- echo # Drop the tables that were created
-
-DROP TABLE tz;
-DROP TABLE ty;
-DROP TABLE tx;
-DROP TABLE ot1;
-DROP TABLE ot2;
-DROP TABLE ot3;
-DROP TABLE it1;
-DROP TABLE it2;
-DROP TABLE it3;
-DROP TABLE roster;
-DROP TABLE student;
-DROP TABLE class;
-DROP TABLE tb1;
-DROP TABLE tb2;
-DROP TABLE emp;
-DROP TABLE dept;
-SET optimizer_switch=default;
-COMMIT;

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.6 branch (amit.bhattacharya:4499 to 4500) Amit Bhattacharya18 Oct