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