4500 Amit Bhattacharya 2012-10-18
Removing the files to fix the issues
removed:
mysql-test/include/multi_table_del_sj.inc
mysql-test/include/multi_table_upd_sj.inc
mysql-test/r/multi_table_upd_del_sj.result
mysql-test/t/multi_table_upd_del_sj.test
4499 Christopher Powers 2012-10-17
Bug#14728422 CRASH WHEN TRUNCATING PERFORMANCE_SCHEMA TABLES AND P_S IS DISABLED
If the Performance Schema is not initialized, then disable SELECT, INSERT, UPDATE,
DELETE and TRUNCATE for all Performance Schema tables.
Return an error for INSERT. Otherwise, no error is returned because target row(s)
will not be found.
modified:
mysql-test/suite/perfschema/r/start_server_off.result
mysql-test/suite/perfschema/t/start_server_off.test
storage/perfschema/ha_perfschema.cc
=== removed file 'mysql-test/include/multi_table_del_sj.inc'
--- a/mysql-test/include/multi_table_del_sj.inc 2012-10-17 05:15:51 +0000
+++ b/mysql-test/include/multi_table_del_sj.inc 1970-01-01 00:00:00 +0000
@@ -1,114 +0,0 @@
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_1;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_2;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_3;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_4;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_6;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_7;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_8;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_9;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_10;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_11;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_12;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_13;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_14;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5c;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5d;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5e;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5f;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $queryd_5g;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query6b;
-
-eval $queryd_1;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_2;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_3;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_4;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_5;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_6;
-eval $query_s1;
-ROLLBACK;
-eval $queryd_7;
-eval $query_s2;
-ROLLBACK;
-eval $queryd_8;
-eval $query_s2;
-ROLLBACK;
-eval $queryd_9;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_10;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_11;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_12;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_13;
-eval $query_s5;
-ROLLBACK;
-eval $queryd_14;
-eval $query_s5;
-ROLLBACK;
-
-eval $queryd_5a;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5b;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5c;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5d;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5e;
-eval $query5_s1;
-ROLLBACK;
-eval $queryd_5f;
-eval $query5_s2;
-ROLLBACK;
-eval $queryd_5g;
-eval $query5_s2;
-ROLLBACK;
-
-eval $query6b;
-SELECT * FROM tb1;
-ROLLBACK;
-
=== removed file 'mysql-test/include/multi_table_upd_sj.inc'
--- a/mysql-test/include/multi_table_upd_sj.inc 2012-10-17 05:15:51 +0000
+++ b/mysql-test/include/multi_table_upd_sj.inc 1970-01-01 00:00:00 +0000
@@ -1,239 +0,0 @@
-# Adding the replace_column since the key length varies depending on the optimizer choice
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query1;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query4;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query6;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query7;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query8;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query9;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query10;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query11;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query12;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query13;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query14;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query15;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query16;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query17;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query18;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2c;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2d;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2e;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2f;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query2g;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3c;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3d;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query3e;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query4a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query4b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5a;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5b;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5c;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5d;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5e;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5f;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5g;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5h;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5i;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5j;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5k;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query5l;
---replace_column 9 # 10 #
-eval EXPLAIN EXTENDED $query6a;
-
-eval $query1;
-eval $query_s1;
-ROLLBACK;
-eval $query2;
-eval $query_s1;
-ROLLBACK;
-eval $query3;
-eval $query_s2;
-ROLLBACK;
-eval $query4;
-eval $query_s2;
-ROLLBACK;
-eval $query5;
-eval $query_s1;
-ROLLBACK;
-eval $query6;
-eval $query_s1;
-ROLLBACK;
-eval $query7;
-eval $query_s1;
-ROLLBACK;
-eval $query8;
-eval $query_s2;
-ROLLBACK;
-eval $query9;
-eval $query_s1;
-ROLLBACK;
-eval $query10;
-eval $query_s3;
-eval $query_s4;
-ROLLBACK;
-eval $query11;
-eval $query_s3;
-ROLLBACK;
-eval $query12;
-eval $query_s3;
-eval $query_s4;
-ROLLBACK;
-eval $query13;
-eval $query_s3;
-eval $query_s4;
-ROLLBACK;
-eval $query14;
-eval $query_s3;
-eval $query_s4;
-ROLLBACK;
-eval $query15;
-eval $query_s3;
-ROLLBACK;
-eval $query16;
-eval $query_s1;
-ROLLBACK;
-eval $query17;
-eval $query_s1;
-ROLLBACK;
-eval $query18;
-eval $query_s1;
-ROLLBACK;
-
-eval $query2a;
-eval $query2_s;
-ROLLBACK;
-eval $query2b;
-eval $query2_s;
-ROLLBACK;
-eval $query2c;
-eval $query2_s;
-ROLLBACK;
-eval $query2d;
-eval $query2_s;
-ROLLBACK;
-eval $query2e;
-eval $query2_s;
-ROLLBACK;
-eval $query2f;
-eval $query2_s;
-ROLLBACK;
-eval $query2g;
-eval $query2_s;
-ROLLBACK;
-
-eval $query3a;
-eval $query2_s;
-ROLLBACK;
-eval $query3b;
-eval $query2_s;
-ROLLBACK;
-eval $query3c;
-eval $query2_s;
-ROLLBACK;
-eval $query3d;
-eval $query2_s;
-ROLLBACK;
-eval $query3e;
-eval $query2_s;
-ROLLBACK;
-
-eval $query4a;
-eval $query4_s1;
-eval $query4_s2;
-ROLLBACK;
-eval $query4b;
-eval $query4_s1;
-eval $query4_s2;
-ROLLBACK;
-
-eval $query5a;
-eval $query5_s1;
-ROLLBACK;
-eval $query5b;
-eval $query5_s1;
-ROLLBACK;
-eval $query5c;
-eval $query5_s1;
-ROLLBACK;
-eval $query5d;
-eval $query5_s1;
-ROLLBACK;
-eval $query5e;
-eval $query5_s1;
-ROLLBACK;
-eval $query5f;
-eval $query5_s2;
-ROLLBACK;
-eval $query5g;
-eval $query5_s2;
-ROLLBACK;
-eval $query5h;
-eval $query5_s1;
-ROLLBACK;
-eval $query5i;
-eval $query5_s1;
-ROLLBACK;
-eval $query5j;
-eval $query5_s1;
-ROLLBACK;
-eval $query5k;
-eval $query5_s1;
-ROLLBACK;
-eval $query5l;
-eval $query5_s1;
-ROLLBACK;
-
-eval $query6a;
-SELECT * FROM tb1;
-ROLLBACK;
-
=== removed file 'mysql-test/r/multi_table_upd_del_sj.result'
--- a/mysql-test/r/multi_table_upd_del_sj.result 2012-10-17 05:15:51 +0000
+++ b/mysql-test/r/multi_table_upd_del_sj.result 1970-01-01 00:00:00 +0000
@@ -1,7075 +0,0 @@
-# Create the various tables required for testing this feature
-CREATE TABLE class(class_num INT NOT NULL PRIMARY KEY, class_name VARCHAR(20)) ENGINE=INNODB;
-CREATE TABLE student(stu_name VARCHAR(20) NOT NULL PRIMARY KEY, stu_city VARCHAR(20), stu_id INT) ENGINE=INNODB;
-CREATE TABLE roster(ros_num INT NOT NULL PRIMARY KEY, class_num INT, stu_name VARCHAR(20), FOREIGN KEY fk1(class_num) REFERENCES class(class_num), FOREIGN KEY fk2(stu_name) REFERENCES student(stu_name)) ENGINE=INNODB;
-INSERT INTO class VALUES(1,'math'),(2,'science'),(3,'history'),(4,'geog');
-INSERT INTO student VALUES('amit','bangalore',1),('ashu','hyderabad',2),('sumit','kota',2),('rajdeep','bbsr',4);
-INSERT INTO roster VALUES(1,3,'amit'),(2,4,'amit'),(3, 1, 'ashu'),(4,3,'ashu'),(5,1,'sumit'),(6,4,'sumit');
-CREATE TABLE ot1(a INT) ENGINE=INNODB;
-CREATE TABLE ot2(a INT) ENGINE=INNODB;
-CREATE TABLE ot3(a INT) ENGINE=INNODB;
-CREATE TABLE it1(a INT) ENGINE=INNODB;
-CREATE TABLE it2(a INT) ENGINE=INNODB;
-CREATE TABLE it3(a INT) ENGINE=INNODB;
-INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
-INSERT INTO ot2 VALUES(0),(2),(4),(6);
-INSERT INTO ot3 VALUES(0),(3),(6);
-INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
-INSERT INTO it2 VALUES(0),(2),(4),(6);
-INSERT INTO it3 VALUES(0),(3),(6);
-CREATE TABLE tx(c1 INT NOT NULL PRIMARY KEY, c2 INT) ENGINE=INNODB;
-CREATE TABLE ty(c1 INT, c2 INT, c3 VARCHAR(20) NOT NULL PRIMARY KEY, FOREIGN KEY fk1(c1) REFERENCES tx(c1)) ENGINE=INNODB;
-CREATE TABLE tz(c1 INT, c2 INT, c3 VARCHAR(20), FOREIGN KEY fk2(c3) REFERENCES ty(c3)) ENGINE=INNODB;
-INSERT INTO tx VALUES(1,1),(2,2),(3,3),(4,4),(5,5);
-INSERT INTO ty VALUES(1,1,'1 match tx'),(2,2,'2 match tx'),(4,4,'4 match tx');
-INSERT INTO tz VALUES(2,2,'2 match tx'),(4,4,'4 match tx');
-INSERT INTO tz VALUES(20,20,'2 match tx'),(40,40,'4 match tx');
-INSERT INTO tz VALUES(200,200,'2 match tx'),(400,400,'4 match tx');
-CREATE TABLE emp (
-id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-fname VARCHAR(25) NOT NULL,
-lname VARCHAR(25) NOT NULL,
-store_id INT NOT NULL,
-dept_id INT NOT NULL,
-KEY(dept_id)
-) ENGINE=INNODB
-PARTITION BY RANGE(id) (
-PARTITION p0 VALUES LESS THAN (5),
-PARTITION p1 VALUES LESS THAN (10),
-PARTITION p2 VALUES LESS THAN (15),
-PARTITION p3 VALUES LESS THAN MAXVALUE
-);
-CREATE TABLE dept (
-dept_id INT NOT NULL,
-dept_name varchar(25) NOT NULL,
-KEY(dept_id)
-) ENGINE=INNODB
-PARTITION BY RANGE(dept_id) (
-PARTITION p0 VALUES LESS THAN (3),
-PARTITION p1 VALUES LESS THAN (6),
-PARTITION p3 VALUES LESS THAN MAXVALUE
-);
-INSERT INTO emp(fname, lname, store_id, dept_id) VALUES
-('Bob', 'Taylor', 3, 2), ('Frank', 'Williams', 1, 2),
-('Ellen', 'Johnson', 3, 4), ('Jim', 'Smith', 2, 4),
-('Mary', 'Jones', 1, 1), ('Linda', 'Black', 2, 3),
-('Ed', 'Jones', 2, 1), ('June', 'Wilson', 3, 1),
-('Andy', 'Smith', 1, 3), ('Lou', 'Waters', 2, 4),
-('Jill', 'Stone', 1, 4), ('Roger', 'White', 3, 2),
-('Howard', 'Andrews', 1, 2), ('Fred', 'Goldberg', 3, 3),
-('Barbara', 'Brown', 2, 3), ('Alice', 'Rogers', 2, 2),
-('Mark', 'Morgan', 3, 3), ('Karen', 'Cole', 3, 2);
-INSERT INTO dept VALUES
-(1,'admin'),(2, 'finance'),
-(3,'IT'),(4, 'security'),
-(5,'ref'),(6,'services');
-CREATE TABLE tb1(c1 TEXT(16), c2 TEXT(16)) ENGINE=INNODB;
-CREATE TABLE tb2(c1 TEXT(16)) ENGINE=INNODB;
-INSERT INTO tb1 VALUES(repeat('a',1000),repeat('b',1000));
-Warnings:
-Warning 1265 Data truncated for column 'c1' at row 1
-Warning 1265 Data truncated for column 'c2' at row 1
-INSERT INTO tb2 VALUES(repeat('a',1000));
-Warnings:
-Warning 1265 Data truncated for column 'c1' at row 1
-COMMIT;
-# The multi table UPDATE tests starts here
-# The optimizer_switch is set to default. We are verifying the various supported JOIN types for SEMI-JOIN
-SET optimizer_switch=default;
-SET GLOBAL innodb_stats_persistent=on;
-COMMIT;
-SET autocommit=off;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk2 fk2 23 NULL # # Using index; LooseScan
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # # Using index
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk2 fk2 23 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # # Using index
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk2 fk2 23 NULL # # Using index; LooseScan
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # # Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery3> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 <subquery3>.a # # NULL
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery3> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 <subquery3>.a # # NULL
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery3> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # # Using where; FirstMatch(ot1)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index PRIMARY,fk1 fk1 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using where; FirstMatch(tx); Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; FirstMatch(dept)
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; FirstMatch(dept)
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # # NULL
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using where
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # # NULL
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; FirstMatch(tb2); Using join buffer (Block Nested Loop)
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 Junk
-4 Junk
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 not SET not SET 500 2
-3 not SET not SET 500 4
-4 not SET not SET 500 4
-5 not SET not SET 500 1
-6 not SET not SET 500 3
-7 not SET not SET 500 1
-8 not SET not SET 500 1
-9 not SET not SET 500 3
-10 not SET not SET 500 4
-11 not SET not SET 500 4
-12 not SET not SET 500 2
-13 not SET not SET 500 2
-14 not SET not SET 500 3
-15 not SET not SET 500 3
-16 not SET not SET 500 2
-17 not SET not SET 500 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa geography
-ROLLBACK;
-# The following queries would select Firstmatch based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='semijoin=on,firstmatch=on,materialization=off,loosescan=off,index_condition_pushdown=off,mrr=off';
-COMMIT;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index; FirstMatch(roster)
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; FirstMatch(student)
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Using where; FirstMatch(ot1); Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # # Using where; FirstMatch(it3)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index PRIMARY,fk1 fk1 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using where; FirstMatch(tx); Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(dept)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(dept)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; FirstMatch(dept)
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; FirstMatch(dept)
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(emp)
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using where; End temporary
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(emp)
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; FirstMatch(tb2); Using join buffer (Block Nested Loop)
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 Junk
-4 Junk
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 not SET not SET 500 2
-3 not SET not SET 500 4
-4 not SET not SET 500 4
-5 not SET not SET 500 1
-6 not SET not SET 500 3
-7 not SET not SET 500 1
-8 not SET not SET 500 1
-9 not SET not SET 500 3
-10 not SET not SET 500 4
-11 not SET not SET 500 4
-12 not SET not SET 500 2
-13 not SET not SET 500 2
-14 not SET not SET 500 3
-15 not SET not SET 500 3
-16 not SET not SET 500 2
-17 not SET not SET 500 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa geography
-ROLLBACK;
-# The following queries would select Materialize based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='semijoin=on,loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,materialization=on';
-COMMIT;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # # NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # # NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 23 test.student.stu_name # # NULL
-2 MATERIALIZED roster index fk2 fk2 23 NULL # # Using index
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 23 test.student.stu_name # # NULL
-2 MATERIALIZED roster index fk2 fk2 23 NULL # # Using index
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # # NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # # NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.roster.class_num # # NULL
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 23 test.student.stu_name # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-2 MATERIALIZED roster index fk2 fk2 23 NULL # # Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # # NULL
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery3> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 <subquery3>.a # # NULL
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery3> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 <subquery3>.a # # NULL
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-3 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-2 MATERIALIZED it3 ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # # NULL
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # # NULL
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.class.class_num # # NULL
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED roster index fk1 fk1 5 NULL # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index PRIMARY,fk1 fk1 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 <subquery2>.c2 # # Using index
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-2 MATERIALIZED ty ALL PRIMARY NULL NULL NULL # # NULL
-2 MATERIALIZED tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE <subquery3> eq_ref <auto_key> <auto_key> 5 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-3 MATERIALIZED tz ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 <subquery2>.c2 # # NULL
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-2 MATERIALIZED ty ALL NULL NULL NULL NULL # # NULL
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # # NULL
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # # NULL
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 <subquery2>.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 <subquery2>.dept_id # # Using index
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 <subquery2>.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 <subquery2>.dept_id # # Using index
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # # NULL
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 <subquery2>.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 <subquery2>.dept_id # # Using index
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 <subquery2>.dept_id # # Using where
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 <subquery2>.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 <subquery2>.dept_id # # Using index
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 4 test.emp.dept_id # # NULL
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-2 MATERIALIZED dept index dept_id dept_id 4 NULL # # Using index
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED tb2 ALL NULL NULL NULL NULL # # NULL
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 Junk
-4 Junk
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 not SET not SET 500 2
-3 not SET not SET 500 4
-4 not SET not SET 500 4
-5 not SET not SET 500 1
-6 not SET not SET 500 3
-7 not SET not SET 500 1
-8 not SET not SET 500 1
-9 not SET not SET 500 3
-10 not SET not SET 500 4
-11 not SET not SET 500 4
-12 not SET not SET 500 2
-13 not SET not SET 500 2
-14 not SET not SET 500 3
-15 not SET not SET 500 3
-16 not SET not SET 500 2
-17 not SET not SET 500 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa geography
-ROLLBACK;
-# The following queries would select Loosescan strategy based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='loosescan=on,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk2 fk2 23 NULL # # Using index; LooseScan
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # # Using index
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk2 fk2 23 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # # Using index
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk2 fk2 23 NULL # # Using index; LooseScan
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # # Using index
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using index; LooseScan
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index PRIMARY,fk1 fk1 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE emp ref dept_id dept_id 4 test.emp.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using where
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 Junk
-4 Junk
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 not SET not SET 500 2
-3 not SET not SET 500 4
-4 not SET not SET 500 4
-5 not SET not SET 500 1
-6 not SET not SET 500 3
-7 not SET not SET 500 1
-8 not SET not SET 500 1
-9 not SET not SET 500 3
-10 not SET not SET 500 4
-11 not SET not SET 500 4
-12 not SET not SET 500 2
-13 not SET not SET 500 2
-14 not SET not SET 500 3
-15 not SET not SET 500 3
-16 not SET not SET 500 2
-17 not SET not SET 500 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa geography
-ROLLBACK;
-# The following queries would select Duplicate Weedout strategy based on the optimizer switch settings
-SET optimizer_switch='loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index; End temporary
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk2 fk2 23 NULL # # Using where; Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.roster.stu_name # # Using index; End temporary
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index; End temporary
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE roster ref fk1 fk1 5 test.roster.class_num # # Using index; End temporary
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; End temporary
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE it3 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ot1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE it1 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot3 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE ot2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL PRIMARY NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk1 fk1 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index PRIMARY,fk1 fk1 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c1 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index; End temporary
-1 SIMPLE tz index NULL fk2 23 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL PRIMARY NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # NULL
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # Using index
-EXPLAIN EXTENDED UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # End temporary
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # Using where; End temporary
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE dept index NULL dept_id 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE student JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
-SET student.stu_city='kolkata'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit kolkata 1
-ashu kolkata 2
-rajdeep bbsr 4
-sumit kolkata 2
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
-SET class.class_name='geography'
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111
-WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-111
-2
-111
-4
-111
-111
-111
-ROLLBACK;
-UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
-SET ot1.a = 111, ot2.a = 222
-WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-3
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-2
-4
-222
-ROLLBACK;
-UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
-SET ot1.a = 111, ot2.a = 222
-WHERE ot1.a IN (SELECT a FROM it3);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-SELECT * FROM ot2;
-a
-222
-222
-222
-222
-ROLLBACK;
-UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
-SET ot1.a = 111
-WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-SELECT * FROM ot1;
-a
-111
-1
-2
-111
-4
-5
-111
-7
-ROLLBACK;
-UPDATE class, roster
-SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
-AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geog
-ROLLBACK;
-UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
-SET class.class_name='geography';
-SELECT * FROM class;
-class_num class_name
-1 geography
-2 science
-3 geography
-4 geography
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100
-WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-SELECT * FROM tx;
-c1 c2
-1 1
-2 100
-3 3
-4 100
-5 5
-ROLLBACK;
-UPDATE tx,ty,tz
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
-SET tx.c2=100,tz.c2=101
-WHERE tx.c1 IN(SELECT c2 from ty);
-SELECT * FROM tx;
-c1 c2
-1 100
-2 100
-3 3
-4 100
-5 5
-SELECT * FROM tz;
-c1 c2 c3
-2 101 2 match tx
-4 101 4 match tx
-20 101 2 match tx
-40 101 4 match tx
-200 101 2 match tx
-400 101 4 match tx
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
-SET dept.dept_name = 'Junk'
-WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-SELECT * FROM dept;
-dept_id dept_name
-1 Junk
-2 Junk
-3 Junk
-4 Junk
-5 ref
-6 services
-ROLLBACK;
-UPDATE emp PARTITION(p0,p2), dept
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 not SET not SET 500 2
-3 not SET not SET 500 4
-4 not SET not SET 500 4
-5 not SET not SET 500 1
-6 not SET not SET 500 3
-7 not SET not SET 500 1
-8 not SET not SET 500 1
-9 not SET not SET 500 3
-10 not SET not SET 500 4
-11 not SET not SET 500 4
-12 not SET not SET 500 2
-13 not SET not SET 500 2
-14 not SET not SET 500 3
-15 not SET not SET 500 3
-16 not SET not SET 500 2
-17 not SET not SET 500 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
-SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 not SET not SET 500 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 not SET not SET 500 2
-ROLLBACK;
-UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
-SET emp.store_id = 500
-WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 500 2
-2 Frank Williams 500 2
-3 Ellen Johnson 500 4
-4 Jim Smith 500 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 500 4
-11 Jill Stone 500 4
-12 Roger White 500 2
-13 Howard Andrews 500 2
-14 Fred Goldberg 500 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
-SET emp.store_id = 500;
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-5 Mary Jones 500 1
-6 Linda Black 500 3
-7 Ed Jones 500 1
-8 June Wilson 500 1
-9 Andy Smith 500 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 500 3
-16 Alice Rogers 500 2
-17 Mark Morgan 500 3
-18 Karen Cole 500 2
-ROLLBACK;
-UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
-SET tb1.c2='geography'
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa geography
-ROLLBACK;
-ALTER TABLE roster DROP FOREIGN KEY roster_ibfk_1;
-ALTER TABLE roster DROP FOREIGN KEY roster_ibfk_2;
-ALTER TABLE roster DROP PRIMARY KEY;
-ALTER TABLE class DROP PRIMARY KEY;
-ALTER TABLE student DROP PRIMARY KEY;
-ALTER TABLE roster ADD KEY(class_num);
-ANALYZE TABLE roster,class,student,emp,dept;
-Table Op Msg_type Msg_text
-test.roster analyze status OK
-test.class analyze status OK
-test.student analyze status OK
-test.emp analyze status OK
-test.dept analyze status OK
-# The multi table DELETE tests starts here
-# The optimizer_switch is set to default. We are verifying the various supported JOIN types for SEMI-JOIN
-SET optimizer_switch=default;
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index class_num class_num 5 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref class_num class_num 5 test.roster.class_num # # Using index
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; FirstMatch(student)
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; FirstMatch(roster)
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # NULL
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # NULL
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # NULL
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref PRIMARY,fk1 fk1 5 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index; End temporary
-1 SIMPLE tz ref fk2 fk2 23 test.ty.c3 # # NULL
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Start temporary
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty ref fk1 fk1 5 test.tx.c2 # # Using index
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.tx.c2 # # Using index; End temporary
-1 SIMPLE tx index NULL PRIMARY 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; FirstMatch(tb2); Using join buffer (Block Nested Loop)
-DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-rajdeep bbsr 4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit bangalore 1
-ashu hyderabad 2
-rajdeep bbsr 4
-sumit kota 2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-ROLLBACK;
-# The following queries would select Firstmatch based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET GLOBAL innodb_stats_persistent=on;
-SET optimizer_switch='semijoin=on,firstmatch=on,materialization=off,loosescan=off,index_condition_pushdown=off,mrr=off';
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index class_num class_num 5 NULL # # Using where; Using index
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref class_num class_num 5 test.roster.class_num # # Using index; FirstMatch(class)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; FirstMatch(class)
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; FirstMatch(student)
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # # Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; FirstMatch(roster)
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where; FirstMatch(tx)
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where; FirstMatch(tx)
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index; FirstMatch(tx)
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index; FirstMatch(tx)
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE ty index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; FirstMatch(tx); Using join buffer (Block Nested Loop)
-1 SIMPLE tx index NULL PRIMARY 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(emp)
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; FirstMatch(dept)
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; FirstMatch(tb2); Using join buffer (Block Nested Loop)
-DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-rajdeep bbsr 4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit bangalore 1
-ashu hyderabad 2
-rajdeep bbsr 4
-sumit kota 2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-ROLLBACK;
-# The following queries would select Materialize based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='semijoin=on,loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,materialization=on';
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index class_num class_num 5 NULL # # Using where; Using index
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.roster.class_num # # NULL
-2 MATERIALIZED roster index class_num class_num 5 NULL # # Using index
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; End temporary
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; End temporary
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # # Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # # NULL
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # # Using where
-2 MATERIALIZED tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # # NULL
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # # Using where
-2 MATERIALIZED tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # # NULL
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # # Using where
-2 MATERIALIZED tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE <subquery2> eq_ref <auto_key> <auto_key> 5 test.ty.c1 # # NULL
-2 MATERIALIZED ty ALL fk1 NULL NULL NULL # # Using where
-2 MATERIALIZED tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ty index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx index NULL PRIMARY 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE <subquery2> ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-2 MATERIALIZED tb2 ALL NULL NULL NULL NULL # # NULL
-DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-rajdeep bbsr 4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit bangalore 1
-ashu hyderabad 2
-rajdeep bbsr 4
-sumit kota 2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-ROLLBACK;
-# The following queries would select Loosescan strategy based on the optimizer switch settings
-# Please note that some of the queries would still show Duplicate Weedout
-SET optimizer_switch='loosescan=on,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index class_num class_num 5 NULL # # Using where; Using index; LooseScan
-1 SIMPLE roster ref class_num class_num 5 test.roster.class_num # # Using index
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; End temporary
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; End temporary
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # # Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ty index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx index NULL PRIMARY 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using where; Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; LooseScan
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-rajdeep bbsr 4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit bangalore 1
-ashu hyderabad 2
-rajdeep bbsr 4
-sumit kota 2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-ROLLBACK;
-# The following queries would select Duplicate Weedout strategy based on the optimizer switch settings
-SET optimizer_switch='loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-EXPLAIN EXTENDED DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE roster index class_num class_num 5 NULL # # Using where; Using index; Start temporary
-1 SIMPLE roster ref class_num class_num 5 test.roster.class_num # # Using index; End temporary
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; End temporary
-EXPLAIN EXTENDED DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE class ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref class_num class_num 5 test.class.class_num # # Using index; Start temporary; End temporary
-1 SIMPLE roster index NULL class_num 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-EXPLAIN EXTENDED DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # NULL
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; Start temporary
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; End temporary
-EXPLAIN EXTENDED DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE student ALL NULL NULL NULL NULL # # Using where
-1 SIMPLE class ALL NULL NULL NULL NULL # # Using join buffer (Block Nested Loop)
-1 SIMPLE roster ref fk2,class_num fk2 23 test.student.stu_name # # Using where
-1 SIMPLE roster ref fk2 fk2 23 test.student.stu_name # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # Using where
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using where; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index; End temporary
-EXPLAIN EXTENDED DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL fk2 NULL NULL NULL # # Using where; Start temporary
-1 SIMPLE ty eq_ref PRIMARY,fk1 PRIMARY 22 test.tz.c3 # # NULL
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE ty ALL fk1 NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index; End temporary
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ty index NULL fk1 5 NULL # # Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE ty ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c2 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c3' of SELECT #3 was resolved in SELECT #2
-EXPLAIN EXTENDED DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tz ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE ty index fk1 fk1 5 NULL # # Using where; Using index; Using join buffer (Block Nested Loop)
-1 SIMPLE tx eq_ref PRIMARY PRIMARY 4 test.ty.c1 # # Using index
-1 SIMPLE tx ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-1 SIMPLE tx index NULL PRIMARY 4 NULL # # Using index; Using join buffer (Block Nested Loop)
-Warnings:
-Note 1276 Field or reference 'test.ty.c1' of SELECT #2 was resolved in SELECT #1
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # Using where
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-EXPLAIN EXTENDED DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE emp ALL dept_id NULL NULL NULL # # NULL
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index; Start temporary; End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.emp.dept_id # # Using index
-EXPLAIN EXTENDED DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE dept index dept_id dept_id 4 NULL # # Using index; Start temporary
-1 SIMPLE emp ref dept_id dept_id 4 test.dept.dept_id # # End temporary
-1 SIMPLE dept ref dept_id dept_id 4 test.dept.dept_id # # Using index
-EXPLAIN EXTENDED DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE tb1 ALL NULL NULL NULL NULL # # Start temporary
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; Using join buffer (Block Nested Loop)
-1 SIMPLE tb2 ALL NULL NULL NULL NULL # # Using where; End temporary; Using join buffer (Block Nested Loop)
-DELETE class FROM class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE roster.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE QUICK FROM class USING class LEFT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE IGNORE FROM class USING class RIGHT JOIN roster
-ON class.class_num=roster.class_num
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE class FROM class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE FROM class USING class, roster
-WHERE class.class_num IN (SELECT class_num FROM roster);
-SELECT * FROM class;
-class_num class_name
-2 science
-ROLLBACK;
-DELETE student FROM student LEFT JOIN roster
-ON student.stu_name=roster.stu_name
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-rajdeep bbsr 4
-ROLLBACK;
-DELETE student FROM student INNER JOIN roster INNER JOIN class
-ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
-WHERE student.stu_name IN (SELECT stu_name FROM roster);
-SELECT * FROM student;
-stu_name stu_city stu_id
-amit bangalore 1
-ashu hyderabad 2
-rajdeep bbsr 4
-sumit kota 2
-ROLLBACK;
-DELETE tz FROM tz JOIN ty
-ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-2 2 2 match tx
-20 20 2 match tx
-200 200 2 match tx
-ROLLBACK;
-DELETE FROM tz USING tz JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE FROM tz USING tz INNER JOIN ty
-ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
-WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE tz FROM tx,ty,tz
-WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-SELECT * FROM tz;
-c1 c2 c3
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE FROM emp USING emp PARTITION(p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE dept.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-15 Barbara Brown 2 3
-16 Alice Rogers 2 2
-17 Mark Morgan 3 3
-18 Karen Cole 3 2
-ROLLBACK;
-DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-1 Bob Taylor 3 2
-2 Frank Williams 1 2
-3 Ellen Johnson 3 4
-4 Jim Smith 2 4
-ROLLBACK;
-DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-5 Mary Jones 1 1
-6 Linda Black 2 3
-7 Ed Jones 2 1
-8 June Wilson 3 1
-9 Andy Smith 1 3
-10 Lou Waters 2 4
-11 Jill Stone 1 4
-12 Roger White 3 2
-13 Howard Andrews 1 2
-14 Fred Goldberg 3 3
-ROLLBACK;
-DELETE IGNORE emp FROM emp JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM emp;
-id fname lname store_id dept_id
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
-ON emp.dept_id = dept.dept_id
-WHERE emp.dept_id IN (SELECT dept_id from dept);
-SELECT * FROM dept;
-dept_id dept_name
-1 admin
-2 finance
-3 IT
-4 security
-5 ref
-6 services
-ROLLBACK;
-DELETE FROM tb1 USING tb1 JOIN tb2
-ON tb1.c1=tb2.c1
-WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-SELECT * FROM tb1;
-c1 c2
-ROLLBACK;
-# Drop the tables that were created
-DROP TABLE tz;
-DROP TABLE ty;
-DROP TABLE tx;
-DROP TABLE ot1;
-DROP TABLE ot2;
-DROP TABLE ot3;
-DROP TABLE it1;
-DROP TABLE it2;
-DROP TABLE it3;
-DROP TABLE roster;
-DROP TABLE student;
-DROP TABLE class;
-DROP TABLE tb1;
-DROP TABLE tb2;
-DROP TABLE emp;
-DROP TABLE dept;
-SET optimizer_switch=default;
-COMMIT;
=== removed file 'mysql-test/t/multi_table_upd_del_sj.test'
--- a/mysql-test/t/multi_table_upd_del_sj.test 2012-10-17 05:15:51 +0000
+++ b/mysql-test/t/multi_table_upd_del_sj.test 1970-01-01 00:00:00 +0000
@@ -1,505 +0,0 @@
-##### This test is intended to verify that the optimizer chooses one of the #####
-##### semijoin strategies while executing a multi table UPDATE or DELETE #####
-##### statement. The test cases added below verifies that the optimizer uses#####
-##### semi-join strategy for certain statements which have supported JOIN #####
-##### syntax. #####
-##### Test case name : multi_table_upd_del_sj.test #####
-
---source include/not_valgrind.inc
---source include/not_embedded.inc
---source include/have_semijoin.inc
---source include/have_materialization.inc
---source include/have_firstmatch.inc
---source include/have_loosescan.inc
---source include/have_index_condition_pushdown.inc
---source include/have_mrr.inc
-
---echo # Create the various tables required for testing this feature
-CREATE TABLE class(class_num INT NOT NULL PRIMARY KEY, class_name VARCHAR(20)) ENGINE=INNODB;
-CREATE TABLE student(stu_name VARCHAR(20) NOT NULL PRIMARY KEY, stu_city VARCHAR(20), stu_id INT) ENGINE=INNODB;
-CREATE TABLE roster(ros_num INT NOT NULL PRIMARY KEY, class_num INT, stu_name VARCHAR(20), FOREIGN KEY fk1(class_num) REFERENCES class(class_num), FOREIGN KEY fk2(stu_name) REFERENCES student(stu_name)) ENGINE=INNODB;
-INSERT INTO class VALUES(1,'math'),(2,'science'),(3,'history'),(4,'geog');
-INSERT INTO student VALUES('amit','bangalore',1),('ashu','hyderabad',2),('sumit','kota',2),('rajdeep','bbsr',4);
-INSERT INTO roster VALUES(1,3,'amit'),(2,4,'amit'),(3, 1, 'ashu'),(4,3,'ashu'),(5,1,'sumit'),(6,4,'sumit');
-
-CREATE TABLE ot1(a INT) ENGINE=INNODB;
-CREATE TABLE ot2(a INT) ENGINE=INNODB;
-CREATE TABLE ot3(a INT) ENGINE=INNODB;
-CREATE TABLE it1(a INT) ENGINE=INNODB;
-CREATE TABLE it2(a INT) ENGINE=INNODB;
-CREATE TABLE it3(a INT) ENGINE=INNODB;
-
-INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
-INSERT INTO ot2 VALUES(0),(2),(4),(6);
-INSERT INTO ot3 VALUES(0),(3),(6);
-INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
-INSERT INTO it2 VALUES(0),(2),(4),(6);
-INSERT INTO it3 VALUES(0),(3),(6);
-
-CREATE TABLE tx(c1 INT NOT NULL PRIMARY KEY, c2 INT) ENGINE=INNODB;
-CREATE TABLE ty(c1 INT, c2 INT, c3 VARCHAR(20) NOT NULL PRIMARY KEY, FOREIGN KEY fk1(c1) REFERENCES tx(c1)) ENGINE=INNODB;
-CREATE TABLE tz(c1 INT, c2 INT, c3 VARCHAR(20), FOREIGN KEY fk2(c3) REFERENCES ty(c3)) ENGINE=INNODB;
-
-INSERT INTO tx VALUES(1,1),(2,2),(3,3),(4,4),(5,5);
-INSERT INTO ty VALUES(1,1,'1 match tx'),(2,2,'2 match tx'),(4,4,'4 match tx');
-INSERT INTO tz VALUES(2,2,'2 match tx'),(4,4,'4 match tx');
-INSERT INTO tz VALUES(20,20,'2 match tx'),(40,40,'4 match tx');
-INSERT INTO tz VALUES(200,200,'2 match tx'),(400,400,'4 match tx');
-
-CREATE TABLE emp (
- id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
- fname VARCHAR(25) NOT NULL,
- lname VARCHAR(25) NOT NULL,
- store_id INT NOT NULL,
- dept_id INT NOT NULL,
- KEY(dept_id)
-) ENGINE=INNODB
- PARTITION BY RANGE(id) (
- PARTITION p0 VALUES LESS THAN (5),
- PARTITION p1 VALUES LESS THAN (10),
- PARTITION p2 VALUES LESS THAN (15),
- PARTITION p3 VALUES LESS THAN MAXVALUE
-);
-
-CREATE TABLE dept (
- dept_id INT NOT NULL,
- dept_name varchar(25) NOT NULL,
- KEY(dept_id)
-) ENGINE=INNODB
- PARTITION BY RANGE(dept_id) (
- PARTITION p0 VALUES LESS THAN (3),
- PARTITION p1 VALUES LESS THAN (6),
- PARTITION p3 VALUES LESS THAN MAXVALUE
-);
-
-INSERT INTO emp(fname, lname, store_id, dept_id) VALUES
- ('Bob', 'Taylor', 3, 2), ('Frank', 'Williams', 1, 2),
- ('Ellen', 'Johnson', 3, 4), ('Jim', 'Smith', 2, 4),
- ('Mary', 'Jones', 1, 1), ('Linda', 'Black', 2, 3),
- ('Ed', 'Jones', 2, 1), ('June', 'Wilson', 3, 1),
- ('Andy', 'Smith', 1, 3), ('Lou', 'Waters', 2, 4),
- ('Jill', 'Stone', 1, 4), ('Roger', 'White', 3, 2),
- ('Howard', 'Andrews', 1, 2), ('Fred', 'Goldberg', 3, 3),
- ('Barbara', 'Brown', 2, 3), ('Alice', 'Rogers', 2, 2),
- ('Mark', 'Morgan', 3, 3), ('Karen', 'Cole', 3, 2);
-
-INSERT INTO dept VALUES
- (1,'admin'),(2, 'finance'),
- (3,'IT'),(4, 'security'),
- (5,'ref'),(6,'services');
-
-CREATE TABLE tb1(c1 TEXT(16), c2 TEXT(16)) ENGINE=INNODB;
-CREATE TABLE tb2(c1 TEXT(16)) ENGINE=INNODB;
-
-INSERT INTO tb1 VALUES(repeat('a',1000),repeat('b',1000));
-INSERT INTO tb2 VALUES(repeat('a',1000));
-
-COMMIT;
-
-let $query1 = UPDATE class JOIN roster ON class.class_num=roster.class_num
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $query2 = UPDATE class JOIN roster ON class.class_num=roster.class_num
- SET class.class_name='geography'
- WHERE roster.class_num IN (SELECT class_num FROM roster);
-
-let $query3 = UPDATE student JOIN roster ON student.stu_name=roster.stu_name
- SET student.stu_city='kolkata'
- WHERE student.stu_name IN (SELECT stu_name FROM roster);
-
-let $query4 = UPDATE student JOIN roster ON student.stu_name=roster.stu_name
- SET student.stu_city='kolkata'
- WHERE roster.stu_name IN (SELECT stu_name FROM roster);
-
-let $query5 = UPDATE LOW_PRIORITY class JOIN roster ON class.class_num=roster.class_num
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $query6 = UPDATE IGNORE class JOIN roster ON class.class_num=roster.class_num
- SET class.class_name='geography'
- WHERE roster.class_num IN (SELECT class_num FROM roster);
-
-let $query7 = UPDATE class RIGHT JOIN roster ON class.class_num=roster.class_num
- SET class.class_name='geography'
- WHERE roster.class_num IN (SELECT class_num FROM roster);
-
-let $query8 = UPDATE student LEFT JOIN roster ON student.stu_name=roster.stu_name
- SET student.stu_city='kolkata'
- WHERE student.stu_name IN (SELECT stu_name FROM roster);
-
-let $query9 = UPDATE class INNER JOIN roster ON class.class_num=roster.class_num
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $query10 = UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
- SET ot1.a = 111, ot2.a = 222
- WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-
-let $query11 = UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
- SET ot1.a = 111
- WHERE COALESCE(ot2.a,0) IN (SELECT a FROM it3);
-
-let $query12 = UPDATE ot1 LEFT JOIN ot2 ON ot1.a=ot2.a
- SET ot1.a = 111, ot2.a = 222
- WHERE (ot1.a,ot2.a) IN (SELECT a,a FROM it3 ORDER BY 2);
-
-let $query13 = UPDATE ot1 JOIN ot2 ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it3)
- SET ot1.a = 111, ot2.a = 222
- WHERE ot1.a IN (SELECT a FROM it3);
-
-let $query14 = UPDATE ot1 JOIN ot2 ON ot1.a IN (SELECT a FROM it3)
- SET ot1.a = 111, ot2.a = 222
- WHERE ot1.a IN (SELECT a FROM it3);
-
-let $query15 = UPDATE ot1 LEFT JOIN (ot2 JOIN ot3 ON ot2.a=ot3.a) ON ot1.a=ot2.a AND ot1.a IN (SELECT a FROM it1 ORDER BY a)
- SET ot1.a = 111
- WHERE ot1.a IN (SELECT a FROM it3 ORDER BY a);
-
-let $query16 = UPDATE class, roster
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-
-let $query17 = UPDATE class INNER JOIN roster ON class.class_num = roster.class_num
- AND class.class_name = 'history' OR class.class_name = 'math'
- SET class.class_name='geography'
- WHERE class.class_num IN (SELECT class_num FROM roster ORDER BY ros_num);
-
-let $query18 = UPDATE class JOIN roster ON class.class_num IN (SELECT class_num from roster ORDER BY ros_num)
- SET class.class_name='geography';
-
-# The following are multi-table DELETE queries
-
-let $queryd_1 = DELETE class FROM class RIGHT JOIN roster
- ON class.class_num=roster.class_num
- WHERE roster.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_2 = DELETE LOW_PRIORITY FROM class USING class INNER JOIN roster
- ON class.class_num=roster.class_num
- WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_3 = DELETE QUICK FROM class USING class LEFT JOIN roster
- ON class.class_num=roster.class_num
- WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_4 = DELETE IGNORE FROM class USING class RIGHT JOIN roster
- ON class.class_num=roster.class_num
- WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_5 = DELETE class FROM class, roster
- WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_6 = DELETE FROM class USING class, roster
- WHERE class.class_num IN (SELECT class_num FROM roster);
-
-let $queryd_7 = DELETE student FROM student LEFT JOIN roster
- ON student.stu_name=roster.stu_name
- WHERE student.stu_name IN (SELECT stu_name FROM roster);
-
-let $queryd_8 = DELETE student FROM student INNER JOIN roster INNER JOIN class
- ON student.stu_name=roster.stu_name AND roster.class_num = class.class_num AND stu_city = 'bbsr'
- WHERE student.stu_name IN (SELECT stu_name FROM roster);
-
-let $queryd_9 = DELETE tz FROM tz JOIN ty
- ON tz.c3=ty.c3 JOIN tx ON ty.c1=tx.c1
- WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-
-let $queryd_10 = DELETE FROM tz USING tz JOIN ty
- ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
- WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx WHERE c2>2));
-
-let $queryd_11 = DELETE FROM tz USING tz JOIN ty
- ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
- WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-
-let $queryd_12 = DELETE FROM tz USING tz INNER JOIN ty
- ON tz.c3=ty.c3 LEFT JOIN tx ON ty.c1=tx.c1
- WHERE ty.c1 IN(SELECT c2 from ty WHERE ty.c1 IN(SELECT c1 from tx));
-
-let $queryd_13 = DELETE tz FROM tx,ty,tz
- WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tx WHERE c2>2));
-
-let $queryd_14 = DELETE tz FROM tx,ty,tz
- WHERE ty.c1 IN(SELECT c2 from tx WHERE ty.c1 IN(SELECT c1 from tx));
-
-# The following are a few SELECT queries
-
-let $query_s1 = SELECT * FROM class;
-
-let $query_s2 = SELECT * FROM student;
-
-let $query_s3 = SELECT * FROM ot1;
-
-let $query_s4 = SELECT * FROM ot2;
-
-let $query_s5 = SELECT * FROM tz;
-
-# Verifying various variations of the JOIN syntax using 3 tables
-
-let $query2a = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c1);
-
-let $query2b = UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2));
-
-let $query2c = UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT c1 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2) ORDER BY c2);
-
-let $query2d = UPDATE tx JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-
-let $query2e = UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz ORDER BY c2));
-
-let $query2f = UPDATE tx,ty,tz
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz WHERE c2>2 ORDER BY c2));
-
-let $query2g = UPDATE tx,ty,tz
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT c2 from ty WHERE ty.c3 IN(SELECT c3 from tz));
-
-let $query2_s = SELECT * FROM tx;
-
-# The following queries have JOIN syntax within the IN sub-query
-
-let $query3a = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT ty.c2 from ty,tz WHERE ty.c3 = tz.c3 and tz.c2 > 2);
-
-let $query3b = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT ty.c2 from ty JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-
-let $query3c = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT ty.c2 from ty INNER JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-
-let $query3d = UPDATE tx JOIN ty ON tx.c1=ty.c1 JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT ty.c2 from ty LEFT JOIN tz ON ty.c3 = tz.c3 and tz.c2 > 2);
-
-let $query3e = UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100
- WHERE tx.c1 IN(SELECT c2 from ty) AND tx.c1 IN(SELECT c2 from tz);
-
-# Updating columns from more than 1 table
-
-let $query4a = UPDATE tx,ty,tz
- SET tx.c2=100,tz.c2=101
- WHERE tx.c1 IN(SELECT c2 from ty);
-
-let $query4b = UPDATE tx INNER JOIN ty ON tx.c1=ty.c1 LEFT JOIN tz ON ty.c3=tz.c3
- SET tx.c2=100,tz.c2=101
- WHERE tx.c1 IN(SELECT c2 from ty);
-
-let $query4_s1 = SELECT * FROM tx;
-
-let $query4_s2 = SELECT * FROM tz;
-
-# Verfying with partitioned tables
-
-let $query5a = UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id = dept.dept_id
- SET emp.store_id = 500
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5b = UPDATE emp PARTITION(p1,p0) JOIN dept ON emp.dept_id = dept.dept_id
- SET emp.store_id = 500
- WHERE dept.dept_id IN (SELECT dept_id from dept);
-
-let $query5c = UPDATE emp PARTITION(p0,p3) RIGHT JOIN dept ON emp.dept_id = dept.dept_id
- SET emp.store_id = 500
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5d = UPDATE LOW_PRIORITY emp PARTITION(p3,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
- SET emp.store_id = 500
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5e = UPDATE IGNORE emp PARTITION(p3,p1,p2,p0) JOIN dept ON emp.dept_id = dept.dept_id
- SET emp.store_id = 500
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5f = UPDATE emp LEFT JOIN dept PARTITION(p0) ON emp.dept_id = dept.dept_id
- SET dept.dept_name = 'Junk'
- WHERE dept.dept_id IN (SELECT dept_id from emp);
-
-let $query5g = UPDATE emp INNER JOIN dept PARTITION(p1,p0) ON emp.dept_id = dept.dept_id
- SET dept.dept_name = 'Junk'
- WHERE dept.dept_id IN (SELECT DISTINCT dept_id from emp);
-
-let $query5h = UPDATE emp PARTITION(p0,p2), dept
- SET emp.store_id = 500
- WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-
-let $query5i = UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id
- SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
- WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-
-let $query5j = UPDATE emp INNER JOIN dept ON emp.dept_id = dept.dept_id AND emp.fname = 'Bob' OR emp.lname = 'Cole'
- SET emp.store_id = 500, emp.lname = 'not SET', emp.fname = 'not SET'
- WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-
-let $query5k = UPDATE emp PARTITION(p0,p1,p2) INNER JOIN dept ON emp.dept_id = dept.dept_id
- SET emp.store_id = 500
- WHERE emp.dept_id IN (SELECT dept_id FROM dept);
-
-let $query5l = UPDATE emp PARTITION(p1,p3) JOIN dept ON emp.dept_id IN (SELECT dept_id FROM dept)
- SET emp.store_id = 500;
-
-let $queryd_5a = DELETE emp FROM emp PARTITION(p1,p3) JOIN dept
- ON emp.dept_id = dept.dept_id
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5b = DELETE FROM emp USING emp PARTITION(p0) JOIN dept
- ON emp.dept_id = dept.dept_id
- WHERE dept.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5c = DELETE QUICK emp FROM emp PARTITION(p1,p2,p3) RIGHT JOIN dept
- ON emp.dept_id = dept.dept_id
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5d = DELETE LOW_PRIORITY emp FROM emp PARTITION(p3,p0) JOIN dept
- ON emp.dept_id = dept.dept_id
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5e = DELETE IGNORE emp FROM emp JOIN dept
- ON emp.dept_id = dept.dept_id
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5f = DELETE emp FROM emp PARTITION(p1,p3,p0) LEFT JOIN dept
- ON emp.dept_id = dept.dept_id
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $queryd_5g = DELETE emp FROM emp PARTITION(p1,p3,p0,p2) INNER JOIN dept
- ON emp.dept_id = dept.dept_id
- WHERE emp.dept_id IN (SELECT dept_id from dept);
-
-let $query5_s1 = SELECT * FROM emp;
-
-let $query5_s2 = SELECT * FROM dept;
-
-# A test to verify multi-table UPDATE with BLOB data type
-
-let $query6a = UPDATE tb1 JOIN tb2 ON tb1.c1=tb2.c1
- SET tb1.c2='geography'
- WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-
-let $query6b = DELETE FROM tb1 USING tb1 JOIN tb2
- ON tb1.c1=tb2.c1
- WHERE tb1.c1 IN (SELECT c1 FROM tb2);
-
---echo # The multi table UPDATE tests starts here
---echo # The optimizer_switch is set to default. We are verifying the various supported JOIN types for SEMI-JOIN
-
-SET optimizer_switch=default;
-SET GLOBAL innodb_stats_persistent=on;
-COMMIT;
-SET autocommit=off;
-
---source include/multi_table_upd_sj.inc
-
---echo # The following queries would select Firstmatch based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='semijoin=on,firstmatch=on,materialization=off,loosescan=off,index_condition_pushdown=off,mrr=off';
-COMMIT;
-
---source include/multi_table_upd_sj.inc
-
---echo # The following queries would select Materialize based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='semijoin=on,loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,materialization=on';
-COMMIT;
-
---source include/multi_table_upd_sj.inc
-
---echo # The following queries would select Loosescan strategy based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='loosescan=on,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-
---source include/multi_table_upd_sj.inc
-
---echo # The following queries would select Duplicate Weedout strategy based on the optimizer switch settings
-
-SET optimizer_switch='loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-
---source include/multi_table_upd_sj.inc
-
-# Delete the foreign keys and constriants before using the DELETE commands
-
-ALTER TABLE roster DROP FOREIGN KEY roster_ibfk_1;
-ALTER TABLE roster DROP FOREIGN KEY roster_ibfk_2;
-ALTER TABLE roster DROP PRIMARY KEY;
-ALTER TABLE class DROP PRIMARY KEY;
-ALTER TABLE student DROP PRIMARY KEY;
-ALTER TABLE roster ADD KEY(class_num);
-ANALYZE TABLE roster,class,student,emp,dept;
---echo # The multi table DELETE tests starts here
---echo # The optimizer_switch is set to default. We are verifying the various supported JOIN types for SEMI-JOIN
-
-SET optimizer_switch=default;
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
---echo # The following queries would select Firstmatch based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET GLOBAL innodb_stats_persistent=on;
-SET optimizer_switch='semijoin=on,firstmatch=on,materialization=off,loosescan=off,index_condition_pushdown=off,mrr=off';
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
---echo # The following queries would select Materialize based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='semijoin=on,loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,materialization=on';
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
---echo # The following queries would select Loosescan strategy based on the optimizer switch settings
---echo # Please note that some of the queries would still show Duplicate Weedout
-
-SET optimizer_switch='loosescan=on,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
---echo # The following queries would select Duplicate Weedout strategy based on the optimizer switch settings
-
-SET optimizer_switch='loosescan=off,firstmatch=off,index_condition_pushdown=off,mrr=off,semijoin=on,materialization=off';
-COMMIT;
-
---source include/multi_table_del_sj.inc
-
--- echo # Drop the tables that were created
-
-DROP TABLE tz;
-DROP TABLE ty;
-DROP TABLE tx;
-DROP TABLE ot1;
-DROP TABLE ot2;
-DROP TABLE ot3;
-DROP TABLE it1;
-DROP TABLE it2;
-DROP TABLE it3;
-DROP TABLE roster;
-DROP TABLE student;
-DROP TABLE class;
-DROP TABLE tb1;
-DROP TABLE tb2;
-DROP TABLE emp;
-DROP TABLE dept;
-SET optimizer_switch=default;
-COMMIT;
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-5.6 branch (amit.bhattacharya:4499 to 4500) | Amit Bhattacharya | 18 Oct |