1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
#
# Test of replicating user variables
#
###########################################################
# 2006-02-08 By JBM added order by for use w/ NDB engine
###########################################################
source include/master-slave.inc;
#save_master_pos;
#connection slave;
#sync_with_master;
#reset master;
#connection master;
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(n char(30));
prepare stmt1 from 'insert into t1 values (?)';
set @var1= "from-master-1";
execute stmt1 using @var1;
set @var1= "from-master-2-'',";
execute stmt1 using @var1;
SELECT * FROM t1 ORDER BY n;
set @var2= 'insert into t1 values (concat("from-var-", ?))';
prepare stmt2 from @var2;
set @var1='from-master-3';
execute stmt2 using @var1;
save_master_pos;
connection slave;
sync_with_master;
SELECT * FROM t1 ORDER BY n;
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;
stop slave;
# End of 4.1 tests
#
# Bug #25843 Changing default database between PREPARE and EXECUTE of statement
# breaks binlog.
#
# There were actually two problems discovered by this bug:
#
# 1. Default (current) database is not fixed at the creation time.
# That leads to wrong output of DATABASE() function.
#
# 2. Database attributes (@@collation_database) are not fixed at the creation
# time. That leads to wrong resultset.
#
# Binlog breakage and Query Cache wrong output happened because of the first
# problem.
#
--echo
--echo ########################################################################
--echo #
--echo # BUG#25843: Changing default database between PREPARE and EXECUTE of
--echo # statement breaks binlog.
--echo #
--echo ########################################################################
###############################################################################
--echo
--echo # Connection: slave
--echo
--connection slave
--echo
START SLAVE;
--echo
--echo # Connection: master
--echo
--connection master
--echo
CREATE DATABASE mysqltest1;
CREATE TABLE t1(db_name CHAR(32), db_col_name CHAR(32));
--echo
PREPARE stmt_d_1 FROM 'INSERT INTO t1 VALUES(DATABASE(), @@collation_database)';
--echo
EXECUTE stmt_d_1;
--echo
use mysqltest1;
--echo
EXECUTE stmt_d_1;
--echo
--save_master_pos
--echo
--echo # Connection: slave
--echo
--connection slave
--sync_with_master
--echo
SELECT * FROM t1;
--echo
--echo # Connection: master
--echo
--connection master
--echo
DROP DATABASE mysqltest1;
--echo
use test;
--echo
--save_master_pos
--echo
--echo # Connection: slave
--echo
--connection slave
--sync_with_master
--echo
STOP SLAVE;
--echo
--echo ########################################################################
###############################################################################
reset master;
reset slave;
disconnect master;
|