~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
SET BINLOG_FORMAT=MIXED;
2
RESET MASTER;
3
CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB;
4
INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
5
BEGIN;
6
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
7
UPDATE t1 SET b = 2*a WHERE a > 1;
8
COMMIT;
9
BEGIN;
10
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
11
UPDATE t1 SET b = a * a WHERE a > 3;
12
COMMIT;
13
SET BINLOG_FORMAT=STATEMENT;
14
BEGIN;
15
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
16
UPDATE t1 SET b = 1*a WHERE a > 1;
17
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-UNCOMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
18
COMMIT;
19
BEGIN;
20
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
21
UPDATE t1 SET b = 2*a WHERE a > 2;
22
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
23
COMMIT;
24
BEGIN;
25
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
26
UPDATE t1 SET b = 3*a WHERE a > 3;
27
COMMIT;
28
BEGIN;
29
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
30
UPDATE t1 SET b = 4*a WHERE a > 4;
31
COMMIT;
32
SET BINLOG_FORMAT=MIXED;
33
BEGIN;
34
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
35
UPDATE t1 SET b = 1*a WHERE a > 1;
36
COMMIT;
37
BEGIN;
38
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
39
UPDATE t1 SET b = 2*a WHERE a > 2;
40
COMMIT;
41
BEGIN;
42
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
43
UPDATE t1 SET b = 3*a WHERE a > 3;
44
COMMIT;
45
BEGIN;
46
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
47
UPDATE t1 SET b = 4*a WHERE a > 4;
48
COMMIT;
49
SET BINLOG_FORMAT=ROW;
50
BEGIN;
51
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
52
UPDATE t1 SET b = 1*a WHERE a > 1;
53
COMMIT;
54
BEGIN;
55
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
56
UPDATE t1 SET b = 2*a WHERE a > 2;
57
COMMIT;
58
BEGIN;
59
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
60
UPDATE t1 SET b = 3*a WHERE a > 3;
61
COMMIT;
62
BEGIN;
63
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
64
UPDATE t1 SET b = 4*a WHERE a > 4;
65
COMMIT;
66
show binlog events from <binlog_start>;
67
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
68
master-bin.000001	#	Query	#	#	use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB
69
master-bin.000001	#	Query	#	#	use `test`; BEGIN
70
master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6)
71
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
72
master-bin.000001	#	Query	#	#	use `test`; BEGIN
73
master-bin.000001	#	Query	#	#	use `test`; UPDATE t1 SET b = 2*a WHERE a > 1
74
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
75
master-bin.000001	#	Query	#	#	use `test`; BEGIN
76
master-bin.000001	#	Table_map	#	#	table_id: # (test.t1)
77
master-bin.000001	#	Update_rows	#	#	table_id: #
78
master-bin.000001	#	Update_rows	#	#	table_id: #
79
master-bin.000001	#	Update_rows	#	#	table_id: # flags: STMT_END_F
80
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
81
master-bin.000001	#	Query	#	#	use `test`; BEGIN
82
master-bin.000001	#	Query	#	#	use `test`; UPDATE t1 SET b = 3*a WHERE a > 3
83
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
84
master-bin.000001	#	Query	#	#	use `test`; BEGIN
85
master-bin.000001	#	Query	#	#	use `test`; UPDATE t1 SET b = 4*a WHERE a > 4
86
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
87
master-bin.000001	#	Query	#	#	use `test`; BEGIN
88
master-bin.000001	#	Table_map	#	#	table_id: # (test.t1)
89
master-bin.000001	#	Update_rows	#	#	table_id: #
90
master-bin.000001	#	Update_rows	#	#	table_id: #
91
master-bin.000001	#	Update_rows	#	#	table_id: #
92
master-bin.000001	#	Update_rows	#	#	table_id: #
93
master-bin.000001	#	Update_rows	#	#	table_id: # flags: STMT_END_F
94
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
95
master-bin.000001	#	Query	#	#	use `test`; BEGIN
96
master-bin.000001	#	Table_map	#	#	table_id: # (test.t1)
97
master-bin.000001	#	Update_rows	#	#	table_id: #
98
master-bin.000001	#	Update_rows	#	#	table_id: #
99
master-bin.000001	#	Update_rows	#	#	table_id: #
100
master-bin.000001	#	Update_rows	#	#	table_id: # flags: STMT_END_F
101
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
102
master-bin.000001	#	Query	#	#	use `test`; BEGIN
103
master-bin.000001	#	Query	#	#	use `test`; UPDATE t1 SET b = 3*a WHERE a > 3
104
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
105
master-bin.000001	#	Query	#	#	use `test`; BEGIN
106
master-bin.000001	#	Query	#	#	use `test`; UPDATE t1 SET b = 4*a WHERE a > 4
107
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
108
master-bin.000001	#	Query	#	#	use `test`; BEGIN
109
master-bin.000001	#	Table_map	#	#	table_id: # (test.t1)
110
master-bin.000001	#	Update_rows	#	#	table_id: #
111
master-bin.000001	#	Update_rows	#	#	table_id: #
112
master-bin.000001	#	Update_rows	#	#	table_id: #
113
master-bin.000001	#	Update_rows	#	#	table_id: #
114
master-bin.000001	#	Update_rows	#	#	table_id: # flags: STMT_END_F
115
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
116
master-bin.000001	#	Query	#	#	use `test`; BEGIN
117
master-bin.000001	#	Table_map	#	#	table_id: # (test.t1)
118
master-bin.000001	#	Update_rows	#	#	table_id: #
119
master-bin.000001	#	Update_rows	#	#	table_id: #
120
master-bin.000001	#	Update_rows	#	#	table_id: #
121
master-bin.000001	#	Update_rows	#	#	table_id: # flags: STMT_END_F
122
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
123
master-bin.000001	#	Query	#	#	use `test`; BEGIN
124
master-bin.000001	#	Table_map	#	#	table_id: # (test.t1)
125
master-bin.000001	#	Update_rows	#	#	table_id: #
126
master-bin.000001	#	Update_rows	#	#	table_id: #
127
master-bin.000001	#	Update_rows	#	#	table_id: # flags: STMT_END_F
128
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
129
master-bin.000001	#	Query	#	#	use `test`; BEGIN
130
master-bin.000001	#	Table_map	#	#	table_id: # (test.t1)
131
master-bin.000001	#	Update_rows	#	#	table_id: #
132
master-bin.000001	#	Update_rows	#	#	table_id: # flags: STMT_END_F
133
master-bin.000001	#	Xid	#	#	COMMIT /* XID */
134
DROP TABLE t1;
135
show status like "binlog_cache_use";
136
Variable_name	Value
137
Binlog_cache_use	13
138
show status like "binlog_cache_disk_use";
139
Variable_name	Value
140
Binlog_cache_disk_use	0
141
create table t1 (a int) engine=innodb;
142
show status like "binlog_cache_use";
143
Variable_name	Value
144
Binlog_cache_use	14
145
show status like "binlog_cache_disk_use";
146
Variable_name	Value
147
Binlog_cache_disk_use	1
148
begin;
149
delete from t1;
150
commit;
151
show status like "binlog_cache_use";
152
Variable_name	Value
153
Binlog_cache_use	15
154
show status like "binlog_cache_disk_use";
155
Variable_name	Value
156
Binlog_cache_disk_use	1
157
drop table t1;
158
CREATE TABLE `t1` (
159
`a` int(11) NOT NULL auto_increment,
160
`b` int(11) default NULL,
161
PRIMARY KEY  (`a`)
162
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
163
CREATE TABLE `t2` (
164
`a` int(11) NOT NULL auto_increment,
165
`b` int(11) default NULL,
166
PRIMARY KEY  (`a`)
167
) ENGINE=INNODB DEFAULT CHARSET=latin1 ;
168
insert into t1 values (1,1),(2,2);
169
insert into t2 values (1,1),(4,4);
170
reset master;
171
UPDATE t2,t1 SET t2.a=t1.a+2;
172
ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
173
select * from t2 /* must be (3,1), (4,4) */;
174
a	b
175
1	1
176
4	4
177
there must no UPDATE in binlog
178
show master status;
179
File	Position	Binlog_Do_DB	Binlog_Ignore_DB
180
master-bin.000001	#	<Binlog_Do_DB>	<Binlog_Ignore_DB>
181
delete from t1;
182
delete from t2;
183
insert into t1 values (1,2),(3,4),(4,4);
184
insert into t2 values (1,2),(3,4),(4,4);
185
reset master;
186
UPDATE t2,t1  SET t2.a=t2.b where t2.a=t1.a;
187
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
188
there must no UPDATE in binlog
189
show master status;
190
File	Position	Binlog_Do_DB	Binlog_Ignore_DB
191
master-bin.000001	#	<Binlog_Do_DB>	<Binlog_Ignore_DB>
192
drop table t1, t2;
193
End of tests