Commit e4146a9f authored by unknown's avatar unknown
Browse files

BUG#22583 (RBR between MyISAM and non-MyISAM tables containing BIT field

does not work): Changing packed row format to only include null bits
for those columns that are present in the row as well as writing BIT
columns in a storage engine-independent format.

The change in row format is incompatible with the previous format and a
slave will not be able to read the new events.


mysql-test/extra/rpl_tests/rpl_deadlock.test:
  Position change since Format_description_log_event is longer.
mysql-test/extra/rpl_tests/rpl_log.test:
  Position change since Format_description_log_event is longer.
mysql-test/extra/rpl_tests/rpl_row_charset.test:
  Position change since Format_description_log_event is longer.
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_log_pos.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_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/t/rpl_loaddata_s.test:
  Position change since Format_description_log_event is longer.
mysql-test/t/rpl_log_pos.test:
  Position change since Format_description_log_event is longer.
mysql-test/t/rpl_row_basic_11bugs-master.opt:
  Adding --innodb option
mysql-test/t/rpl_row_basic_11bugs.test:
  Testing explicitly for RBR MyISAM -> InnoDB and vice versa.
  Position change since Format_description_log_event is longer.
mysql-test/t/rpl_row_create_table.test:
  Position change since Format_description_log_event is longer.
mysql-test/t/rpl_row_flsh_tbls.test:
  Position change since Format_description_log_event is longer.
mysql-test/t/rpl_row_mysqlbinlog.test:
  Position change since Format_description_log_event is longer.
mysql-test/t/rpl_switch_stm_row_mixed.test:
  Position change since Format_description_log_event is longer.
mysql-test/t/user_var-binlog.test:
  Position change since Format_description_log_event is longer.
sql/log_event.cc:
  Changing packed row format to only include null bits for those columns
  that are present in the row as well as writing BIT columns in a storage
  engine-independent format.
  
  Changing unpack_row() to accomodate for the changes.
sql/log_event.h:
  Renumbering old row events and adding new codes.
sql/sql_class.cc:
  Changing packed row format to only include null bits for those columns
  that are present in the row as well as writing BIT columns in a storage
  engine-independent format.
  
  Changing THD::pack_row() to accomodate for the changes and adding
  documentation.
mysql-test/t/rpl_row_basic_11bugs-slave.opt:
  New BitKeeper file ``mysql-test/t/rpl_row_basic_11bugs-slave.opt''
parent c34940a0
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ show slave status;
# 2) Test lock wait timeout

stop slave;
change master to master_log_pos=536; # the BEGIN log event
change master to master_log_pos=539; # the BEGIN log event
begin;
select * from t2 for update; # hold lock
start slave;
@@ -96,7 +96,7 @@ set global max_relay_log_size=0;

# This is really copy-paste of 2) of above
stop slave;
change master to master_log_pos=536;
change master to master_log_pos=539;
begin;
select * from t2 for update;
start slave;
+3 −3
Original line number Diff line number Diff line
@@ -42,13 +42,13 @@ select count(*) from t1;
show binlog events;
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
show binlog events from 102 limit 1;
show binlog events from 105 limit 1;
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
show binlog events from 102 limit 2;
show binlog events from 105 limit 2;
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
show binlog events from 102 limit 2,1;
show binlog events from 105 limit 2,1;
flush logs;

# We need an extra update before doing save_master_pos.
+1 −1
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@ drop database mysqltest2;
drop database mysqltest3;
--replace_column 2 # 5 #
--replace_regex /table_id: [0-9]+/table_id: #/
show binlog events from 102;
show binlog events from 105;
sync_slave_with_master;

# Check that we can change global.collation_server (since 5.0.3)
+2 −2
Original line number Diff line number Diff line
reset master;
show master status;
File	Position	Binlog_Do_DB	Binlog_Ignore_DB
master-bin.000001	102		
master-bin.000001	105		
reset slave;
show slave status;
Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
@@ -17,7 +17,7 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File
start slave;
show slave status;
Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
#	127.0.0.1	root	MASTER_PORT	7	master-bin.000001	102	#	#	master-bin.000001	Yes	Yes							0		0	102	#	None		0	No						#
#	127.0.0.1	root	MASTER_PORT	7	master-bin.000001	105	#	#	master-bin.000001	Yes	Yes							0		0	105	#	None		0	No						#
drop table if exists t1;
create table t1 (n int, PRIMARY KEY(n));
insert into t1 values (10),(45),(90);
+2 −2
Original line number Diff line number Diff line
@@ -13,11 +13,11 @@ insert into t1 values(2);
stop slave;
show slave status;
Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	#	#	#	master-bin.000001	No	No							0		0	187	#	None		0	No						#
#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	#	#	#	master-bin.000001	No	No							0		0	190	#	None		0	No						#
change master to master_user='root';
show slave status;
Slave_IO_State	Master_Host	Master_User	Master_Port	Connect_Retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_Do_DB	Replicate_Ignore_DB	Replicate_Do_Table	Replicate_Ignore_Table	Replicate_Wild_Do_Table	Replicate_Wild_Ignore_Table	Last_Errno	Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key	Seconds_Behind_Master
#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	#	#	#	master-bin.000001	No	No							0		0	187	#	None		0	No						#
#	127.0.0.1	root	MASTER_MYPORT	1	master-bin.000001	#	#	#	master-bin.000001	No	No							0		0	190	#	None		0	No						#
start slave;
select * from t1;
n
Loading