2004-06-03 23:17:18 +02:00
|
|
|
|
# Replication of character sets.
|
|
|
|
|
# This test will fail if the server/client does not support enough charsets.
|
|
|
|
|
|
|
|
|
|
# Remember that there currently exists
|
|
|
|
|
# Bug #2326: Charset of table is determined by charset of db only if "USE db;"
|
|
|
|
|
|
|
|
|
|
source include/master-slave.inc;
|
|
|
|
|
--disable_warnings
|
2004-08-31 13:35:04 +02:00
|
|
|
|
drop database if exists mysqltest2;
|
|
|
|
|
drop database if exists mysqltest3;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
--enable_warnings
|
|
|
|
|
|
2004-08-31 13:35:04 +02:00
|
|
|
|
create database mysqltest2 character set latin2;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
set @@character_set_server=latin5;
|
2004-08-31 13:35:04 +02:00
|
|
|
|
create database mysqltest3;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --master--" as "";
|
|
|
|
|
--enable_query_log
|
2004-08-31 13:35:04 +02:00
|
|
|
|
show create database mysqltest2;
|
|
|
|
|
show create database mysqltest3;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --slave--" as "";
|
|
|
|
|
--enable_query_log
|
2004-08-31 13:35:04 +02:00
|
|
|
|
show create database mysqltest2;
|
|
|
|
|
show create database mysqltest3;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
|
|
|
|
|
connection master;
|
2004-07-06 10:43:15 +02:00
|
|
|
|
set @@collation_server=armscii8_bin;
|
2004-08-31 13:35:04 +02:00
|
|
|
|
drop database mysqltest3;
|
|
|
|
|
create database mysqltest3;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --master--" as "";
|
|
|
|
|
--enable_query_log
|
2004-08-31 13:35:04 +02:00
|
|
|
|
show create database mysqltest3;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --slave--" as "";
|
|
|
|
|
--enable_query_log
|
2004-08-31 13:35:04 +02:00
|
|
|
|
show create database mysqltest3;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
|
|
|
|
|
connection master;
|
2004-08-31 13:35:04 +02:00
|
|
|
|
use mysqltest2;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
create table t1 (a int auto_increment primary key, b varchar(100));
|
|
|
|
|
set character_set_client=cp850, collation_connection=latin2_croatian_ci;
|
|
|
|
|
insert into t1 (b) values(@@character_set_server);
|
|
|
|
|
insert into t1 (b) values(@@collation_server);
|
|
|
|
|
# character_set_database and collation_database are not tested as they
|
|
|
|
|
# are not replicated (Bar said that this variable may be removed shortly).
|
|
|
|
|
insert into t1 (b) values(@@character_set_client);
|
|
|
|
|
# collation_client does not exist
|
|
|
|
|
insert into t1 (b) values(@@character_set_connection);
|
|
|
|
|
insert into t1 (b) values(@@collation_connection);
|
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --master--" as "";
|
|
|
|
|
--enable_query_log
|
|
|
|
|
select * from t1 order by a;
|
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --slave--" as "";
|
|
|
|
|
--enable_query_log
|
2004-08-31 13:35:04 +02:00
|
|
|
|
select * from mysqltest2.t1 order by a;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
|
|
|
|
|
connection master;
|
|
|
|
|
set character_set_client=latin1, collation_connection=latin1_german1_ci;
|
|
|
|
|
truncate table t1;
|
|
|
|
|
insert into t1 (b) values(@@collation_connection);
|
|
|
|
|
insert into t1 (b) values(LEAST("M<>ller","Muffler"));
|
|
|
|
|
set collation_connection=latin1_german2_ci;
|
|
|
|
|
insert into t1 (b) values(@@collation_connection);
|
|
|
|
|
insert into t1 (b) values(LEAST("M<>ller","Muffler"));
|
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --master--" as "";
|
|
|
|
|
--enable_query_log
|
|
|
|
|
select * from t1 order by a;
|
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --slave--" as "";
|
|
|
|
|
--enable_query_log
|
2004-08-31 13:35:04 +02:00
|
|
|
|
select * from mysqltest2.t1 order by a;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
|
|
|
|
|
# See if SET ONE_SHOT gets into binlog when LOAD DATA
|
|
|
|
|
connection master;
|
|
|
|
|
load data infile '../../std_data/words.dat' into table t1 (b);
|
|
|
|
|
|
|
|
|
|
# See if user var is prefixed with collation in binlog and replicated well.
|
|
|
|
|
# Note: replication of user variables is broken as far as derivation is
|
|
|
|
|
# concerned. That's because when we store a user variable in the binlog,
|
|
|
|
|
# we lose its derivation. So later on the slave, it's impossible to
|
|
|
|
|
# know if the collation was explicit or not, so we use DERIVATION_NONE,
|
|
|
|
|
# which provokes error messages (like 'Illegal mix of collation') when
|
|
|
|
|
# we replay the master's INSERT/etc statements.
|
|
|
|
|
set @a= _cp850 'M<>ller' collate cp850_general_ci;
|
|
|
|
|
truncate table t1;
|
|
|
|
|
insert into t1 (b) values(collation(@a));
|
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --master--" as "";
|
|
|
|
|
--enable_query_log
|
|
|
|
|
select * from t1 order by a;
|
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
--disable_query_log
|
|
|
|
|
select "--- --slave--" as "";
|
|
|
|
|
--enable_query_log
|
2004-08-31 13:35:04 +02:00
|
|
|
|
select * from mysqltest2.t1 order by a;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
|
|
|
|
|
connection master;
|
2004-08-31 13:35:04 +02:00
|
|
|
|
drop database mysqltest2;
|
|
|
|
|
drop database mysqltest3;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
show binlog events from 79;
|
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
|
|
|
|
|
# Check that we can't change global.collation_server
|
|
|
|
|
|
|
|
|
|
error 1105;
|
|
|
|
|
set global character_set_server=latin2;
|
|
|
|
|
connection master;
|
|
|
|
|
error 1105;
|
|
|
|
|
set global character_set_server=latin2;
|
|
|
|
|
|
|
|
|
|
# Check that SET ONE_SHOT is really one shot
|
|
|
|
|
|
|
|
|
|
set one_shot @@character_set_server=latin5;
|
|
|
|
|
set @@max_join_size=1000;
|
|
|
|
|
select @@character_set_server;
|
|
|
|
|
select @@character_set_server;
|
|
|
|
|
set @@character_set_server=latin5;
|
|
|
|
|
select @@character_set_server;
|
|
|
|
|
select @@character_set_server;
|
|
|
|
|
|
|
|
|
|
# ONE_SHOT on not charset/collation stuff is not allowed
|
|
|
|
|
error 1105;
|
|
|
|
|
set one_shot max_join_size=10;
|
|
|
|
|
|
|
|
|
|
# Test of wrong character set numbers;
|
|
|
|
|
error 1115;
|
|
|
|
|
set character_set_client=9999999;
|
|
|
|
|
error 1273;
|
|
|
|
|
set collation_server=9999998;
|
|
|
|
|
|
|
|
|
|
# This one was contributed by Sergey Petrunia (BUG#3943)
|
|
|
|
|
|
|
|
|
|
use test;
|
|
|
|
|
CREATE TABLE t1 (c1 VARBINARY(255), c2 VARBINARY(255));
|
|
|
|
|
SET CHARACTER_SET_CLIENT=koi8r,
|
|
|
|
|
CHARACTER_SET_CONNECTION=cp1251,
|
|
|
|
|
CHARACTER_SET_RESULTS=koi8r;
|
|
|
|
|
INSERT INTO t1 (c1, c2) VALUES ('<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
|
|
|
|
select hex(c1), hex(c2) from t1;
|
|
|
|
|
sync_slave_with_master;
|
|
|
|
|
select hex(c1), hex(c2) from t1;
|
2004-09-23 12:16:56 +02:00
|
|
|
|
|
|
|
|
|
# Now test for BUG##5705: SET CHARATER_SET_SERVERetc will be lost if
|
|
|
|
|
# STOP SLAVE before following query
|
|
|
|
|
|
|
|
|
|
stop slave;
|
|
|
|
|
delete from t1;
|
2004-12-03 12:13:51 +01:00
|
|
|
|
change master to master_log_pos=5847;
|
|
|
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=5983;
|
|
|
|
|
# Slave is supposed to stop _after_ the INSERT, even though 5983 is
|
2004-09-23 12:16:56 +02:00
|
|
|
|
# the position of the beginning of the INSERT; after SET slave is not
|
|
|
|
|
# supposed to increment position.
|
|
|
|
|
wait_for_slave_to_stop;
|
|
|
|
|
# When you merge this into 5.0 you will have to adjust positions
|
|
|
|
|
# above; the first master_log_pos above should be the one of the SET,
|
|
|
|
|
# the second should be the one of the INSERT.
|
|
|
|
|
start slave;
|
|
|
|
|
sync_with_master;
|
|
|
|
|
select hex(c1), hex(c2) from t1;
|
2004-06-03 23:17:18 +02:00
|
|
|
|
connection master;
|
|
|
|
|
drop table t1;
|
|
|
|
|
sync_slave_with_master;
|
2005-02-21 16:26:04 +01:00
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# BUG#6676: Derivation of variables must be correct on slave
|
|
|
|
|
#
|
|
|
|
|
connection master;
|
|
|
|
|
create table `t1` (
|
|
|
|
|
`pk` varchar(10) not null default '',
|
|
|
|
|
primary key (`pk`)
|
|
|
|
|
) engine=myisam default charset=latin1;
|
|
|
|
|
set @p=_latin1 'test';
|
|
|
|
|
update t1 set pk='test' where pk=@p;
|
|
|
|
|
drop table t1;
|
|
|
|
|
sync_slave_with_master;
|
2005-07-28 02:22:47 +02:00
|
|
|
|
|
|
|
|
|
# End of 4.1 tests
|