1--source include/have_innodb.inc 2 3CREATE TABLE `t1` ( 4 `c1` int(11) NOT NULL, 5 `c2` datetime DEFAULT NULL, 6 PRIMARY KEY (`c1`) 7) ENGINE=InnoDB DEFAULT CHARSET=latin1; 8 9CREATE TABLE `t2` ( 10 `c0` varchar(10) NOT NULL, 11 `c1` int(11) NOT NULL, 12 `c2` int(11) NOT NULL, 13 PRIMARY KEY (`c0`,`c1`), 14 KEY `c1` (`c1`), 15 KEY `c2` (`c2`) 16) ENGINE=InnoDB DEFAULT CHARSET=latin1; 17 18CREATE TABLE `t3` ( 19 `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 20 `c1` datetime NOT NULL, 21 `c2` bigint(20) NOT NULL, 22 `c3` int(4) unsigned NOT NULL, 23 PRIMARY KEY (`id`), 24 KEY `c2` (`c2`), 25 KEY `c3` (`c3`) 26) ENGINE=InnoDB DEFAULT CHARSET=latin1; 27 28CREATE TABLE `t4` ( 29 `c1` int(11) NOT NULL, 30 `c2` bigint(20) DEFAULT NULL, 31 `c3` int(11) NOT NULL 32) ENGINE=InnoDB DEFAULT CHARSET=latin1; 33 34 CREATE ALGORITHM=UNDEFINED VIEW `v1` AS select `t4`.`c1` AS `c1`,`t4`.`c2` AS `c2`,`t4`.`c3` AS `c3` from `t4`; 35 36UPDATE t1 a JOIN t2 b ON a.c1 = b.c1 JOIN v1 vw ON b.c2 = vw.c1 JOIN t3 del ON vw.c2 = del.c2 SET a.c2 = ( SELECT max(t.c1) FROM t3 t, v1 i WHERE del.c2 = t.c2 AND vw.c3 = i.c3 AND t.c3 = 4 ) WHERE a.c2 IS NULL OR a.c2 < '2011-05-01'; 37 38drop view v1; 39drop table t1,t2,t3,t4; 40 41--echo # 42--echo # MDEV-14862: Server crashes in Bitmap<64u>::merge / add_key_field 43--echo # 44 45CREATE TABLE t1 (a INT) ENGINE=InnoDB; 46CREATE VIEW v1 AS SELECT * FROM t1; 47CREATE TABLE t2 (b INT) ENGINE=InnoDB; 48DELETE FROM v1 WHERE a IN ( SELECT a FROM t2 ); 49DELETE FROM v1 WHERE (a,a) IN ( SELECT a,a FROM t2 ); 50drop view v1; 51drop table t1,t2; 52 53--echo # 54--echo # MDEV-10232 Scalar result of subquery changes after adding an outer select stmt 55--echo # 56 57CREATE TABLE t1 ( 58 a_id INT(20) UNSIGNED NOT NULL AUTO_INCREMENT, 59 b_id INT(20) UNSIGNED NULL DEFAULT NULL, 60 c_id VARCHAR(255) NULL DEFAULT NULL, 61 PRIMARY KEY (a_id))COLLATE = 'utf8_general_ci' ENGINE = InnoDB; 62 63CREATE TABLE t2 ( 64 b_id INT(20) UNSIGNED NOT NULL AUTO_INCREMENT, 65 c_id VARCHAR(255) NULL DEFAULT NULL, 66 PRIMARY KEY (b_id), 67 INDEX idx_c_id (c_id))COLLATE = 'utf8_general_ci' ENGINE = InnoDB; 68 69INSERT INTO t1 (b_id, c_id) VALUES (NULL, NULL); 70INSERT INTO t2 (c_id) VALUES (NULL); 71INSERT INTO t2 (c_id) VALUES (NULL); 72 73SELECT * FROM t1; 74SELECT t2.b_id FROM t1,t2 WHERE t2.c_id = t1.c_id; 75UPDATE t1 SET b_id = (SELECT t2.b_id FROM t2 t2 WHERE t2.c_id = t1.c_id); 76SELECT * FROM t1; 77drop table t1,t2; 78 79 80--echo # 81--echo # MDEV-18300: ASAN error in Field_blob::get_key_image upon UPDATE with subquery 82--echo # 83 84set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity; 85set @save_use_stat_tables= @@use_stat_tables; 86set use_stat_tables=preferably; 87set optimizer_use_condition_selectivity=4; 88 89CREATE TABLE t1 (a INT, b CHAR(8)) ENGINE=InnoDB; 90insert into t1 values (1,'foo'),(2, 'abc'); 91CREATE TABLE t2 (c CHAR(8), d BLOB) ENGINE=InnoDB; 92insert into t2 values ('abc', 'foo'),('edf', 'food'); 93 94--disable_result_log 95ANALYZE TABLE t1,t2; 96--enable_result_log 97UPDATE t1 SET a = 1 WHERE b = ( SELECT c FROM t2 WHERE d = 'foo' ); 98SELECT * FROM t1; 99DROP TABLE t1, t2; 100 101create table t1 (a int not null, b int, c int) engine=InnoDB; 102create table t2 (d int, e int) engine=InnoDB; 103update t1, t2 set a=NULL, b=2, c=NULL where b=d and e=200; 104drop table t1,t2; 105 106set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity; 107set @@use_stat_tables= @save_use_stat_tables; 108 109CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; 110CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; 111INSERT INTO t1 VALUES (1); 112INSERT INTO t2 VALUES (2); 113BEGIN; 114SELECT * FROM t1 UNION 115SELECT * FROM t2 FOR UPDATE; 116 117--connect(con2,localhost,root,,) 118BEGIN; 119--send SELECT * FROM t2 FOR UPDATE; 120--connection default 121 122select * from t2; 123update t2 set a=a+100; 124commit; 125 126--connection con2 127--reap 128 129commit; 130 131--connection default 132drop table t1,t2; 133 134 135CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY) engine=innodb; 136CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY) engine=innodb; 137INSERT INTO t1 VALUES (1); 138INSERT INTO t2 VALUES (2); 139BEGIN; 140SELECT * FROM ( 141 SELECT * FROM t1 UNION 142 SELECT * FROM t2 FOR UPDATE 143 ) t; 144 145--connection con2 146BEGIN; 147--send SELECT * FROM t2 FOR UPDATE; 148--connection default 149 150select * from t2; 151update t2 set a=a+100; 152commit; 153 154--connection con2 155--reap 156 157commit; 158 159--connection default 160disconnect con2; 161drop table t1,t2; 162 163--echo # End of 10.4 tests 164