mysql-test/include/have_local_infile.inc:
BitKeeper file /data0/mkindahl/mysql-5.0-rpl-merge/mysql-test/include/have_local_infile.inc
mysql-test/r/have_local_infile.require:
BitKeeper file /data0/mkindahl/mysql-5.0-rpl-merge/mysql-test/r/have_local_infile.require
mysql-test/t/binlog_start_comment.test:
Test requires that local_infile is on, so added require for that.
mysql-test/t/rpl_sp.test:
Adding missing sync_slave_with_master causing following tests to fail.
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
BitKeeper/deleted/.del-rpl_transaction.test:
Auto merged
include/my_sys.h:
Auto merged
mysql-test/extra/binlog_tests/blackhole.test:
Auto merged
mysql-test/r/case.result:
Auto merged
mysql-test/r/mysqlbinlog2.result:
Auto merged
mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
Auto merged
mysql-test/t/case.test:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
BitKeeper/deleted/.del-show_binlog_events2.inc:
Auto merged
sql-common/client.c:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/slave.cc:
Auto merged
BitKeeper/deleted/.del-show_binlog_events2.inc:
Delete: mysql-test/include/show_binlog_events2.inc
client/mysqlbinlog.cc:
char -> uchar for raw memory.
sql/item_cmpfunc.cc:
Adding cast to remove warning when converting negative integer
to unsigned type.
sql/log_event.cc:
char -> uchar for raw memory.
sql/log_event.h:
char -> uchar for raw memory.
sql/rpl_utility.cc:
Adding cast to remove warning when converting negative integer
to unsigned type.
sql/slave.cc:
char -> uchar for raw memory.
sql/sql_repl.cc:
char -> uchar for raw memory.
sql-common/client.c:
char -> uchar for raw memory.
mysql-test/r/bdb_notembedded.result:
Result change.
mysql-test/r/rpl_loaddata_map.result:
Result change.
mysql-test/t/rpl_loaddata_map.test:
Blanking out file id as well.
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
BitKeeper/deleted/.del-binlog_start_comment.result:
Auto merged
include/my_sys.h:
Auto merged
mysql-test/extra/binlog_tests/blackhole.test:
Auto merged
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Auto merged
mysql-test/r/case.result:
Auto merged
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
Auto merged
mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
Auto merged
mysql-test/suite/rpl/r/rpl_000015.result:
Auto merged
mysql-test/suite/rpl/t/rpl_000015.test:
Auto merged
mysql-test/t/case.test:
Auto merged
sql/log_event.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
BitKeeper/deleted/.del-binlog_start_comment.test:
Using remote file.
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
Manual merge. Taking remote file to update result set after merge,
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
Manual merge.
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
Manual merge.
into dl145h.mysql.com:/data0/mkindahl/mysql-5.0-rpl-merge
include/my_sys.h:
Auto merged
mysql-test/r/blackhole.result:
Auto merged
mysql-test/r/case.result:
Auto merged
mysql-test/r/mysqlbinlog2.result:
Auto merged
mysql-test/t/blackhole.test:
Auto merged
mysql-test/t/case.test:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
mysql-test/include/show_binlog_events.inc:
Replacing file_id=N with file_id=# to avoid result mismatches
mysql-test/suite/binlog/r/binlog_killed_simulate.result:
Result change
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
Result change
mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
Result change
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
Result change
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
Binlog positions differ between mixed and statement based replication.
mysql-test/suite/rpl/r/rpl_stm_log.result:
Result change
Here is the scenario that causes the failure.(by Mats)
1. The to-be corrupt log event (let's call it X), is split into two
packets B and C on the network level (net_write_buff()). The parts
are X = (x',x''). The part x' ends up in packet B and part x''
ends up in packet C. Prior to the corrupt event X, the event Y has
been written successfully, but has been split into two packets as
well, which we call (y',y'').
2. The master sends packet A = (y'',x') to the slave, increases the
packet sequence number, the slave receives the packet, but fails
to reply before the master gets a timeout.
3. Since the master got a timeout, it reports failure, and aborts
sending the binary log by exiting mysql_binlog_send(). However, it
leaves the buffer intact, still holding y'' (but not x', since the
write_pos is not increased).
4. After exiting mysql_binlog_send(), the master does a
disconnection of the client thread, which involves sending an
error message e to the client (i.e., the slave).
5. In this case, net_write_buff() is used again, but this time the
old contents of the packet is used so that the new packet is
D = (y'',e). Note that this will use a new packet sequence number,
since the packet number was increased in step 2.
6. The slave receives the tail y'' of the Y log event, concatenates
this with x' (which it already received), and writes the event
(x',y'') it to the relay log since it hasn't noticed anything is
amiss.
7. It then tries to read more bytes, which is either e (if the length
given for X just happened to match the length given for Y, or just
plain garbage because the slave is out of sync with what is
actually sent.
8. After a while, the SQL thread tries to execute the event (x',y''),
which is very likely to be just nonsense.
The problem can be fixed by not resetting net->error after the call of
mysql_binlog_send, so the error message will not be sent and the connection
will be closed.
sql/sql_parse.cc:
Do not reset net->error, if net->error == 2, we should not try to use the connection again
The problem is when create/rename/drop users, the statement was logged regardless of error, even if no data has been changed, the statement was logged.
After this patch, create/rename/drop users don't write the binlog if the statement makes no changes, if the statement does make any changes, log the statement with possible error code.
This patch is based on the patch for BUG#29749, which is not pushed
sql/sql_acl.cc:
when create/rename/drop users, don't write the binlog if the statement make no changes
mysql-test/r/rpl_user.result:
New BitKeeper file ``mysql-test/r/rpl_user.result''
mysql-test/t/rpl_user.test:
New BitKeeper file ``mysql-test/t/rpl_user.test''
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Remove unnecessary show master status, and replace the rest with show binlog events for checking
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
update result
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
update result
mysql-test/extra/binlog_tests/blackhole.test:
mask out file_id
mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test:
remove unnecessary show master status
mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
mask out file_id
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
remove unnecessary show master status
into mail.hezx.com:/media/sda3/work/mysql/bkwork/versional/merge-51
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
mask error message in show slave status
mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
Mask out error messages
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
Mask out Error messages in reslut of show slave status
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
Mask out Error messages in reslut of show slave status
mysql-test/suite/rpl/t/rpl_temporary_errors.test:
mask out binlog position
into mail.hezx.com:/media/sda3/work/mysql/bkwork/versional/merge-51
mysql-test/suite/rpl/r/rpl_create_database.result:
Auto merged
mysql-test/suite/rpl/r/rpl_load_from_master.result:
Auto merged
mysql-test/suite/rpl/t/rpl_create_database.test:
Auto merged
mysql-test/suite/rpl/t/rpl_load_from_master.test:
Auto merged
mysql-test/suite/rpl/r/rpl_init_slave.result:
SCCS merged
mysql-test/suite/rpl/t/rpl_init_slave.test:
SCCS merged
Mask binlog positions, error, warning and other information that are not significant for the test
mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
Mask out binlog position and DBs in result of show master status
mysql-test/extra/rpl_tests/rpl_reset_slave.test:
Mask out log positions in tests to make them version independent
mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
Mask out Error messages in reslut of show slave status
mysql-test/suite/rpl/r/rpl_000015.result:
Mask out log positions in tests to make them version independent
---
Mask out binlog position and DBs in result of show master status
mysql-test/suite/rpl/r/rpl_change_master.result:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/r/rpl_create_database.result:
fix for versional test
mysql-test/suite/rpl/r/rpl_grant.result:
fix for versional test
mysql-test/suite/rpl/r/rpl_init_slave.result:
fix for versional test
mysql-test/suite/rpl/r/rpl_load_from_master.result:
update result
mysql-test/suite/rpl/r/rpl_log_pos.result:
Mask out binlog position and DBs in result of show master status
mysql-test/suite/rpl/r/rpl_rotate_logs.result:
Mask out binlog position and DBs in result of show master status
mysql-test/suite/rpl/r/rpl_row_max_relay_size.result:
Mask out binlog position and DBs in result of show master status
mysql-test/suite/rpl/r/rpl_row_reset_slave.result:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/r/rpl_skip_error.result:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result:
Mask out log positions in tests to make them version independent
---
Mask out binlog position and DBs in result of show master status
mysql-test/suite/rpl/r/rpl_stm_reset_slave.result:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/r/rpl_stm_until.result:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/r/rpl_temporary_errors.result:
Mask out binlog positions
mysql-test/suite/rpl/t/rpl_000015.test:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/t/rpl_change_master.test:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/t/rpl_colSize.test:
fix for versional test
mysql-test/suite/rpl/t/rpl_create_database.test:
fix for versional test
mysql-test/suite/rpl/t/rpl_grant.test:
fix for versional test
mysql-test/suite/rpl/t/rpl_init_slave.test:
fix for versional test
mysql-test/suite/rpl/t/rpl_load_from_master.test:
fix for versional test
mysql-test/suite/rpl/t/rpl_log_pos.test:
Mask out binlog position and DBs
mysql-test/suite/rpl/t/rpl_rotate_logs.test:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/t/rpl_skip_error.test:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl/t/rpl_stm_until.test:
Mask out log positions in tests to make them version independent
mysql-test/include/show_binary_logs.inc:
Mask out log positions in tests to make them version independent
mysql-test/include/show_master_logs.inc:
Mask out log positions in tests to make them version independent
mysql-test/include/show_master_status.inc:
Mask out log positions in tests to make them version independent
---
Mask out binlog position and DBs in result of show master status
mysql-test/include/show_slave_status2.inc:
Mask out log positions in tests to make them version independent
mysql-test/suite/rpl_ndb/r/rpl_ndb_transaction.result:
Result change
mysql-test/suite/rpl_ndb/t/rpl_ndb_transaction.test:
Removing duplicate DROP TABLE causing test to fail.
mysql-test/suite/rpl/r/rpl_init_slave.result:
Result change.
mysql-test/suite/rpl/t/rpl_init_slave.test:
Starting and stopping slave to make sure that the init_slave
variable is executed.
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
BitKeeper/deleted/.del-binlog_start_comment.result:
Auto merged
BitKeeper/deleted/.del-binlog_start_comment.test:
Auto merged
mysql-test/suite/rpl/r/rpl_timezone.result:
Auto merged
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
Manual merge.
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Auto merged
mysql-test/suite/binlog/r/binlog_row_binlog.result:
Auto merged
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
Auto merged
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
Auto merged
mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test:
Auto merged
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/slave.cc:
Auto merged
mysql-test/include/have_multi_ndb.inc:
Manual merge.
mysql-test/suite/rpl_ndb/r/rpl_ndb_transaction.result:
Manual merge.
mysql-test/suite/rpl_ndb/t/rpl_ndb_transaction.test:
Manual merge.
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Fixing test file to use different positions depending
on binlog format.
mysql-test/suite/binlog/r/binlog_row_binlog.result:
Result change.
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
Result change.
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
Result change.
mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test:
Removing part of test that does not work any more.
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
Removing part of test that does not work any more.
mysql-test/suite/rpl_ndb/r/rpl_ndb_transaction.result:
Result change.
mysql-test/suite/rpl_ndb/t/rpl_ndb_transaction.test:
Dropping tables on both master and slave, and not only on slave.
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Fixing test to use different positions depending on binlog format.
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
Result change.
mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result:
Result change.
mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam.test:
Removing part of test that does not work any more.
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam.test:
Removing part of test that does not work any more.
Problem: Replication fails when master is mysql-5.1-wl2325-5.0-drop6 and
slave is mysql-5.1-new-rpl. The reason is that, in
mysql-5.1-wl2325-5.0-drop6, the event type id's were different than in
mysql-5.1-new-rpl.
Fix (in mysql-5.1-new-rpl):
(1) detect that the server that generated the events uses the old
format, by checking the server version of the format_description_log_event
This patch recognizes mysql-5.1-wl2325-5.0-drop6p13-alpha,
mysql-5.1-wl2325-5.0-drop6, mysql-5.1-wl2325-5.0, mysql-5.1-wl2325-no-dd.
(2) if the generating server is old, map old event types to new event
types using a permutation array.
I've also added a test case which reads binlogs for four different
versions.
mysql-test/suite/binlog/std_data/binlog_old_version_5_1-telco.000001:
BitKeeper file /home/sven/bk/b27779-old_row_events/5.1-new-rpl/mysql-test/suite/binlog/std_data/binlog_old_version_5_1-telco.000001
mysql-test/suite/binlog/std_data/binlog_old_version_5_1-wl2325_row.000001:
BitKeeper file /home/sven/bk/b27779-old_row_events/5.1-new-rpl/mysql-test/suite/binlog/std_data/binlog_old_version_5_1-wl2325_row.000001
mysql-test/suite/binlog/std_data/binlog_old_version_5_1-wl2325_stm.000001:
BitKeeper file /home/sven/bk/b27779-old_row_events/5.1-new-rpl/mysql-test/suite/binlog/std_data/binlog_old_version_5_1-wl2325_stm.000001
mysql-test/suite/binlog/std_data/binlog_old_version_5_1_17.000001:
BitKeeper file /home/sven/bk/b27779-old_row_events/5.1-new-rpl/mysql-test/suite/binlog/std_data/binlog_old_version_5_1_17.000001
mysql-test/suite/binlog/std_data/binlog_old_version_5_1_23.000001:
BitKeeper file /home/sven/bk/b27779-old_row_events/5.1-new-rpl/mysql-test/suite/binlog/std_data/binlog_old_version_5_1_23.000001
sql/log_event.cc:
Added code to read events generated by
mysql-5.1-wl2325-5.0-drop6p13-alpha, mysql-5.1-wl2325-5.0-drop6,
mysql-5.1-wl2325-5.0, mysql-5.1-wl2325-no-dd.
More precisely, the event type id's had different numbers in
those versions. To fix, we add a permutation array which maps old_id to
new_id when the format_description_log_event indicates that the
originating server is of the old type. We also need to permute the
post_header_len array accordingly.
sql/log_event.h:
sql/log_event.h@1.169, 2008-01-09 11:34:37+01:00, sven@riska.(none) +5 -1
Added declaration needed in log_event.cc. Also, the destructor of
Format_description_log_event is sometimes called when post_header_len is
null, so we must pass the MY_ALLOW_ZERO_PTR flag to my_free.
mysql-test/suite/binlog/r/binlog_old_versions.result:
Result file for new test.
mysql-test/suite/binlog/t/binlog_old_versions.test:
New test case that loads binlogs from several old versions.
mysql-test/r/binlog_start_comment.result:
Result change.
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
Result change.
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
Result change.
mysql-test/suite/rpl/r/rpl_timezone.result:
Result change.
mysql-test/suite/rpl_ndb/r/rpl_ndb_transaction.result:
Result change.
mysql-test/suite/rpl_ndb/t/rpl_ndb_transaction.test:
Masking out columns with binlog positions from slave status.
mysql-test/t/binlog_start_comment.test:
Added missing drop table causing subsequent tests to fail.
sql/log_event.cc:
Changing last_err* fields to client_last_err*
sql/log_event_old.cc:
Changing last_err* fields to client_last_err*
mysql-test/r/blackhole.result:
Result change.
mysql-test/r/mysqlbinlog2.result:
Result change.
mysql-test/t/blackhole.test:
Fixing test to ignore file_id for exec_load_file events.
mysql-test/r/binlog_start_comment.result:
Drop tables used in the test case when done
mysql-test/r/blackhole.result:
Mask out file_id in show binlog events output
mysql-test/r/case.result:
Drop table t2 too if it exists at the start of the test
mysql-test/t/blackhole.test:
Mask out file_id in show binlog events output
mysql-test/t/case.test:
Drop table t2 too if it exists at the start of the test
mysql-test/suite/rpl/r/rpl_create_database.result:
updated result file
mysql-test/suite/rpl/r/rpl_load_from_master.result:
updated result file
mysql-test/suite/rpl/t/rpl_create_database.test:
added the mask 'mysql%' for SHOW DATABASES
mysql-test/suite/rpl/t/rpl_load_from_master.test:
added the mask 'mysql%' for SHOw DATABASES