~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

« back to all changes in this revision

Viewing changes to mysql-test/r/trigger-trans.result

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Tretkowski
  • Date: 2010-03-17 14:56:02 UTC
  • Revision ID: james.westby@ubuntu.com-20100317145602-x7e30l1b2sb5s6w6
Tags: upstream-5.1.45
ImportĀ upstreamĀ versionĀ 5.1.45

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
drop table if exists t1;
 
2
create table t1 (a varchar(16), b int) engine=innodb;
 
3
create trigger t1_bi before insert on t1 for each row
 
4
begin
 
5
set new.a := upper(new.a);
 
6
set new.b := new.b + 3;
 
7
end|
 
8
select trigger_schema, trigger_name, event_object_schema,
 
9
event_object_table, action_statement from information_schema.triggers
 
10
where event_object_schema = 'test' and event_object_table = 't1';
 
11
trigger_schema  trigger_name    event_object_schema     event_object_table      action_statement
 
12
test    t1_bi   test    t1      begin
 
13
set new.a := upper(new.a);
 
14
set new.b := new.b + 3;
 
15
end
 
16
insert into t1 values ('The Lion', 10);
 
17
select * from t1;
 
18
a       b
 
19
THE LION        13
 
20
optimize table t1;
 
21
Table   Op      Msg_type        Msg_text
 
22
test.t1 optimize        note    Table does not support optimize, doing recreate + analyze instead
 
23
test.t1 optimize        status  OK
 
24
select trigger_schema, trigger_name, event_object_schema,
 
25
event_object_table, action_statement from information_schema.triggers
 
26
where event_object_schema = 'test' and event_object_table = 't1';
 
27
trigger_schema  trigger_name    event_object_schema     event_object_table      action_statement
 
28
test    t1_bi   test    t1      begin
 
29
set new.a := upper(new.a);
 
30
set new.b := new.b + 3;
 
31
end
 
32
insert into t1 values ('The Unicorn', 20);
 
33
select * from t1;
 
34
a       b
 
35
THE LION        13
 
36
THE UNICORN     23
 
37
alter table t1 add column c int default 0;
 
38
select trigger_schema, trigger_name, event_object_schema,
 
39
event_object_table, action_statement from information_schema.triggers
 
40
where event_object_schema = 'test' and event_object_table = 't1';
 
41
trigger_schema  trigger_name    event_object_schema     event_object_table      action_statement
 
42
test    t1_bi   test    t1      begin
 
43
set new.a := upper(new.a);
 
44
set new.b := new.b + 3;
 
45
end
 
46
insert into t1 values ('Alice', 30, 1);
 
47
select * from t1;
 
48
a       b       c
 
49
THE LION        13      0
 
50
THE UNICORN     23      0
 
51
ALICE   33      1
 
52
alter table t1 rename to t1;
 
53
select trigger_schema, trigger_name, event_object_schema,
 
54
event_object_table, action_statement from information_schema.triggers
 
55
where event_object_schema = 'test' and event_object_table = 't1';
 
56
trigger_schema  trigger_name    event_object_schema     event_object_table      action_statement
 
57
test    t1_bi   test    t1      begin
 
58
set new.a := upper(new.a);
 
59
set new.b := new.b + 3;
 
60
end
 
61
insert into t1 values ('The Crown', 40, 1);
 
62
select * from t1;
 
63
a       b       c
 
64
THE LION        13      0
 
65
THE UNICORN     23      0
 
66
ALICE   33      1
 
67
THE CROWN       43      1
 
68
alter table t1 rename to t1, add column d int default 0;
 
69
select trigger_schema, trigger_name, event_object_schema,
 
70
event_object_table, action_statement from information_schema.triggers
 
71
where event_object_schema = 'test' and event_object_table = 't1';
 
72
trigger_schema  trigger_name    event_object_schema     event_object_table      action_statement
 
73
test    t1_bi   test    t1      begin
 
74
set new.a := upper(new.a);
 
75
set new.b := new.b + 3;
 
76
end
 
77
insert into t1 values ('The Pie', 50, 1, 1);
 
78
select * from t1;
 
79
a       b       c       d
 
80
THE LION        13      0       0
 
81
THE UNICORN     23      0       0
 
82
ALICE   33      1       0
 
83
THE CROWN       43      1       0
 
84
THE PIE 53      1       1
 
85
drop table t1;
 
86
 
 
87
Bug#26141 mixing table types in trigger causes full
 
88
table lock on innodb table
 
89
 
 
90
Ensure we do not open and lock tables for the triggers we do not
 
91
fire.
 
92
 
 
93
drop table if exists t1, t2, t3;
 
94
drop trigger if exists trg_bug26141_au;
 
95
drop trigger if exists trg_bug26141_ai;
 
96
create table t1 (c int primary key) engine=innodb;
 
97
create table t2 (c int) engine=myisam;
 
98
create table t3 (c int) engine=myisam;
 
99
insert into t1 (c) values (1);
 
100
create trigger trg_bug26141_ai after insert on t1
 
101
for each row
 
102
begin
 
103
insert into t2 (c) values (1);
 
104
# We need the 'sync' lock to synchronously wait in connection 2 till 
 
105
# the moment when the trigger acquired all the locks.
 
106
select release_lock("lock_bug26141_sync") into @a;
 
107
# 1000 is time in seconds of lock wait timeout -- this is a way
 
108
# to cause a manageable sleep up to 1000 seconds
 
109
select get_lock("lock_bug26141_wait", 1000) into @a;
 
110
end|
 
111
create trigger trg_bug26141_au after update on t1
 
112
for each row
 
113
begin
 
114
insert into t3 (c) values (1);
 
115
end|
 
116
select get_lock("lock_bug26141_wait", 0);
 
117
get_lock("lock_bug26141_wait", 0)
 
118
1
 
119
select get_lock("lock_bug26141_sync", /* must not be priorly locked */ 0);
 
120
get_lock("lock_bug26141_sync", /* must not be priorly locked */ 0)
 
121
1
 
122
insert into t1 (c) values (2);
 
123
select get_lock("lock_bug26141_sync", 1000);
 
124
get_lock("lock_bug26141_sync", 1000)
 
125
1
 
126
update t1 set c=3 where c=1;
 
127
select release_lock("lock_bug26141_sync");
 
128
release_lock("lock_bug26141_sync")
 
129
1
 
130
select release_lock("lock_bug26141_wait");
 
131
release_lock("lock_bug26141_wait")
 
132
1
 
133
select * from t1;
 
134
c
 
135
2
 
136
3
 
137
select * from t2;
 
138
c
 
139
1
 
140
select * from t3;
 
141
c
 
142
1
 
143
drop table t1, t2, t3;
 
144
DROP TABLE IF EXISTS t1;
 
145
DROP TABLE IF EXISTS t2;
 
146
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=innodb;
 
147
CREATE TABLE t2(b INT, FOREIGN KEY(b) REFERENCES t1(a)) ENGINE=innodb;
 
148
INSERT INTO t1 VALUES (1);
 
149
CREATE TRIGGER t1_bd BEFORE DELETE ON t1 FOR EACH ROW SET @a = 1;
 
150
CREATE TRIGGER t1_ad AFTER DELETE ON t1 FOR EACH ROW SET @b = 1;
 
151
SET @a = 0;
 
152
SET @b = 0;
 
153
TRUNCATE t1;
 
154
SELECT @a, @b;
 
155
@a      @b
 
156
0       0
 
157
INSERT INTO t1 VALUES (1);
 
158
DELETE FROM t1;
 
159
SELECT @a, @b;
 
160
@a      @b
 
161
1       1
 
162
DROP TABLE t2, t1;
 
163
End of 5.0 tests
 
164
BUG#31612
 
165
Trigger fired multiple times leads to gaps in auto_increment sequence
 
166
create table t1 (a int, val char(1)) engine=InnoDB;
 
167
create table t2 (b int auto_increment primary key,
 
168
val char(1)) engine=InnoDB;
 
169
create trigger t1_after_insert after
 
170
insert on t1 for each row insert into t2 set val=NEW.val;
 
171
insert into t1 values ( 123, 'a'), ( 123, 'b'), ( 123, 'c'),
 
172
(123, 'd'), (123, 'e'), (123, 'f'), (123, 'g');
 
173
insert into t1 values ( 654, 'a'), ( 654, 'b'), ( 654, 'c'),
 
174
(654, 'd'), (654, 'e'), (654, 'f'), (654, 'g');
 
175
select * from t2 order by b;
 
176
b       val
 
177
1       a
 
178
2       b
 
179
3       c
 
180
4       d
 
181
5       e
 
182
6       f
 
183
7       g
 
184
8       a
 
185
9       b
 
186
10      c
 
187
11      d
 
188
12      e
 
189
13      f
 
190
14      g
 
191
drop trigger t1_after_insert;
 
192
drop table t1,t2;