1set default_storage_engine='tokudb';
2drop table if exists s,t;
3create table s (id bigint not null primary key, x bigint);
4insert into s values (1,0),(2,0),(3,0),(4,0);
5create table t like s;
6begin;
7insert into t select * from s;
8rollback;
9create trigger t_trigger before insert on t for each row insert into s values (1000000,0);
10begin;
11insert into t select * from s on duplicate key update x=t.x+1;
12ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
13rollback;
14drop trigger t_trigger;
15create trigger t_trigger after insert on t for each row insert into s values (1000000,0);
16begin;
17insert into t select * from s on duplicate key update x=t.x+1;
18ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
19rollback;
20drop trigger t_trigger;
21create trigger t_trigger before insert on t for each row delete from s where id=1000000;
22begin;
23insert into t select * from s on duplicate key update x=t.x+1;
24ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
25rollback;
26drop trigger t_trigger;
27create trigger t_trigger after insert on t for each row delete from s where id=1000000;
28begin;
29insert into t select * from s on duplicate key update x=t.x+1;
30ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
31rollback;
32drop trigger t_trigger;
33create trigger t_trigger before insert on t for each row update s set x=x+1 where id=1000000;
34begin;
35insert into t select * from s on duplicate key update x=t.x+1;
36ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
37rollback;
38drop trigger t_trigger;
39create trigger t_trigger after insert on t for each row update s set x=x+1 where id=1000000;
40begin;
41insert into t select * from s on duplicate key update x=t.x+1;
42ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
43rollback;
44drop trigger t_trigger;
45truncate table t;
46insert into t values (1,0);
47create trigger t_trigger before insert on t for each row insert into s values (1000000,0);
48begin;
49insert into t select * from s on duplicate key update x=t.x+1;
50ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
51rollback;
52drop trigger t_trigger;
53create trigger t_trigger after insert on t for each row insert into s values (1000000,0);
54begin;
55insert into t select * from s on duplicate key update x=t.x+1;
56ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
57rollback;
58drop trigger t_trigger;
59create trigger t_trigger before insert on t for each row delete from s where id=1000000;
60begin;
61insert into t select * from s on duplicate key update x=t.x+1;
62ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
63rollback;
64drop trigger t_trigger;
65create trigger t_trigger after insert on t for each row delete from s where id=1000000;
66begin;
67insert into t select * from s on duplicate key update x=t.x+1;
68ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
69rollback;
70drop trigger t_trigger;
71create trigger t_trigger before insert on t for each row update s set x=x+1 where id=1000000;
72begin;
73insert into t select * from s on duplicate key update x=t.x+1;
74ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
75rollback;
76drop trigger t_trigger;
77create trigger t_trigger after insert on t for each row update s set x=x+1 where id=1000000;
78begin;
79insert into t select * from s on duplicate key update x=t.x+1;
80ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
81rollback;
82drop trigger t_trigger;
83truncate table t;
84insert into t values (1,0);
85create trigger t_trigger before update on t for each row insert into s values (1000000,0);
86begin;
87insert into t select * from s on duplicate key update x=t.x+1;
88ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
89rollback;
90drop trigger t_trigger;
91create trigger t_trigger after update on t for each row insert into s values (1000000,0);
92begin;
93insert into t select * from s on duplicate key update x=t.x+1;
94ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
95rollback;
96drop trigger t_trigger;
97create trigger t_trigger before update on t for each row delete from s where id=1000000;
98begin;
99insert into t select * from s on duplicate key update x=t.x+1;
100ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
101rollback;
102drop trigger t_trigger;
103create trigger t_trigger after update on t for each row delete from s where id=1000000;
104begin;
105insert into t select * from s on duplicate key update x=t.x+1;
106ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
107rollback;
108drop trigger t_trigger;
109create trigger t_trigger before update on t for each row update s set x=x+1 where id=1000000;
110begin;
111insert into t select * from s on duplicate key update x=t.x+1;
112ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
113rollback;
114drop trigger t_trigger;
115create trigger t_trigger after update on t for each row update s set x=x+1 where id=1000000;
116begin;
117insert into t select * from s on duplicate key update x=t.x+1;
118ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger
119rollback;
120drop trigger t_trigger;
121drop table s,t;
122