mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
adaf162bc2
Adding an event that can be used to denote that an incident occured on the master. The event can be used to denote a gap in the replication stream, but can also be used to denote other incidents. In addition, the injector interface is extended with functions to generate an incident event. The function will also rotate the binary log after generating an incident event to get a fresh binary log. client/Makefile.am: Adding file rpl_constants.h with constants for replication. mysql-test/extra/binlog_tests/binlog.test: Binlog position change mysql-test/extra/binlog_tests/binlog_insert_delayed.test: Binlog position change mysql-test/extra/binlog_tests/ctype_cp932_binlog.test: Binlog position change mysql-test/extra/binlog_tests/ctype_ucs_binlog.test: Binlog position change mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test: Binlog position change mysql-test/extra/rpl_tests/rpl_deadlock.test: Binlog position change mysql-test/extra/rpl_tests/rpl_log.test: Binlog position change mysql-test/extra/rpl_tests/rpl_multi_query.test: Binlog position change mysql-test/extra/rpl_tests/rpl_row_charset.test: Binlog position change mysql-test/extra/rpl_tests/rpl_row_sp002.test: Binlog position change mysql-test/extra/rpl_tests/rpl_row_sp003.test: Binlog position change mysql-test/extra/rpl_tests/rpl_stm_charset.test: Binlog position change mysql-test/include/show_binlog_events.inc: Binlog position change mysql-test/r/binlog_row_binlog.result: Result change mysql-test/r/binlog_row_ctype_ucs.result: Result change mysql-test/r/binlog_row_insert_select.result: Result change mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change mysql-test/r/binlog_stm_binlog.result: Result change mysql-test/r/binlog_stm_ctype_ucs.result: Result change mysql-test/r/binlog_stm_insert_select.result: Result change mysql-test/r/binlog_stm_mix_innodb_myisam.result: Result change mysql-test/r/ctype_cp932_binlog_row.result: Result change mysql-test/r/ctype_cp932_binlog_stm.result: Result change mysql-test/r/flush_block_commit_notembedded.result: Result change mysql-test/r/rpl_000015.result: Result change mysql-test/r/rpl_change_master.result: Result change mysql-test/r/rpl_deadlock_innodb.result: Result change mysql-test/r/rpl_flushlog_loop.result: Result change mysql-test/r/rpl_loaddata.result: Result change mysql-test/r/rpl_loaddata_s.result: Result change mysql-test/r/rpl_log_pos.result: Result change mysql-test/r/rpl_ndb_charset.result: Result change mysql-test/r/rpl_ndb_log.result: Result change mysql-test/r/rpl_ndb_multi.result: Result change mysql-test/r/rpl_rbr_to_sbr.result: Result change mysql-test/r/rpl_rotate_logs.result: Result change mysql-test/r/rpl_row_basic_11bugs.result: Result change mysql-test/r/rpl_row_charset.result: Result change mysql-test/r/rpl_row_create_table.result: Result change mysql-test/r/rpl_row_delayed_ins.result: Result change mysql-test/r/rpl_row_drop.result: Result change mysql-test/r/rpl_row_flsh_tbls.result: Result change mysql-test/r/rpl_row_inexist_tbl.result: Result change mysql-test/r/rpl_row_log.result: Result change mysql-test/r/rpl_row_log_innodb.result: Result change mysql-test/r/rpl_row_max_relay_size.result: Result change mysql-test/r/rpl_row_reset_slave.result: Result change mysql-test/r/rpl_row_until.result: Result change mysql-test/r/rpl_server_id1.result: Result change mysql-test/r/rpl_server_id2.result: Result change mysql-test/r/rpl_sp.result: Result change mysql-test/r/rpl_stm_charset.result: Result change mysql-test/r/rpl_stm_flsh_tbls.result: Result change mysql-test/r/rpl_stm_log.result: Result change mysql-test/r/rpl_stm_max_relay_size.result: Result change mysql-test/r/rpl_stm_multi_query.result: Result change mysql-test/r/rpl_stm_reset_slave.result: Result change mysql-test/r/rpl_stm_until.result: Result change mysql-test/r/rpl_switch_stm_row_mixed.result: Result change mysql-test/r/rpl_truncate_2myisam.result: Result change mysql-test/r/rpl_truncate_3innodb.result: Result change mysql-test/r/rpl_truncate_7ndb.result: Result change mysql-test/r/user_var-binlog.result: Result change mysql-test/t/binlog_row_mix_innodb_myisam.test: Binlog position change mysql-test/t/binlog_stm_mix_innodb_myisam.test: Binlog position change mysql-test/t/ctype_cp932_binlog_stm.test: Binlog position change mysql-test/t/mysqlbinlog.test: Binlog position change mysql-test/t/mysqlbinlog2.test: Binlog position change mysql-test/t/rpl_loaddata_s.test: Binlog position change mysql-test/t/rpl_log_pos.test: Binlog position change mysql-test/t/rpl_row_basic_11bugs.test: Binlog position change mysql-test/t/rpl_row_create_table.test: Binlog position change mysql-test/t/rpl_row_flsh_tbls.test: Binlog position change mysql-test/t/rpl_row_mysqlbinlog.test: Binlog position change mysql-test/t/rpl_sp.test: Binlog position change mysql-test/t/rpl_stm_flsh_tbls.test: Binlog position change mysql-test/t/rpl_switch_stm_row_mixed.test: Binlog position change mysql-test/t/user_var-binlog.test: Binlog position change sql/Makefile.am: Adding file rpl_constants.h with constants for replication. sql/log_event.cc: Changing prototype for read_str() to be const-correct and changing code to match that. Adding incident log event. sql/log_event.h: Adding incident log event. sql/rpl_injector.cc: Adding support for generating incidents into the binary log. sql/rpl_injector.h: Adding support for generating incidents into the binary log. sql/share/errmsg.txt: Adding new error message to indicate an incident. sql/sql_parse.cc: Adding code to generate an incident log event just before executing a REPLACE if the variable "incident_database_resync_on_replace" is set. mysql-test/r/rpl_incident.result: New BitKeeper file ``mysql-test/r/rpl_incident.result'' mysql-test/t/rpl_incident.test: New BitKeeper file ``mysql-test/t/rpl_incident.test'' sql/rpl_constants.h: New BitKeeper file ``sql/rpl_constants.h''
183 lines
5.5 KiB
Text
183 lines
5.5 KiB
Text
# Replication of character sets.
|
||
# This test will fail if the server/client does not support enough charsets.
|
||
|
||
# Requires statement logging
|
||
-- source include/have_binlog_format_row.inc
|
||
|
||
-- source include/master-slave.inc
|
||
--disable_warnings
|
||
set timestamp=1000000000;
|
||
drop database if exists mysqltest2;
|
||
drop database if exists mysqltest3;
|
||
--enable_warnings
|
||
|
||
create database mysqltest2 character set latin2;
|
||
set @@character_set_server=latin5;
|
||
create database mysqltest3;
|
||
--disable_query_log
|
||
select "--- --master--" as "";
|
||
--enable_query_log
|
||
show create database mysqltest2;
|
||
show create database mysqltest3;
|
||
sync_slave_with_master;
|
||
--disable_query_log
|
||
select "--- --slave--" as "";
|
||
--enable_query_log
|
||
show create database mysqltest2;
|
||
show create database mysqltest3;
|
||
|
||
connection master;
|
||
set @@collation_server=armscii8_bin;
|
||
drop database mysqltest3;
|
||
create database mysqltest3;
|
||
--disable_query_log
|
||
select "--- --master--" as "";
|
||
--enable_query_log
|
||
show create database mysqltest3;
|
||
sync_slave_with_master;
|
||
--disable_query_log
|
||
select "--- --slave--" as "";
|
||
--enable_query_log
|
||
show create database mysqltest3;
|
||
|
||
connection master;
|
||
use mysqltest2;
|
||
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
|
||
# needn't be replicated (Bar said in Jan 2005).
|
||
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
|
||
select * from mysqltest2.t1 order by a;
|
||
|
||
select "--- --muller--" as "";
|
||
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
|
||
select * from mysqltest2.t1 order by a;
|
||
|
||
# Presently charset info is not logged with LOAD DATA but it will
|
||
# change in Jan 2005 when Dmitri pushes his new LOAD DATA,
|
||
# before 5.0.3 goes out. When done, LOAD DATA INFILE should be tested
|
||
# here.
|
||
|
||
# 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.
|
||
|
||
|
||
select "--- --INSERT--" as "";
|
||
connection master;
|
||
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
|
||
select * from mysqltest2.t1 order by a;
|
||
|
||
connection master;
|
||
drop database mysqltest2;
|
||
drop database mysqltest3;
|
||
--replace_column 2 # 5 #
|
||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||
show binlog events from 103;
|
||
sync_slave_with_master;
|
||
|
||
# Check that we can change global.collation_server (since 5.0.3)
|
||
|
||
select "--- --global--" as "";
|
||
set global character_set_server=latin2;
|
||
set global character_set_server=latin1; # back
|
||
connection master;
|
||
set global character_set_server=latin2;
|
||
set global character_set_server=latin1; # back
|
||
|
||
# Check that SET ONE_SHOT is really one shot
|
||
|
||
select "--- --oneshot--" as "";
|
||
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 1382
|
||
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)
|
||
|
||
select "--- --3943--" as "";
|
||
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;
|
||
|
||
connection master;
|
||
# Let's have a look at generated SETs.
|
||
--replace_result $MYSQLTEST_VARDIR MYSQL_TEST_DIR/var
|
||
#--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000001
|
||
drop table t1;
|
||
sync_slave_with_master;
|
||
|
||
#
|
||
# BUG#6676: Derivation of variables must be correct on slave
|
||
#
|
||
select "--- --6676--" as "";
|
||
connection master;
|
||
eval create table `t1` (
|
||
`pk` varchar(10) not null default '',
|
||
primary key (`pk`)
|
||
) engine=$engine_type default charset=latin1;
|
||
set @p=_latin1 'test';
|
||
update t1 set pk='test' where pk=@p;
|
||
drop table t1;
|
||
sync_slave_with_master;
|