~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
#
2
# misc binlogging tests that do not require a slave running
3
#
4
5
-- source include/have_log_bin.inc
6
-- source include/not_embedded.inc
7
-- source include/have_innodb.inc
8
-- source include/have_debug.inc
9
10
--disable_warnings
11
drop table if exists t1, t2;
12
--enable_warnings
13
reset master;
14
15
create table t1 (a int) engine=innodb;
16
create table t2 (a int) engine=innodb;
17
begin;
18
insert t1 values (5);
19
commit;
20
begin;
21
insert t2 values (5);
22
commit;
23
# first COMMIT must be Query_log_event, second - Xid_log_event
24
source include/show_binlog_events.inc;
25
drop table t1,t2;
26
27
#
28
# binlog rotation after one big transaction
29
#
30
reset master;
31
let $1=100;
32
33
create table t1 (n int) engine=innodb;
34
begin;
35
--disable_query_log
36
while ($1)
37
{
38
 eval insert into t1 values($1 + 4);
39
 dec $1;
40
}
41
--enable_query_log
42
commit;
43
drop table t1;
44
--replace_column 2 # 5 #
45
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
46
show binlog events in 'master-bin.000001' from 107;
47
--replace_column 2 # 5 #
48
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
49
show binlog events in 'master-bin.000002' from 107;
50
51
52
#
53
# Bug#22540 - Incorrect value in column End_log_pos of
54
# SHOW BINLOG EVENTS using InnoDB
55
#
56
57
# the following tests will show that certain queries now return
58
# absolute offsets (from binlog start, rather than relative to
59
# the beginning of the current transaction).  under what
60
# conditions it should be allowed / is sensible to put the
61
# slider into the middle of a transaction is not our concern
62
# here; we just guarantee that if and when it's done, the
63
# user has valid offsets to use.  if the setter function still
64
# wants to throw a "positioning into middle of transaction"
65
# warning, that's its prerogative and handled elsewhere.
66
67
set @ac = @@autocommit;
68
69
# first show this to work for SHOW BINLOG EVENTS
70
71
set autocommit= 0;
72
reset master;
73
create table t1(n int) engine=innodb;
74
begin;
75
insert into t1 values (1);
76
insert into t1 values (2);
77
insert into t1 values (3);
78
commit;
79
drop table t1;
80
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
81
show binlog events from 0;
82
83
# now show that nothing breaks if we need to read from the cache more
84
# than once, resulting in split event-headers
85
86
set @bcs = @@binlog_cache_size;
87
set global binlog_cache_size=4096;
88
reset master;
89
90
create table t1 (a int) engine=innodb;
91
92
let $1=400;
93
disable_query_log;
94
begin;
95
while ($1)
96
{
97
 eval insert into t1 values( $1 );
98
 dec $1;
99
}
100
commit;
101
enable_query_log;
102
103
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
104
show binlog events from 0;
105
106
drop table t1;
107
108
set global binlog_cache_size=@bcs;
109
set session autocommit = @ac;
110
111
#
112
# Bug#33798: prepared statements improperly handle large unsigned ints
113
#
114
--disable_warnings
115
drop table if exists t1;
116
--enable_warnings
117
reset master;
118
create table t1 (a bigint unsigned, b bigint(20) unsigned);
119
prepare stmt from "insert into t1 values (?,?)";
120
set @a= 9999999999999999;
121
set @b= 14632475938453979136;
122
execute stmt using @a, @b;
123
deallocate prepare stmt;
124
drop table t1;
125
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
126
show binlog events from 0;
127
128
--echo End of 5.0 tests
129
130
# Test of a too big SET INSERT_ID: see if the truncated value goes
131
# into binlog (right), or the too big value (wrong); we look at the
132
# binlog further down with SHOW BINLOG EVENTS.
133
reset master;
134
create table t1 (id tinyint auto_increment primary key);
135
set insert_id=128;
136
insert into t1 values(null);
137
select * from t1;
138
drop table t1;
139
140
# bug#22027 
141
create table t1 (a int);
142
create table if not exists t2 select * from t1;
143
144
# bug#22762
145
create temporary table tt1 (a int);
146
create table if not exists t3 like tt1;
147
148
# BUG#25091 (A DELETE statement to mysql database is not logged with
149
# ROW mode format): Checking that some basic operations on tables in
150
# the mysql database is replicated even when the current database is
151
# 'mysql'.
152
153
--disable_warnings
154
USE mysql;
155
INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test');
156
UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@';
157
DELETE FROM user WHERE host='localhost' AND user='@#@';
158
--enable_warnings
159
160
use test;
161
source include/show_binlog_events.inc;
162
drop table t1,t2,t3,tt1;
163
164
-- source extra/binlog_tests/binlog_insert_delayed.test
165
166
#Bug #26079 max_binlog_size + innodb = not make new binlog and hang server
167
# server should not hang, binlog must rotate in the end
168
reset master;
169
--disable_warnings
170
drop table if exists t3;
171
--enable_warnings
172
create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb;
173
show master status;
174
let $it=4;
175
while ($it)
176
{
177
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
178
dec $it;
179
}
180
show master status /* must show new binlog index after rotating */;
181
drop table t3;