~vkolesnikov/pbxt/pbxt-1.5-23.06.2011

« back to all changes in this revision

Viewing changes to test/mysql-test/test_data/505/extra/rpl_tests/rpl_stm_charset.test

  • Committer: vladimir at primebase
  • Date: 2011-06-23 15:11:13 UTC
  • mfrom: (824.1.48 pbxt11)
  • Revision ID: vladimir@primebase.org-20110623151113-ie7mezix8dv68jts
merged changes from PBXT 1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Replication of character sets.
 
2
# This test will fail if the server/client does not support enough charsets.
 
3
 
 
4
# Requires statement logging
 
5
-- source include/have_binlog_format_mixed_or_statement.inc
 
6
 
 
7
source include/master-slave.inc;
 
8
--disable_warnings
 
9
set timestamp=1000000000;
 
10
drop database if exists mysqltest2;
 
11
drop database if exists mysqltest3;
 
12
--enable_warnings
 
13
 
 
14
create database mysqltest2 character set latin2;
 
15
set @@character_set_server=latin5;      
 
16
create database mysqltest3;
 
17
--disable_query_log
 
18
select "--- --master--" as "";
 
19
--enable_query_log
 
20
show create database mysqltest2;
 
21
show create database mysqltest3;
 
22
sync_slave_with_master;
 
23
--disable_query_log
 
24
select "--- --slave--" as "";
 
25
--enable_query_log
 
26
show create database mysqltest2;
 
27
show create database mysqltest3;
 
28
 
 
29
connection master;
 
30
set @@collation_server=armscii8_bin;
 
31
drop database mysqltest3;
 
32
create database mysqltest3;
 
33
--disable_query_log
 
34
select "--- --master--" as "";
 
35
--enable_query_log
 
36
show create database mysqltest3;
 
37
sync_slave_with_master;
 
38
--disable_query_log
 
39
select "--- --slave--" as "";
 
40
--enable_query_log
 
41
show create database mysqltest3;
 
42
 
 
43
connection master;
 
44
use mysqltest2;
 
45
create table t1 (a int auto_increment primary key, b varchar(100));
 
46
set character_set_client=cp850, collation_connection=latin2_croatian_ci;
 
47
insert into t1 (b) values(@@character_set_server);
 
48
insert into t1 (b) values(@@collation_server);
 
49
# character_set_database and collation_database are not tested as they
 
50
# needn't be replicated (Bar said in Jan 2005).
 
51
insert into t1 (b) values(@@character_set_client);
 
52
# collation_client does not exist
 
53
insert into t1 (b) values(@@character_set_connection);
 
54
insert into t1 (b) values(@@collation_connection);
 
55
--disable_query_log
 
56
select "--- --master--" as "";
 
57
--enable_query_log
 
58
select * from t1 order by a;
 
59
sync_slave_with_master;
 
60
--disable_query_log
 
61
select "--- --slave--" as "";
 
62
--enable_query_log
 
63
select * from mysqltest2.t1 order by a;
 
64
 
 
65
connection master;
 
66
set character_set_client=latin1, collation_connection=latin1_german1_ci;
 
67
truncate table t1;
 
68
insert into t1 (b) values(@@collation_connection);
 
69
insert into t1 (b) values(LEAST("M�ller","Muffler"));
 
70
set collation_connection=latin1_german2_ci;
 
71
insert into t1 (b) values(@@collation_connection);
 
72
insert into t1 (b) values(LEAST("M�ller","Muffler"));
 
73
--disable_query_log
 
74
select "--- --master--" as "";
 
75
--enable_query_log
 
76
select * from t1 order by a;
 
77
sync_slave_with_master;
 
78
--disable_query_log
 
79
select "--- --slave--" as "";
 
80
--enable_query_log
 
81
select * from mysqltest2.t1 order by a;
 
82
 
 
83
# Presently charset info is not logged with LOAD DATA but it will
 
84
# change in Jan 2005 when Dmitri pushes his new LOAD DATA,
 
85
# before 5.0.3 goes out. When done, LOAD DATA INFILE should be tested
 
86
# here.
 
87
 
 
88
# See if user var is prefixed with collation in binlog and replicated well.
 
89
# Note: replication of user variables is broken as far as derivation is
 
90
# concerned. That's because when we store a user variable in the binlog,
 
91
# we lose its derivation. So later on the slave, it's impossible to
 
92
# know if the collation was explicit or not, so we use DERIVATION_NONE,
 
93
# which provokes error messages (like 'Illegal mix of collation') when
 
94
# we replay the master's INSERT/etc statements.
 
95
connection master;
 
96
set @a= _cp850 'M�ller' collate cp850_general_ci;
 
97
truncate table t1;
 
98
insert into t1 (b) values(collation(@a));
 
99
--disable_query_log
 
100
select "--- --master--" as "";
 
101
--enable_query_log
 
102
select * from t1 order by a;
 
103
sync_slave_with_master;
 
104
--disable_query_log
 
105
select "--- --slave--" as "";
 
106
--enable_query_log
 
107
select * from mysqltest2.t1 order by a;
 
108
 
 
109
connection master;
 
110
drop database mysqltest2;
 
111
drop database mysqltest3;
 
112
--replace_column 2 # 5 #
 
113
--replace_regex /table_id: [0-9]+/table_id: #/
 
114
show binlog events from 102;
 
115
sync_slave_with_master;
 
116
 
 
117
# Check that we can change global.collation_server (since 5.0.3)
 
118
 
 
119
set global character_set_server=latin2;
 
120
set global character_set_server=latin1; # back
 
121
connection master;
 
122
set global character_set_server=latin2;
 
123
set global character_set_server=latin1; # back
 
124
 
 
125
# Check that SET ONE_SHOT is really one shot
 
126
 
 
127
set one_shot @@character_set_server=latin5;
 
128
set @@max_join_size=1000;
 
129
select @@character_set_server;
 
130
select @@character_set_server;
 
131
set @@character_set_server=latin5;
 
132
select @@character_set_server;
 
133
select @@character_set_server;
 
134
 
 
135
# ONE_SHOT on not charset/collation stuff is not allowed
 
136
-- error 1382
 
137
set one_shot max_join_size=10;
 
138
 
 
139
# Test of wrong character set numbers;
 
140
error 1115;
 
141
set character_set_client=9999999;
 
142
error 1273;
 
143
set collation_server=9999998;
 
144
 
 
145
# This one was contributed by Sergey Petrunia (BUG#3943)
 
146
 
 
147
use test;
 
148
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255));
 
149
SET CHARACTER_SET_CLIENT=koi8r,
 
150
 CHARACTER_SET_CONNECTION=cp1251, 
 
151
 CHARACTER_SET_RESULTS=koi8r;
 
152
INSERT INTO t1 (c1, c2) VALUES ('��, �� �������','��, �� �������');
 
153
select hex(c1), hex(c2) from t1;
 
154
sync_slave_with_master;
 
155
select hex(c1), hex(c2) from t1;
 
156
 
 
157
connection master;
 
158
# Let's have a look at generated SETs.
 
159
flush logs;
 
160
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
 
161
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000001 
 
162
drop table t1;
 
163
sync_slave_with_master;
 
164
 
 
165
#
 
166
#  BUG#6676: Derivation of variables must be correct on slave
 
167
#
 
168
connection master;
 
169
eval create table `t1` (
 
170
  `pk` varchar(10) not null default '', 
 
171
  primary key (`pk`)
 
172
) engine=$engine_type default charset=latin1;
 
173
set @p=_latin1 'test';
 
174
update t1 set pk='test' where pk=@p;
 
175
drop table t1;
 
176
sync_slave_with_master;
 
177
 
 
178
# End of 4.1 tests