1
# Replication of character sets.
2
# This test will fail if the server/client does not support enough charsets.
4
source include/master-slave.inc;
6
set timestamp=1000000000;
7
drop database if exists mysqltest2;
8
drop database if exists mysqltest3;
11
create database mysqltest2 character set latin2;
12
set @@character_set_server=latin5;
13
create database mysqltest3;
15
select "--- --master--" as "";
17
show create database mysqltest2;
18
show create database mysqltest3;
19
sync_slave_with_master;
21
select "--- --slave--" as "";
23
show create database mysqltest2;
24
show create database mysqltest3;
27
set @@collation_server=armscii8_bin;
28
drop database mysqltest3;
29
create database mysqltest3;
31
select "--- --master--" as "";
33
show create database mysqltest3;
34
sync_slave_with_master;
36
select "--- --slave--" as "";
38
show create database mysqltest3;
42
create table t1 (a int auto_increment primary key, b varchar(100));
43
set character_set_client=cp850, collation_connection=latin2_croatian_ci;
44
insert into t1 (b) values(@@character_set_server);
45
insert into t1 (b) values(@@collation_server);
46
# character_set_database and collation_database are not tested as they
47
# needn't be replicated (Bar said in Jan 2005).
48
insert into t1 (b) values(@@character_set_client);
49
# collation_client does not exist
50
insert into t1 (b) values(@@character_set_connection);
51
insert into t1 (b) values(@@collation_connection);
53
select * from t1 order by a;
54
sync_slave_with_master;
56
select * from mysqltest2.t1 order by a;
59
set character_set_client=latin1, collation_connection=latin1_german1_ci;
61
insert into t1 (b) values(@@collation_connection);
62
insert into t1 (b) values(LEAST("M�ller","Muffler"));
63
set collation_connection=latin1_german2_ci;
64
insert into t1 (b) values(@@collation_connection);
65
insert into t1 (b) values(LEAST("M�ller","Muffler"));
67
select * from t1 order by a;
68
sync_slave_with_master;
70
select * from mysqltest2.t1 order by a;
72
# Presently charset info is not logged with LOAD DATA but it will
73
# change in Jan 2005 when Dmitri pushes his new LOAD DATA,
74
# before 5.0.3 goes out. When done, LOAD DATA INFILE should be tested
77
# See if user var is prefixed with collation in binlog and replicated well.
78
# Note: replication of user variables is broken as far as derivation is
79
# concerned. That's because when we store a user variable in the binlog,
80
# we lose its derivation. So later on the slave, it's impossible to
81
# know if the collation was explicit or not, so we use DERIVATION_NONE,
82
# which provokes error messages (like 'Illegal mix of collation') when
83
# we replay the master's INSERT/etc statements.
85
set @a= _cp850 'M�ller' collate cp850_general_ci;
87
insert into t1 (b) values(collation(@a));
89
select * from t1 order by a;
90
sync_slave_with_master;
92
select * from mysqltest2.t1 order by a;
95
drop database mysqltest2;
96
drop database mysqltest3;
97
sync_slave_with_master;
99
# Check that we can change global.collation_server (since 5.0.3)
101
set global character_set_server=latin2;
102
set global character_set_server=latin1; # back
104
set global character_set_server=latin2;
105
set global character_set_server=latin1; # back
107
# Check that SET ONE_SHOT is really one shot
109
set one_shot @@character_set_server=latin5;
110
set @@max_join_size=1000;
111
select @@character_set_server;
112
select @@character_set_server;
113
set @@character_set_server=latin5;
114
select @@character_set_server;
115
select @@character_set_server;
117
# ONE_SHOT on not charset/collation stuff is not allowed
119
set one_shot max_join_size=10;
121
# Test of wrong character set numbers;
123
set character_set_client=9999999;
125
set collation_server=9999998;
127
# This one was contributed by Sergey Petrunia (BUG#3943)
130
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255));
131
SET CHARACTER_SET_CLIENT=koi8r,
132
CHARACTER_SET_CONNECTION=cp1251,
133
CHARACTER_SET_RESULTS=koi8r;
134
INSERT INTO t1 (c1, c2) VALUES ('��, �� �������','��, �� �������');
135
select hex(c1), hex(c2) from t1;
136
sync_slave_with_master;
137
select hex(c1), hex(c2) from t1;
141
sync_slave_with_master;
144
# BUG#6676: Derivation of variables must be correct on slave
147
eval create table `t1` (
148
`pk` varchar(10) not null default '',
150
) engine=$engine_type default charset=latin1;
151
set @p=_latin1 'test';
152
update t1 set pk='test' where pk=@p;
154
sync_slave_with_master;