4354 Amit Bhattacharya 2012-09-28
(no message)
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
4353 Amit Bhattacharya 2012-09-28
(no message)
added:
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
=== removed file 'mysql-test/include/multi_table_del_sj.inc'
--- a/mysql-test/include/multi_table_del_sj.inc 2012-09-28 06:43:10 +0000
+++ b/mysql-test/include/multi_table_del_sj.inc 1970-01-01 00:00:00 +0000
@@ -1,114 +0,0 @@
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_1;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_2;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_3;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_4;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_5;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_6;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_7;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_8;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_9;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_10;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_11;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_12;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_13;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_14;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_5a;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_5b;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_5c;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_5d;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_5e;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_5f;
---replace_column 9 #
-eval EXPLAIN EXTENDED $queryd_5g;
---replace_column 9 #
-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-09-28 06:43:10 +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 #
-eval EXPLAIN EXTENDED $query1;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query2;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query3;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query4;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query6;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query7;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query8;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query9;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query10;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query11;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query12;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query13;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query14;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query15;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query16;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query17;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query18;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query2a;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query2b;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query2c;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query2d;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query2e;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query2f;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query2g;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query3a;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query3b;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query3c;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query3d;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query3e;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query4a;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query4b;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5a;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5b;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5c;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5d;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5e;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5f;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5g;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5h;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5i;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5j;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5k;
---replace_column 9 #
-eval EXPLAIN EXTENDED $query5l;
---replace_column 9 #
-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-09-28 06:43:10 +0000
+++ b/mysql-test/r/multi_table_upd_del_sj.result 1970-01-01 00:00:00 +0000
@@ -1,7091 +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;
-ANALYZE TABLE roster,class,student,emp,dept,tx,ty,tz;
-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
-test.tx analyze status OK
-test.ty analyze status OK
-test.tz analyze status OK
-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 # 100.00 Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # 100.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # 100.00 Using index
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 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 # 0.00 NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 <subquery3>.a # 100.00 NULL
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 <subquery3>.a # 100.00 NULL
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(ot1)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # 100.00 Using where
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 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 # 100.00 Using index
-1 SIMPLE tx ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.tx.c1 # 100.00 NULL
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(tx); Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 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 # 100.00 Using index
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # 0.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; FirstMatch(emp)
-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 # 100.00 NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; FirstMatch(emp)
-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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # 100.00 NULL
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-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 # 100.00 Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using where
-1 SIMPLE dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # 100.00 NULL
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 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 # 100.00 Using where; Using index
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index; FirstMatch(roster)
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index; FirstMatch(student)
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE it3 ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE it3 ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE it3 ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(it3)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # 100.00 Using where
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # 83.33 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(tz); Using join buffer (Block Nested Loop)
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; FirstMatch(emp)
-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 # 100.00 NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; FirstMatch(emp)
-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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; FirstMatch(emp)
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using where; End temporary
-1 SIMPLE dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; FirstMatch(emp)
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # 100.00 NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # 100.00 NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 23 test.student.stu_name # 100.00 NULL
-2 MATERIALIZED roster index fk2 fk2 23 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 23 test.student.stu_name # 100.00 NULL
-2 MATERIALIZED roster index fk2 fk2 23 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # 100.00 NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # 100.00 NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 Using where; Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.roster.class_num # 100.00 NULL
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 23 test.student.stu_name # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index
-2 MATERIALIZED roster index fk2 fk2 23 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # 100.00 NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 0.00 NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 <subquery3>.a # 100.00 NULL
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 <subquery3>.a # 100.00 NULL
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # 100.00 NULL
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # 100.00 NULL
-1 SIMPLE roster index fk1 fk1 5 NULL # 100.00 Using where; Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # 100.00 NULL
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED roster index fk1 fk1 5 NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 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 # 100.00 Using index
-1 SIMPLE tx ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.tx.c1 # 100.00 NULL
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 0.00 Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE <subquery3> eq_ref <auto_key> <auto_key> 5 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-3 MATERIALIZED tz ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using index
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # 0.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # 100.00 NULL
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; Start temporary; End temporary
-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 # 100.00 NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; Start temporary; End temporary
-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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # 100.00 NULL
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using where; End temporary
-1 SIMPLE dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # 100.00 NULL
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # 0.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED tb2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # 100.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # 100.00 Using index
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE it3 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE it3 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # 83.33 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; Start temporary; End temporary
-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 # 100.00 NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; Start temporary; End temporary
-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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-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 # 100.00 Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using where
-1 SIMPLE dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index; End temporary
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # 100.00 Using index; End temporary
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index; End temporary
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # 100.00 Using index; End temporary
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # 75.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE it3 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE it3 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index fk1 fk1 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL fk1 5 NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # 83.33 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using where; End temporary
-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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 Using index
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # 100.00 Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # 100.00 End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; Start temporary; End temporary
-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 # 100.00 NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index; Start temporary; End temporary
-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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using where; End temporary
-1 SIMPLE dept index dept_id dept_id 4 NULL # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE dept index NULL dept_id 4 NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 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);
-ALTER TABLE tz DROP FOREIGN KEY tz_ibfk_1;
-ALTER TABLE ty DROP FOREIGN KEY ty_ibfk_1;
-ALTER TABLE ty DROP PRIMARY KEY;
-ALTER TABLE tx DROP PRIMARY KEY;
-ANALYZE TABLE roster,class,student,emp,dept,tx,ty,tz;
-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
-test.tx analyze status OK
-test.ty analyze status OK
-test.tz 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref class_num class_num 5 test.roster.class_num # 100.00 Using index
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index; FirstMatch(student)
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index; FirstMatch(roster)
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # 100.00 NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # 100.00 NULL
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Using index; Start temporary
-1 SIMPLE ty ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.tx.c2 # 100.00 Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE tz ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Using index
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref class_num class_num 5 test.roster.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; FirstMatch(class)
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index; FirstMatch(student)
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Using where
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # 100.00 Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 NULL
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(ty)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 NULL
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(ty)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 NULL
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(ty)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 NULL
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; FirstMatch(ty)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty index NULL fk1 5 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ref fk1 fk1 5 test.tx.c2 # 100.00 Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; FirstMatch(emp)
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Using index
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.roster.class_num # 100.00 NULL
-2 MATERIALIZED roster index class_num class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Using where
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # 100.00 Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 NULL
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # 100.00 NULL
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 NULL
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # 100.00 NULL
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 NULL
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # 100.00 NULL
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 NULL
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # 100.00 NULL
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # 100.00 NULL
-2 MATERIALIZED tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty index NULL fk1 5 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ref fk1 fk1 5 test.tx.c2 # 100.00 Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # 0.00 Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED tb2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE roster ref class_num class_num 5 test.roster.class_num # 100.00 Using index
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Using where
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # 100.00 Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty index NULL fk1 5 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ref fk1 fk1 5 test.tx.c2 # 100.00 Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using where; Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Start temporary
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Using where; Using index; Start temporary
-1 SIMPLE roster ref class_num class_num 5 test.roster.class_num # 100.00 Using index; End temporary
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Using where
-1 SIMPLE class ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # 100.00 Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # 100.00 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 # 100.00 Start temporary
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL fk1 NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-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 # 100.00 Start temporary
-1 SIMPLE ty index NULL fk1 5 NULL # 100.00 Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL NULL NULL NULL NULL # 100.00 Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 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 # 100.00 Start temporary
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ref fk1 fk1 5 test.tx.c2 # 100.00 Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx ALL NULL NULL NULL NULL # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 Using index; Start temporary; End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # 100.00 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 # 100.00 Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # 100.00 End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # 100.00 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 # 100.00 Start temporary
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # 100.00 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-09-28 06:43:10 +0000
+++ b/mysql-test/t/multi_table_upd_del_sj.test 1970-01-01 00:00:00 +0000
@@ -1,509 +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_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;
-ANALYZE TABLE roster,class,student,emp,dept,tx,ty,tz;
-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);
-ALTER TABLE tz DROP FOREIGN KEY tz_ibfk_1;
-ALTER TABLE ty DROP FOREIGN KEY ty_ibfk_1;
-ALTER TABLE ty DROP PRIMARY KEY;
-ALTER TABLE tx DROP PRIMARY KEY;
-ANALYZE TABLE roster,class,student,emp,dept,tx,ty,tz;
---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:4353 to 4354) | Amit Bhattacharya | 28 Sep |